【问题标题】:Fixed position hierarchical output from NetworkX without graphviz?没有graphviz的NetworkX的固定位置分层输出?
【发布时间】:2014-12-08 05:03:03
【问题描述】:

我正在尝试使用 Python 来绘制简单的分层树。我正在使用 networkx 模块。我声明了一个简单的图表

G=networkx.DiGraph() 

在G中添加节点和边后,我尝试使用

nx.draw(G) 

nx.draw_networkx(G) 

绘制。输出图层次结构都是正确的,但节点的位置在图上出现都是随机的。更糟糕的是,每次我运行脚本时,节点位置都不一样。

在需要 graphviz 包的类似问题中提供了一个解决方案。

pos=nx.graphviz_layout(G,prog='dot')
nx.draw(G,pos,with_labels=False,arrows=False)

很遗憾,我不允许安装 graphviz。所以我在这里寻求替代解决方案。 从 graphviz 解决方案看来,它似乎只需要计算节点的位置。是否正确地说,只要我为绘图命令指定坐标列表,我就可以在正确的位置绘制节点?

谢谢

【问题讨论】:

  • 请看我的回答here。我认为它可以满足您的真正需求。

标签: python graphviz networkx


【解决方案1】:

更新(2015 年 4 月 15 日)查看我的回答 here,了解我认为可以满足您需求的代码。


因此,如果您没有 graphviz,networkx 不会特别容易使用 graphviz 布局,因为如果您尝试重现 graphviz 的布局,最好使用 graphviz 的算法。

但是,如果您愿意努力计算每个节点的位置,这很简单(如您所料)。创建一个字典,说明每个节点的位置应该在哪里。

pos = {}
for node in G.nodes():
    pos[node] = (xcoord,ycoord)

nx.draw(G,pos)

将在 xcoord 和 ycoord 是您想要的坐标处执行此操作。

各种绘图命令描述here

【讨论】:

    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 2012-10-05
    • 2019-05-04
    相关资源
    最近更新 更多