如何在nxviz Arcplot中设置边缘颜色?

时间:2018-11-18 23:50:33

标签: python networkx

我在NetworkX中有一个DiGraph(),想为CircosPlot中的每个边缘设置边缘颜色。我正在使用以下语法(这只是一个示例):

import networkx as nx

G = nx.DiGraph()
G.add_edge(1,2,color='r',weight=2)
G.add_edge(2,3,color='b',weight=4)

pos = nx.circular_layout(G)

edges = G.edges()
colors = [G[u][v]['color'] for u,v in edges]
weights = [G[u][v]['weight'] for u,v in edges]

a = CircosPlot(G, figsize=(15,15), edge_color=colors)

a.draw()
plt.show()

这将导致以下错误: TypeError:不可散列的类型:“列表”

有什么想法如何使边缘颜色在CircosPlot上起作用? (请注意,使用nx.draw而不是CircosPlot可以使用相同的代码)

1 个答案:

答案 0 :(得分:1)

我自由地在图表中添加了更多的节点,因此CircosPlot中的节点要小一些(大的节点会更难以看到边缘)。

我还增加了边缘权重,因此颜色更易于查看。

G = nx.DiGraph()
G.add_node(1)
G.add_node(2)
G.add_node(3)
G.add_node(4)
G.add_node(5)
G.add_node(6)
G.add_edge(1,2,color='r',weight=6)
G.add_edge(2,3,color='b',weight=6)
G.add_edge(3,1,color='b',weight=6)

a = nxv.CircosPlot(G, node_labels='gender',
                   edge_color='color', edge_width='weight')
a.draw()

enter image description here

您必须为图形属性指定属性名称,而不是列表。该API与seaborn软件包相似。

相关问题