我想在地图上说明墨尔本到澳大利亚其他城市的航班密度。理想情况下,我们会有箭头(将城市连接到其他城市),它们的厚度显示了从一个城市到其他城市的一天中的航班数量。我们有这个工作的lib吗?
非常感谢您的投入。
亲切的问候, HH
答案 0 :(得分:0)
http://matplotlib.org/api/sankey_api.html
希望这会有所帮助:)
答案 1 :(得分:0)
如果您有节点和边缘形式的数据(基本上是图形数据库),那么您可以使用以下链接:
Drawing a graph with NetworkX on a Basemap
您可以实现以下目标:1)使用有向图显示箭头/方向; 2)使用权重作为向内/向外定向飞行计数的厚度
答案 2 :(得分:0)
非常感谢您的投入。我已经决定使用简单的箭头功能和一些饼图,如下所示。为了制作这张地图,我采用了: - 底图 - plt.arrow - plt.text - plt.plot - 以及由Thomas Lecocq(http://www.geophysique.be/2010/11/26/matplotlib-basemap-tutorial-06-real-case-pie-charts/)
开发的定制饼图助手棘手的部分是指定整齐布局的箭头的起点和终点。愿意根据要求提供更多细节。下面我引用饼图助手:
def draw_pie(ax,ratios, X, Y, size):
N = len(ratios)
xy = []
start = 0.
colors=['#08298A','none']
for ratio in ratios:
x = [0] + np.cos(np.linspace(2*math.pi*start,2*math.pi*(start+ratio), 30)).tolist()
y = [0] + np.sin(np.linspace(2*math.pi*start,2*math.pi*(start+ratio), 30)).tolist()
xy1 = zip(x,y)
xy.append(xy1)
start += ratio
plt.rcParams['patch.linewidth'] = .7
plt.rcParams['patch.edgecolor']='#D0C4C1'
for i, xyi in enumerate(xy):
ax.scatter([X],[Y] , marker=(xyi,0), s=size, facecolor=colors[i],zorder=5,alpha=.6, lw=.7 )
再次感谢。欢呼声。
HH