根据方向为网络边缘着色 - NetworkX

Colouring edge of network based on their direction - NetworkX

在 R ggplot2 中,有一种简单的方法可以根据节点之间的方向为网络的边缘着色。所以如果一条线(边)从节点A指向B,我们可以使用代码:

geom_edge(aes(colour=stat(index))

然后我尝试在 python 中使用 NetworkX 重做此操作 - 但无济于事。这是一个示例网络:

F.add_nodes_from([0,1])
F.add_nodes_from([0,2])
F.add_nodes_from([2,1])
post = nx.circular_layout(F)
nx.draw_networkx_nodes(F, post, node_color = 'r', node_size = 100, alpha = 1)
nx.draw_networkx_edges(F, post, edgelist= [(1,0)], width = 1, alpha = 1)
nx.draw_networkx_edges(F, post, edgelist= [(0,2)], width = 1, alpha = 1)
nx.draw_networkx_edges(F, post, edgelist= [(2,1)], width = 1, alpha = 1)
plt.axis('off')
plt.show()

而且我目前还没有找到根据边缘方向改变颜色的方法。理想情况下,我想实现这样的目标:

Please see photo here

这在 networkx 中没有实现,但在 matplotlib 中是可能的,尽管涉及大量计算,具体取决于您想要做什么:

如果您想将边缘绘制为简单的线条,您可以预先计算节点布局,然后按照 this guide 使用 matplotlib 的 LineCollection.[=14 在节点位置之间绘制彩色线条=]

如果要绘制箭头,则必须 a) 计算相应 FancyArrowPatch 的路径,然后 b) 使用该路径剪裁适当定向的 color-gradient 网格。对于一个简单的三角形,这被证明 .