如何使用pygraphviz增加点图中节点之间的间距?

问题描述

我在尝试增加正在制作的分层图中的节点之间的间距时遇到了麻烦。我希望在此图上贴上标签,因此节点之间的间距必须相当大,但是我不确定pygraphvis_layout的“ args”参数如何工作,或者我是否使用得当。

似乎同一等级的节点之间的间距至少应为2英寸,但这并不反映在实际图像中。据我测试,改变提供给nodesep的数量对间距没有影响。

我已经查看了其他解决方案:pydot无效,似乎输出了我无法打开的png文件,并且我已经在使用NetworkX绘制其他相关图形。

(除了指定的导入外,复制还需要graphviz。)

import networkx as nx
import matplotlib.pyplot as plt
from networkx.drawing.nx_agraph import pygraphviz_layout

plt.figure(figsize=(10,7))
graph = nx.DiGraph([(0,1),(0,2),(1,3),4),(2,5),6),(3,7),8),(4,9),10),(5,11),12),(6,13),14)])
pos = pygraphviz_layout(graph,prog="dot",args='-Gnodesep=2')
nx.draw_networkx_nodes(
    graph,pos,nodelist=graph.nodes,node_size=1000,node_color="r",alpha=0.8
)
nx.draw_networkx_edges(graph,edgelist=graph.edges,width=1,edge_color="k")
plt.axis("off")
plt.savefig("test.svg")
plt.show()

Resulting image from snippet

解决方法

绘制图形的空间受图形大小的限制。尝试玩弄大小,例如:

pos = pygraphviz_layout(graph,prog="dot",args='-Gnodesep=2')
nx.draw_networkx_nodes(...)
nx.draw_networkx_edges(...)
plt.figure(figsize=(20,20))
plt.show()

一旦大小足够大,Gnodesep 参数应该可以工作。