问题描述
我在尝试增加正在制作的分层图中的节点之间的间距时遇到了麻烦。我希望在此图上贴上标签,因此节点之间的间距必须相当大,但是我不确定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()
解决方法
绘制图形的空间受图形大小的限制。尝试玩弄大小,例如:
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
参数应该可以工作。