NetworkX中如何定位巨型组件的中心节点?
How to locate the center node of a giant component in NetworkX?
我正在使用具有二维网格形状的常规网络。它由 NxN=100x100=10000
个节点组成。它有一个坐标系,node 0
在左上角,(0,0)
位置,node 10000
在右下角,(100,100)
位置。
网络是这样创建的:
N=100 #The number of nodes per side
G=nx.grid_2d_graph(N,N)
pos = dict( (n, n) for n in G.nodes() ) #Dictionary of all positions
labels = dict( ((i, j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.set_node_attributes(G, 'pos', pos) #Store pos attributes in the nodes
nx.set_node_attributes(G, 'labels', labels) #Store labels attributes in the nodes
nx.draw_networkx(G, pos=nx.get_node_attributes(G, 'pos'),
labels=nx.get_node_attributes(G, 'labels'),
with_labels=False, node_size=10)
该网络由于对大量负载的响应而变得支离破碎。这些是许多 csv
个文件,这些文件的值用作节点的输入。失败后网络是这样的(这是单次加载文件的结果):
我的问题:如何确定巨型组件[=41]的中心节点的位置=],并确定它与左上角的距离,例如坐标为(0,0)
?
编辑
由于响应的可变性,很少有节点位于 (0,0)
位置,因此使用 nx.shortest_path()
将毫无意义,因为该节点大部分时间都会丢失。因此,我想测量网络的一个点(巨型组件的中心)与同一“区域”的另一个点之间的距离,该点可能不属于网络。所以,函数nx.shortest_path()
不能使用,否则当路径不存在时会抛出error
。
首先使用以下方法检索图形的巨大组成部分:(referenced here)
giant = max(nx.connected_component_subgraphs(G), key=len)
检索中心节点:
center_nodes = center(giant)
节点的位置就是中心节点本身,因为键就是位置。所以要显示中心节点的位置,例如:
print center_nodes
要确定从中心节点之一的节点到 (i,j) 坐标的距离,您必须保留一份包含所有 100x100 节点的原始图的副本。我将在这里使用它作为 org_G
# i,j can represent any coordinate in the 100x100 grid (0,0) for instance
n = (i,j)
print nx.shortest_path(org_G,n,center_nodes[0])
我正在使用具有二维网格形状的常规网络。它由 NxN=100x100=10000
个节点组成。它有一个坐标系,node 0
在左上角,(0,0)
位置,node 10000
在右下角,(100,100)
位置。
网络是这样创建的:
N=100 #The number of nodes per side
G=nx.grid_2d_graph(N,N)
pos = dict( (n, n) for n in G.nodes() ) #Dictionary of all positions
labels = dict( ((i, j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.set_node_attributes(G, 'pos', pos) #Store pos attributes in the nodes
nx.set_node_attributes(G, 'labels', labels) #Store labels attributes in the nodes
nx.draw_networkx(G, pos=nx.get_node_attributes(G, 'pos'),
labels=nx.get_node_attributes(G, 'labels'),
with_labels=False, node_size=10)
该网络由于对大量负载的响应而变得支离破碎。这些是许多 csv
个文件,这些文件的值用作节点的输入。失败后网络是这样的(这是单次加载文件的结果):
我的问题:如何确定巨型组件[=41]的中心节点的位置=],并确定它与左上角的距离,例如坐标为(0,0)
?
编辑
由于响应的可变性,很少有节点位于 (0,0)
位置,因此使用 nx.shortest_path()
将毫无意义,因为该节点大部分时间都会丢失。因此,我想测量网络的一个点(巨型组件的中心)与同一“区域”的另一个点之间的距离,该点可能不属于网络。所以,函数nx.shortest_path()
不能使用,否则当路径不存在时会抛出error
。
首先使用以下方法检索图形的巨大组成部分:(referenced here)
giant = max(nx.connected_component_subgraphs(G), key=len)
检索中心节点:
center_nodes = center(giant)
节点的位置就是中心节点本身,因为键就是位置。所以要显示中心节点的位置,例如:
print center_nodes
要确定从中心节点之一的节点到 (i,j) 坐标的距离,您必须保留一份包含所有 100x100 节点的原始图的副本。我将在这里使用它作为
org_G
# i,j can represent any coordinate in the 100x100 grid (0,0) for instance n = (i,j) print nx.shortest_path(org_G,n,center_nodes[0])