动态绘制带有节点更改颜色的图形

时间:2020-09-28 17:55:27

标签: python networkx draw

我想画一些节点会改变颜色的图的演变。

%matplotlib tk
import networkx as nx 
import matplotlib.pyplot as plt
import numpy as np
import time

G = nx.Graph() 
adj_list = {2: [2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14],    
3: [2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14],    
5: [2, 3, 4, 5, 6, 7, 8, 9]} 
for i, j in adj_list.items():
    for k in j:
        G.add_edge(i, k)
pos = nx.spring_layout(G)

val_map = {8: 'r', 9:'r'}
values = [val_map.get(node,'g') for node in G.nodes()]
nx.draw(G,pos=pos, with_labels=True, node_size = 1000, node_color=values, font_size=20) 
plt.draw()

这样,我所有节点都是绿色,但节点8和9都是红色。现在,我想将一些绿色节点的颜色更改为红色,然后在同一窗口上重新绘制图形。

def grafo(i):
    val_map [i]='r'
    values = [val_map.get(node,'g') for node in G.nodes()]
    nx.draw(G,pos=pos, with_labels=True, node_size = 1000, node_color=values, font_size=20)
    plt.draw()

for i in range(5):
    grafo(i+2)
    time.sleep(1)

我期望看到节点2为红色的图形,然后是1秒钟,节点3为红色的图形,依此类推。相反,发生的事情是5秒钟没有任何反应,然后出现了节点2、3、4的图形,5和6红色。

很抱歉,可能出现冗长而混乱的描述...

0 个答案:

没有答案