我正在尝试 生成树 结构的流程图。我已经能够使用 networkx 创建具有代表性的图形,但我需要一种在输出绘图时显示 树 结构的方法。我正在使用 matplotlib.pylab 绘制图表。
我需要以类似于 此处 显示的结构显示数据。虽然我没有子图。
我如何保证这样的结构?
非信徒的例子:
我已经能够使用 pylab 和 graphviz 显示图表,但都没有提供我正在寻找的树结构。我已经尝试了 networkx 必须提供的每个布局,但没有一个显示 层次结构。我只是不确定要给它什么 选项/模式, 或者 我是否需要使用权重。任何建议都会有所帮助。
@jterrace:
这是我用来制作上面的图的粗略轮廓。我添加了一些标签,但除此之外是一样的。
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_node("ROOT")
for i in xrange(5):
G.add_node("Child_%i" % i)
G.add_node("Grandchild_%i" % i)
G.add_node("Greatgrandchild_%i" % i)
G.add_edge("ROOT", "Child_%i" % i)
G.add_edge("Child_%i" % i, "Grandchild_%i" % i)
G.add_edge("Grandchild_%i" % i, "Greatgrandchild_%i" % i)
plt.title("draw_networkx")
nx.draw_networkx(G)
plt.show()
原文由 max 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您使用有向图,那么 Graphviz 点布局将对树执行您想要的操作。这是一些类似于上述解决方案的代码,展示了如何做到这一点
更新
这是针对 networkx-2.0 更新的版本(以及即将推出的 networkx-2.1 也绘制了箭头)。