Python NetworkX图形布局不工作?
我在尝试使用NetworkX和graphviz_布局绘制具有多个节点的图形时遇到了一个问题。更具体地说,传递到nx.graphviz_布局中的参数根本没有帮助。附件是我使用的代码:Python NetworkX图形布局不工作?,python,graphviz,networkx,pygraphviz,Python,Graphviz,Networkx,Pygraphviz,我在尝试使用NetworkX和graphviz_布局绘制具有多个节点的图形时遇到了一个问题。更具体地说,传递到nx.graphviz_布局中的参数根本没有帮助。附件是我使用的代码: 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",
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='-splines=true -nodesep=0.6 -overlap=scalexy'
)
nx.draw(G,pos,
with_labels=True,
alpha=0.5,
node_size=600,
font_size=10
)
plt.savefig("imagenet_layout.png")
无论我如何更改nx.graphviz_布局中的“args”,输出图像都是相同的,并且所有节点彼此重叠。有人能帮我吗?谢谢 我对for pygraphviz的阅读表明,重叠
不适用于点
对于nodesep
:
以点为单位,指定同一列中两个相邻节点之间的最小间距(以英寸为单位)
不清楚您观察到的重叠是在同一列中的节点之间还是在列之间。如果只是在列组之间,您可能需要修改ranksep
我确实看到您正在设置位置,然后设置了节点大小,并且使node\u size
比默认值(600 vs 300)大很多。由于它不知道在找到pos
时要使用的节点大小,因此使用足够大的节点大小将导致重叠
因此,我建议将node\u size
设置为默认值,如果重叠仍然存在,则将node\u size
设置为更小。如果您遇到职级间或职级内分离比例失调的问题,请使用ranksep
和nodesep
关于“重叠”,您的意思是在当前输出中有上次绘制的节点吗?如果是,请在“plt.savefig(****)
”之后添加“plt.clf()”李>
关于节点大小,默认值为300,但文档中未给出单位。我最近也在使用networkx,如果你知道的话,你能告诉我单位吗
对我来说,为了给prog
提供args,您需要使用格式'-G'+'argsname=x'。我注意到在这个例子中,他们给出了argε作为G.draw('test.ps',prog='twopi',args='-Gepsilon=1')
。因此,我尝试了如下所示的模式。我只是在参数前面加了G。现在,这些参数根据您使用的程序有很大的不同,所以您肯定希望使用“点”来完成您想要完成的任务。您可以看到所有可能的参数以及它们如何与每个prog
一起工作。对于我的海豚,我需要nodesep=0.01
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")
下面是有参数和没有参数以及代码的图形的比较。首先没有ARG
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' )
用args
A = nx.nx_agraph.to_agraph(G) # convert to a graphviz graph
A.layout(prog='dot') # neato layout
#A.draw('test3.pdf')
A.draw('test3.png',args='-Gnodesep=0.01 -Gfont_size=1', prog='dot' )
因此,在我让args工作后,您可以看到图像是不同的。G=some_graph()
不足以让我们重现您的问题。你能给出一个有这个问题的图表,或者至少告诉我们你的G
的属性吗?