首页 > 解决方案 > 动态绘制节点改变颜色的图形

问题描述

我想绘制一些节点改变颜色的图表的演变。

%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个红色。

抱歉,描述冗长且可能令人困惑...

标签: pythonnetworkxdraw

解决方案


推荐阅读