首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >networkx spring_layout的其他因素

networkx spring_layout的其他因素
EN

Stack Overflow用户
提问于 2014-07-10 21:06:21
回答 1查看 180关注 0票数 0

我想给networkx spring_layout增加额外的力量。

我有一个有向图,我希望节点根据它们所拥有的边移动到不同的边。具有更多传出边的节点应该漂移到具有更多传入边的节点应该向右漂移。另一种选择是。这些节点组会彼此漂移,具有传出边的节点会变得更近,而具有传入边的节点也会变得更近。

我设法查看了networkx http://networkx.lanl.gov/archive/networkx-0.37/networkx.drawing.layout-pysrc.html#spring_layout的spring_layout的源代码,但那里的一切都超出了我的理解

代码语言:javascript
复制
G.DiGraph()
G.add_edges_from([(1,5),(2,5),(3,5),(5,6),(5,7)])

布局应该显示边1、2、3彼此更接近,对于6和7也是如此。

我想,我可以通过使用MultiDiGraph添加不可见的边来解决这个问题。我可以计算每个节点的传入和传出边,并添加连接两组的不可见边。然而,我非常确定有更好的方法来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-07-15 19:32:52

将权重添加到混合中将是对对象进行分组的好方法(使用那些不可见的节点)。但是布局没有办法区分左和右。要获得所需的精确布局,可以指定每个点的x,y坐标。

代码语言:javascript
复制
import networkx as nx
G=nx.Graph()

G.add_node(1,pos=(1,1))
G.add_node(2,pos=(2,3))
G.add_node(3,pos=(3,4))
G.add_node(4,pos=(4,5))
G.add_node(5,pos=(5,6))
G.add_node(6,pos=(6,7))
G.add_node(7,pos=(7,9))

G.add_edges_from([(1,5),(2,5),(3,5),(5,6),(5,7)])

pos=nx.get_node_attributes(G,'pos')
nx.draw(G,pos)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24677359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档