尝试使用NetworkX和graphviz_layout绘制包含许多节点的图表时遇到问题。更具体地说,传递给nx.graphviz_layout的参数根本没有帮助。附件是我使用的代码:
SELECT * FROM config_modi_ord WHERE Start_date < End_date
无论我如何改变&#34; args&#34;在nx.graphviz_layout中,输出图像将是相同的,并且所有节点彼此重叠。有人可以帮帮我吗?谢谢!
答案 0 :(得分:1)
对我来说,为了给b+1
使用args,您需要使用格式'-G'+'argsname = x'。我在示例中注意到,它们给docs的arg epsilon为prog
。所以我尝试了如下所示的模式。我只是在参数前面添加了G。现在,这些参数根据您使用的编程序而有很大不同,因此,您一定要对要完成的操作使用“点”。您可以查看所有可能的参数以及它们如何与每个G.draw(‘test.ps’,prog=’twopi’,args=’-Gepsilon=1’)
here一起使用。对于我的海豚,我需要将nodeep = 0.01。
prog
这里是带有代码和不带有args的代码的比较。首先没有参数。
G=some_graph()
import matplotlib.pyplot as plt
plt.figure(figsize=(32,32))
# use graphviz to find radial layout
pos=nx.graphviz_layout(G,prog="dot",
root=1000,
args='-Gsplines=true -Gnodesep=0.6 -Goverlap=scalexy'
)
nx.draw(G,pos,
with_labels=True,
alpha=0.5,
node_size=600,
font_size=10
)
plt.savefig("imagenet_layout.png")
带有参数
A = nx.nx_agraph.to_agraph(G) # convert to a graphviz graph
A.layout(prog='neato') # neato layout
#A.draw('test3.pdf')
A.draw('test3.png' )
因此,一旦我使参数工作,您就可以看到图像有所不同。
答案 1 :(得分:0)
我对pygraphviz的documentation的阅读表明overlap
不适用于dot
。
nodesep
:
在dot中,它指定相同等级中两个相邻节点之间的最小间距(以英寸为单位)。
目前尚不清楚您正在观察的重叠是在相同等级的节点之间还是在等级之间。如果它只是在排名之间,您可能想要修改ranksep
。
我确实看到你正在设置位置,然后你设置了nodesize,你使node_size
比默认值大得多(600 vs 300)。由于它在找到node_size
时不知道您要使用的pos
,因此使用足够大的node_size
会导致重叠。
因此,我建议将node_size
设置为默认值,如果仍有重叠,则将node_size
设置为较小。如果您在排名之间或排名之间的问题不成比例,那么请使用ranksep
和nodesep
。
答案 2 :(得分:-1)
plt.clf()"after"plt.savefig(****)
&#34;!