使用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布局的信息。