gpt4 book ai didi

python - networkx.draw() 的 pos 参数不起作用

转载 作者:行者123 更新时间:2023-11-30 23:32:57 24 4
gpt4 key购买 nike

我正在尝试生成图的子图的图像,其中节点应出现在两个图的相同位置。

基于documentation for networkx.draw the "pos" argument绘制函数接受一个指定节点位置的字典。我看到几个例子,人们使用类似于此模式的 pos 参数:

positions = networkx.spring_layout( GraphObject )
networkx.draw( GraphObject, positions )

但是,当我尝试这样做时,我发现位置显然被忽略了 - 或者至少当我绘制图形并记录其节点的位置,然后使用该字典作为 pos 参数来绘制相应节点的子图时没有绘制在相同的位置。

这是一个演示该问题的简单重现器。我认为这段代码应该做的是创建两个图形“g”和“h”的两个 .png 文件。节点“c”和“d”在“h”图中的位置应与它们在“g”中的位置相同 - 但事实并非如此。

#!/usr/bin/python

import matplotlib.pyplot as plt
import networkx as nx
import pylab

g = nx.Graph()
g.add_node( 'a' )
g.add_node( 'b' )
g.add_node( 'c' )
g.add_node( 'd' )
g.add_edge( 'a', 'b' )
g.add_edge( 'c', 'd' )

h = nx.Graph()
h.add_node( 'c' )
h.add_node( 'd' )

# Define the positions of a, b, c, d
positions = nx.spring_layout( g )

# Produce image of graph g with a, b, c, d and some edges.
nx.draw( g, positions )
plt.savefig( "g.png" )

# Clear the figure.
plt.clf()

# Produce image of graph h with two nodes c and d which should be in
# the same positions of those of graph g's nodes c and d.
nx.draw( h, positions )
plt.savefig( "h.png" )

任何人都可以建议我做错了什么,或者如何生成节点与完整图位于同一位置的子图图像?

最佳答案

问题不在于 networkx 行为不当,而是两个图中的 x 和 y 限制不同

# Define the positions of a, b, c, d
positions = nx.spring_layout( g )
plt.figure()
# Produce image of graph g with a, b, c, d and some edges.
nx.draw( g, positions )
#plt.savefig( "g.png" )
_xlim = plt.gca().get_xlim() # grab the xlims
_ylim = plt.gca().get_ylim() # grab the ylims
# Clear the figure.
# plt.clf()
plt.figure()
# Produce image of graph h with two nodes c and d which should be in
# the same positions of those of graph g's nodes c and d.
nx.draw( h, positions )

plt.gca().set_xlim(_xlim) # set the xlims
plt.gca().set_ylim(_ylim) # set the ylims
# plt.savefig( "h.png" )

enter image description here enter image description here

关于python - networkx.draw() 的 pos 参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19128898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com