微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

图论/NetworkX:基于每个节点的连接样式和垂直交叉点

如何解决图论/NetworkX:基于每个节点的连接样式和垂直交叉点

我正在尝试在 networkX 中复制此图: Original Graph

使用此代码

    G = nx.DiGraph()


# edges are written as tuples of nodes,eg A B draws an edge from node A to node B
edges = [('A','B'),('B','C'),('C','D'),('D','E'),('E','F'),('F','A'),('A','E')]

# weighted edges (numbers on the arrows)
weighted_edges = [('F','A',1),'F',2),'B',3),4),'E',5),'C',6),7),8),'D',9)]

G.add_weighted_edges_from(weighted_edges)
labels = nx.get_edge_attributes(G,'weight')

pos = nx.planar_layout(G)

nx.draw_networkx_nodes(G,pos,node_size=500)
nx.draw_networkx_edges(G,edgelist=G.edges(),edge_color='black',connectionstyle='arc3,rad = 0.1')
nx.draw_networkx_edge_labels(G,edge_labels=labels)
nx.draw_networkx_labels(G,pos)

plt.show()

代码给出了这个结果: Result

我遇到的第一个问题是弯曲的边缘。我可以使用连接样式将它们更改为直边,但我只希望具有两个平行连接边(A 和 F)的节点为曲线边,其余为直边。 networkX 有这个功能吗?

第二个问题是总体布局。我知道图形在数学上是相同的,但是除了平面之外还有没有其他布局可以:

  • 防止边缘交叉
  • 尽量保持边缘水平和垂直,以提供原始图形的“方形”形状

我已经查看了 networkX 文档,但到目前为止还没有找到任何直接解决我的问题的方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。