我在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可以使用相同的代码)

最佳答案

我随意在他的图形上添加了更多的节点,这样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()


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

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

关于python - 如何在nxviz Arcplot中设置边缘颜色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53366634/

10-16 21:38