使用Python连接地图上的位置并显示数据

时间:2017-01-10 07:19:23

标签: python dictionary

我想在地图上说明墨尔本到澳大利亚其他城市的航班密度。理想情况下,我们会有箭头(将城市连接到其他城市),它​​们的厚度显示了从一个城市到其他城市的一天中的航班数量。我们有这个工作的lib吗?

非常感谢您的投入。

亲切的问候, HH

3 个答案:

答案 0 :(得分:0)

使用python的Sankey图可能如下:

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 )

enter image description here

再次感谢。欢呼声。

HH