2017-01-10 13 views
2

マップ上のメルボルンからオーストラリアの他の都市へのフライトの密度を説明したいと思います。理想的には、矢印(都市と他の都市を結ぶ)を持っていて、ある都市から他の都市への1日のフライト数をその太さで示します。私たちはこの仕事のためのライブラリを持っていますか?図のデータをPythonで地図に表示

あなたのご意見を事前にお寄せいただきありがとうございます。可能性は、以下のことのようですのpythonを使用して

敬具、 HH

+0

オフサイトのリソースへのリクエストは、オフトピックです。しかし、[Graphviz](http://www.graphviz.org)を見てください。 [graphviz](http://graphviz.readthedocs.io/en/latest/manual.html)のようないくつかのPythonモジュールがありますが、単純なもののためにはDOTファイルを直接生成するのは簡単ですが、パーティーモジュール。 –

答えて

0

をあなたがデータを持っている場合ノードとエッジの形式(基本的にグラフDB)の場合、次のリンクを使用できます。

Drawing a graph with NetworkX on a Basemap

あなたは内側/外側に向かう便のカウントとしてご入力の

0

感謝を重みを使用して有向グラフと2)の厚さを使用して、矢印/方向を示す)1のあなたの目標を達成することができます。私は以下のようないくつかの円グラフを持つ単純な矢印関数を使うことに決めました。このマップを生成するために、私が使用: を - ベースマップ - plt.arrow - plt.text - plt.plot - トーマス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

関連する問題