我想给networkx spring_layout增加额外的力量。
我有一个有向图,我希望节点根据它们所拥有的边移动到不同的边。具有更多传出边的节点应该漂移到具有更多传入边的节点应该向右漂移。另一种选择是。这些节点组会彼此漂移,具有传出边的节点会变得更近,而具有传入边的节点也会变得更近。
我设法查看了networkx http://networkx.lanl.gov/archive/networkx-0.37/networkx.drawing.layout-pysrc.html#spring_layout的spring_layout的源代码,但那里的一切都超出了我的理解
G.DiGraph()
G.add_edges_from([(1,5),(2,5),(3,5),(5,6),(5,7)])布局应该显示边1、2、3彼此更接近,对于6和7也是如此。
我想,我可以通过使用MultiDiGraph添加不可见的边来解决这个问题。我可以计算每个节点的传入和传出边,并添加连接两组的不可见边。然而,我非常确定有更好的方法来解决这个问题。
发布于 2014-07-15 19:32:52
将权重添加到混合中将是对对象进行分组的好方法(使用那些不可见的节点)。但是布局没有办法区分左和右。要获得所需的精确布局,可以指定每个点的x,y坐标。
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)https://stackoverflow.com/questions/24677359
复制相似问题