我尝试使用Python绘制简单的层次树。我正在使用networkx模块。我声明了一个简单的图
G=networkx.DiGraph()
在G中添加节点和边之后,我尝试使用
^{pr2}$或者
nx.draw_networkx(G)
策划。输出图层次结构都是正确的,但节点的位置在图形上显示为随机的。更糟糕的是,每次运行脚本时,节点位置都不同。在
在一个类似的问题中提供了一个解决方案,这个问题需要graphviz包。在
pos=nx.graphviz_layout(G,prog='dot')
nx.draw(G,pos,with_labels=False,arrows=False)
不幸的是我不能安装graphviz。所以我在这里寻求另一种解决方案。 从graphviz的解决方案来看,它似乎只需要计算节点的位置。只要我为draw命令指定一个坐标列表,就可以在正确的位置绘制节点,这样说对吗?在
谢谢
更新(2015年4月15日)请看我的答案here,我认为这些代码可以满足您的需求。在
所以networkx在没有graphviz布局的情况下并不容易使用graphviz布局,因为如果您试图复制graphviz的布局,那么使用graphviz的算法会更好。在
但是,如果您愿意计算每个节点的位置,这是很简单的(正如您所猜测的)。创建一个dict,说明每个节点的位置。在
在xcoord和ycoord是你想要的坐标的地方。在
描述了各种绘图命令here
相关问题 更多 >
编程相关推荐