#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)
, это должно обновить ваш график по мере его рисования, я полагаю.