networkx中的多色grapf

时间:2017-12-22 07:14:58

标签: python-3.x networkx

我无法如何不使每个字典多色。我尝试这样做,但事实证明只有一种颜色。我错过了什么?

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')

1 个答案:

答案 0 :(得分:0)

此行中cvet的值:

nx.draw_networkx_nodes(g, pos, node_size=600, node_color=cvet)

是最后一次通过for循环的东西。因此,您要告诉它绘制图形,其中所有节点都具有正好的颜色。

要解决此问题,您可以创建节点列表并将其作为nodelist传递给绘图命令,还可以将颜色列表(而不是单个值cvet)传递给节点nodelist[i]应该有颜色colorlist[i]