Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python中的坐标在固定位置绘制节点_Python_Coordinates_Networkx - Fatal编程技术网

使用python中的坐标在固定位置绘制节点

使用python中的坐标在固定位置绘制节点,python,coordinates,networkx,Python,Coordinates,Networkx,我正在尝试绘制具有“名称”、“纬度”和“经度”属性的节点。我试图用下面的代码绘制它,但每次它都返回不同的图形。如何确定节点的位置 G = nx.Graph() G.add_nodes_from(pos.keys()) for n, p in pos.items(): G.node[n]['pos'] = p pos=nx.spring_layout(G) pos=nx.get_node_attributes(G,'pos') pos=nx.spring_layout(G) nx.dr

我正在尝试绘制具有“名称”、“纬度”和“经度”属性的节点。我试图用下面的代码绘制它,但每次它都返回不同的图形。如何确定节点的位置

G = nx.Graph()

G.add_nodes_from(pos.keys())
for n, p in pos.items():
   G.node[n]['pos'] = p

pos=nx.spring_layout(G)
pos=nx.get_node_attributes(G,'pos')
pos=nx.spring_layout(G)

nx.draw(G, pos, with_labels=True, font_size=8, node_size=5)
plt.show()
下面是第3行中的pos示例

{'Baker Street': [51.522236, -0.15708], 'Bermondsey': [51.498129999999996, -0.0635], 'Blackhorse Road': [51.58698, -0.04104]}

首先将所有节点添加到G,然后使用G.nodes()作为键创建dict

self.pos = dict(zip(self.graph.nodes(), pos_list))

其中pos_list是包含坐标的元组列表。

首先将所有节点添加到G,然后使用G.nodes()作为键创建dict

self.pos = dict(zip(self.graph.nodes(), pos_list))

其中pos_list是包含坐标的元组列表。

您使用的是
spring
布局,它与您的目标位置不同。这就是为什么你会得到一个不同的布局。要将节点的位置固定到属性
position
,只需执行以下操作:

import networkx as nx

G = nx.Graph()

G.add_nodes_from(pos.keys())
for n, p in pos.items():
   G.node[n]['pos'] = p


nx.draw(G, pos=pos, with_labels=True, font_size=8, node_size=5)
plt.show()

您使用的是
spring
布局,它与您的目标位置不同。这就是为什么你会得到一个不同的布局。要将节点的位置固定到属性
position
,只需执行以下操作:

import networkx as nx

G = nx.Graph()

G.add_nodes_from(pos.keys())
for n, p in pos.items():
   G.node[n]['pos'] = p


nx.draw(G, pos=pos, with_labels=True, font_size=8, node_size=5)
plt.show()

谢谢你的评论。它返回相同的随机图。感谢评论。它返回相同的随机图。Spring布局将节点置于随机位置。因此,每次调用SpringLayout都会产生不同的结果。取出您使用的两次
pos=nx.spring\u布局(G)
,只需使用
pos=nx.get\u node\u属性(G,'pos')
。spring布局将节点放置在随机位置。因此,每次调用SpringLayout都会产生不同的结果。去掉您使用的两次
pos=nx.spring\u布局(G)
,只需使用
pos=nx.get\u节点属性(G,'pos')
。感谢您的评论!是的,我没有足够的关于spring布局的信息。谢谢你的评论!是的,我没有足够的关于spring布局的信息。