2017-01-10 51 views
2

我想说明墨尔本到地图上的其他澳大利亚城市的航班密度。理想的情况下,我们会有箭头(将城市与其他城市连接在一起)显示每天从一个城市到另一个城市的航班数量。我们有这个工作的图书馆吗?用Python连接地图上的位置与数据说明

非常感谢您的投入。

亲切的问候, HH

+0

非现场资源请求在SO上是无关紧要的。但看看[Graphviz](http://www.graphviz.org)。有几个Python模块,例如[graphviz](http://graphviz.readthedocs.io/en/latest/manual.html),但是对于简单的事情来说,很容易直接生成DOT文件,而无需使用3rd-派对模块。 –

回答

0

如果你有数据节点和边的形式(基本上是图DB),那么你可以使用以下链接:

Drawing a graph with NetworkX on a Basemap

可以实现自己的目标1)示出的箭头/通过使用有向图和2)厚度通过使用权重的向内/向外指向的航班

0

感谢您输入的计数方向。我决定使用简单的箭头功能以及下面的一些饼图。为了产生这种地图,我采用: - 底图 - plt.arrow - plt.text - plt.plot - 由托马斯·勒科克开发定制的饼图帮手(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) 

enter image description here

感谢:下面我举饼图帮手。干杯。

HH