我非常非常陌生,需要帮助计算原点和图表中所有节点之间的欧氏距离。
具体来说,我无法弄清楚如何从我的数据中调用x和y坐标以在距离方程中使用它们。我正在使用node:(x,y)来添加具有位置的节点。
我的问题的一个简单示例如下。
import networkx as nx
import matplotlib.pyplot as plt
import math
g = nx.Graph()
pos={
1:(0,0),
2:(5,5),
3:(10,10)}
g.add_nodes_from(pos)
nx.draw(g,pos,with_labels=True)
plt.show()
这绘制了我想要的点数。 以下部分是我无法弄清楚如何拉出坐标以用于等式的地方。
distances={}
origin = g.node(1)
for node in g.nodes():
distance[node]=round(math.sqrt(((origin[x]-node[x])**2)+
((origin[y]-node[y])**2)),2)
我知道“origin [x] -node [x]”是完全错误的,我只是说我需要来自我的节点x(x,y)数据结构。
谢谢!我知道这可能是一个简单的问题,但我真的很感激任何帮助。
答案 0 :(得分:0)
x
只是元组中的第一个值,在您的情况下为x = pos[node][0]
。
然而,“解包”这些变量往往更具表现力和优雅:
x, y = pos[node]
我会像这样重写你的代码:
distances = dict() # should probably be an array, but hey, its your code
origin = 1
(x0, y0) = pos[origin]
for node, (x1, y1) in pos.items():
distances[(origin, node)] = math.sqrt((x0-x1)**2 + (y0-y1)**2)