首页 > 解决方案 > 如何在 nxviz Arcplot 中设置边缘颜色?

问题描述

我在 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: unhashable type: 'list'

任何想法如何让边缘颜色在 CircosPlot 上工作?(请注意,使用 nx.draw 而不是 CircosPlot 的相同代码有效)

标签: pythonnetworkx

解决方案


我冒昧地在他的图中添加了更多节点,因此图中的节点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()

在此处输入图像描述

您必须为图形属性而不是列表指定属性名称。API 类似于 seaborn 包。


推荐阅读