【发布时间】:2017-03-17 11:42:36
【问题描述】:
我使用 NetworkX 在 python 中进行网络分析。我确定每条边的权重并通过以下方式将该边添加到图中:
import matplotlib.pyplot as plt
import networkx as nx
import numpy as np
airports = ['ATL','LAX','ORD']
weights = [500,200,150] #Note that in my real code I I calculated these weights, they are not provided
G = nx.Graph()
G.add_nodes_from(airports)
weightlst = []
airports_pos = []
checked_airports = []
i = 0
for airport1 in airports:
for airport2 in airports:
if airport1 != airport2 and checked_airports.count([airport1,airport2])==0 and checked_airports.count([airport2,airport1])==0:
weightedge = weights[i]
weightlst.append(weightedge)
weightedge = weightedge*0.0020+0.5
G.add_edge(airport1, airport2, weight=weightedge)
checked_airports.append([airport1,airport2])
i = i + 1
对于上下文,每条边的权重表示两个机场之间发生了多少航班,我的问题是不清楚哪些“路线”是“最繁忙的”,因为不相关的边被绘制在相关的边上。我希望最后绘制权重最高的边,以便清楚哪些是网络中“最繁忙的航线”。
【问题讨论】:
-
为什么要更改添加边的顺序?您是否希望您的图能够每对节点有多个边?
-
我有一个由 30 个节点组成的网络,因此有 435 个边。为了能够以适当的方式可视化该网络,我希望将具有较高权重的边缘绘制在具有较小权重的边缘之上,以便可以清楚地看到它们(请注意,我还使用了颜色渐变,即是:权重越高,边缘颜色越深)。