我在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()
您必须为图形属性指定属性名称,而不是列表。该API与seaborn软件包相似。
关于python - 如何在nxviz Arcplot中设置边缘颜色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53366634/