我无法如何不使每个字典多色。我尝试这样做,但事实证明只有一种颜色。我错过了什么?
import networkx as nx
import matplotlib.pyplot as plt
uber_dict={'y': {('VD3', 'VD5'): 0, ('VD3', 'VD8'): 0}, 'blue': {('R1', 'R3'): 1, ('R1', 'R2'): 1, ('R1', 'R4'): 1}, 'green': {('VD1', 'VD2'): 0, ('VD1', 'VD7'): 0, ('VD1', 'VD6'): 0}, 'red': {('DD2', 'DD3'): 4, ('DD2', 'VD4'): 1, ('DD2', 'DD1'): 5}}
g = nx.Graph()
for cvet, slovar in uber_dict.items():
for e, p in slovar.items():
g.add_edge(*e, weight=p)
pos = nx.circular_layout(g)
edge_labels = {(u, v): d['weight'] for u, v, d in g.edges(data=True)}
nx.draw_networkx_nodes(g, pos, node_size=600, node_color=cvet)
nx.draw_networkx_edges(g, pos)
nx.draw_networkx_labels(g, pos)
nx.draw_networkx_edge_labels(g, pos, edge_labels=edge_labels, font_color='r')
plt.title("Входная схема")
plt.axis('off')
# plt.show()
plt.savefig('output.png')
答案 0 :(得分:0)
此行中cvet
的值:
nx.draw_networkx_nodes(g, pos, node_size=600, node_color=cvet)
是最后一次通过for循环的东西。因此,您要告诉它绘制图形,其中所有节点都具有正好的颜色。
要解决此问题,您可以创建节点列表并将其作为nodelist
传递给绘图命令,还可以将颜色列表(而不是单个值cvet
)传递给节点nodelist[i]
应该有颜色colorlist[i]
。