我是NetworkX
的新手,我需要找到两个节点之间的距离。我已经尝试过了,但是大多数搜索结果都涉及DFS
、Dijkstra
等方法,这不是我想要的。我只想知道两组坐标之间的欧几里得距离,其中后者表示图中的节点。
我是NetworkX
的新手,我需要找到两个节点之间的距离。我已经尝试过了,但是大多数搜索结果都涉及DFS
、Dijkstra
等方法,这不是我想要的。我只想知道两组坐标之间的欧几里得距离,其中后者表示图中的节点。
for 循环
中实现欧几里得距离公式。技术上下面的代码片段重点关注边缘
,但它们的长度恰好是您要寻找的:节点A和节点B(起始点和终点)之间的距离。
如果您需要运行进一步的分析,例如计算边缘长度分布,则可以将结果保存在字典
中。
import networkx as nx
import math
#Create a test graph
m=2 #Number of initial links
n=100 #Number of nodes
ncols=10 #Number of columns in a 10x10 grid of positions
G=nx.barabasi_albert_graph(n, m, j)
pos = {i : (i // ncols, (n-i-1) % ncols) for i in G.nodes()}
#Compute the node-to-node distances
lengths={}
for edge in G.edges():
startnode=edge[0]
endnode=edge[1]
lengths[edge]=round(math.sqrt(((pos[endnode][1]-pos[startnode][1])**2)+
((pos[endnode][0]-pos[startnode][0])**2)),2) #The distance
import pandas as pd
items=sorted(lengths.items())
values=lengths.values()
df = pd.DataFrame({'Lengths':values})
df['Lengths'].hist(df, bins=10) #Change to as many bins as you want/need
(p1,p2)
的((p1.x-p2.x)**2 + (p1.y-p2.y)**2 + (p1.z-p2.z)**2)**0.5
即可。 - Bonlenfum