我在 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.:所需的输出大致如下:
我不需要绘制划分级别的线,我只是用它们来明确我需要什么。
最佳答案
布局“点”提供了 graphviz 的接口(interface)似乎做你正在寻找的事情。虽然它适用于您提供的这个简单图表,但您可能需要调整输出以获得更大更复杂的图表。
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()
关于python - 在 NetworkX 中绘制将绘图区域划分为 3 的图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22609101/