在NetworkX中绘制图表,将绘图区域划分为3

时间:2014-03-24 12:14:21

标签: python graph draw networkx

我在Networkx中有一个图表,里面有不同的信息。图形节点如下所示:

G = nx.DiGraph()
G.add_node(shape1, level=1)
G.add_node(shape2, level=2)
G.add_node(shape3, level=2)
G.add_node(shape4, level=3)
...

我想绘制图形,以便在图形顶部的第1级具有所有形状,第3级中的所有形状位于图形的下部,所有形状位于第2层中间。最多有3个级别。

我一直在阅读来自NetworkX的文档,但到目前为止我只使用了节点的随机定位:

pos = nx.spring_layout(G) nx.draw(G, pos)

您是否知道如何更智能地定位图表的节点?

P.S。:所需的输出大致如下: enter image description here

我不需要画出划分等级的线条,我只是把它们弄清楚我需要什么。

1 个答案:

答案 0 :(得分:5)

布局" dot"如果graphviz的界面似乎可以满足您的需求。虽然它适用于您提供的这个简单图表,但您可能需要调整输出以获得更复杂的图形。

import networkx as nx

G = nx.DiGraph()
G.add_node(1,level=1)
G.add_node(2,level=2)
G.add_node(3,level=2)
G.add_node(4,level=3)

G.add_edge(1,2)
G.add_edge(1,3)
G.add_edge(2,4)

import pylab as plt
nx.draw_graphviz(G, node_size=1600, cmap=plt.cm.Blues,
                 node_color=range(len(G)),
                 prog='dot')
plt.show()

enter image description here