Динамическое рисование графика с изменением цвета узла

#python #networkx #draw

#python #networkx #рисовать

Вопрос:

Я хочу нарисовать эволюцию графика, где некоторые узлы меняют цвет.

 %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 красного цвета.

Извините за длинное и, возможно, запутанное описание…

Комментарии:

1. Я думаю, вам следует заменить time.sleep(1) на plt.pause(1) , это должно обновить ваш график по мере его рисования, я полагаю.