遇到这种问题应该如何解决,代码来自xiao黄,但是复制后放到我的编译器中,同时我的import numpy as np,已经安装numpy,但还是灰色状态显示

img


想问一下,遇到这种问题应该如何解决
代码来自xiao黄,但是复制后放到我的编译器中,却运行不了,同时我的import numpy as np,已经安装numpy,但还是灰色状态显示


import random

import matplotlib.pyplot as plt
import networkx as nx
import numpy as np

max_iter_num = 5 # 模拟的次数
G = nx.karate_club_graph() # 空手道俱乐部

for edge in G.edges:
    G.add_edge(edge[0], edge[1], weight=random.uniform(0,1)) # 可不可以作为权值 病毒的感染能力
for node in G:
    G.add_node(node, state = 0) # 用state标识状态 state=0 未激活,state=1 激活

seed = 33 # 选定33作为传染源
G.node[seed]['state'] = 1 # 表示33是感染的

all_infect_nodes = [] # 所有被感染的节点放在这里
all_infect_nodes.append(seed)

infected_graph = nx.Graph() # 被激活的图
infected_graph.add_node(seed)

for i in range(max_iter_num):
    new_infect = list() # 新被感染的
    t1 = '%s time' % i + ' %s nodes' % len(all_infect_nodes)
    print(t1) # 当前有多少个节点被感染
    
    # 画图
    plt.title(t1)
    nx.draw(infected_graph, with_labels=True)
    plt.show()

    # 感染的机会不止一次
    for v in all_infect_nodes:
        for nbr in G.neighbors(v):
            if G.node[nbr]['state'] == 0: # 如果这个邻居节点没被感染
                edge_data = G.get_edge_data(v, nbr)
                if random.uniform(0, 1) < edge_data['weight']:
                    G.node[nbr]['state'] = 1
                    new_infect.append(nbr)
                    infected_graph.add_edge(v, nbr) # 画图 添加边
    
    all_infect_nodes.extend(new_infect) # 将新感染的添加到
    print('all_active_nodes:', all_infect_nodes)

同时还想请教如何出现节点图,谢谢Thanks♪(・ω・)ノ

这个代码的问题可能是缺少必要的依赖库,建议先检查是否安装了必要的库,如networkx、matplotlib和numpy等。如果没有安装,请在终端中使用pip install命令安装。

另外,在运行代码时需要注意,代码中存在一些中文字符,可能会导致编码问题。如果出现编码问题,可以将代码中的中文字符转换为英文字符,或者在文件开头添加# coding=utf-8,以指定编码格式。

关于如何出现节点图,你可以在代码中添加以下代码来显示节点图:

pos = nx.spring_layout(infected_graph)
nx.draw_networkx_nodes(infected_graph, pos, node_color='r', node_size=100)
nx.draw_networkx_edges(infected_graph, pos)
nx.draw_networkx_labels(infected_graph, pos, font_size=10, font_family='Arial')
plt.axis('off')
plt.show()

这段代码使用了networkx库中的spring_layout函数来生成节点的布局,然后使用draw_networkx_nodes、draw_networkx_edges和draw_networkx_labels函数来绘制节点、边和标签,最后使用plt.show()函数显示节点图。请注意,这段代码应该在for循环中的plt.show()函数之后添加。

networkx 没安装