2016-10-27 9 views
0

ここでは、私の質問を表すためにここに図を示します。MatPlotLib.Basemapの内容を含む2つのサブプロットのプロットボーダーフレームを設定する

fig = plt.figure(figsize = (10,4)) 
ax1 = plt.subplot(121) 
map =Basemap(llcrnrlon=x_map1,llcrnrlat=y_map1,urcrnrlon=x_map2,urcrnrlat=y_map2) 
map.readshapefile('shapefile','shapefile',zorder =2,linewidth = 0) 
for info, shape in zip(map.shapefile, map.shapefile): 
    x, y = zip(*shape) 
    map.plot(x, y, marker=None,color='k',linewidth = 0.5) 
plt.title("a") 
ax2 = plt.subplot(122) 
y_pos = [0.5,1,] 
performance = [484.0,1080.0] 
bars = plt.bar(y_pos, performance, align='center') 
plt.title("b") 

enter image description here

マッピング設定のためにサブプロット(B)と一致しません。したがって、サブプロット(a)とサブプロット(b)は別個のボードフレームを有する。私の意見では、調整されていない国境は読者にとって楽しいものではありません。

サブプロット(b)のボーダーサイズを調整してフィギュア全体として調和させる方法はありますか?サブプロットは、(a)はmatplotlib.basemapの要素が含まれている必要があり、こと

enter image description here

お知らせ:

は、これが私の目標です。他の1のために、それは自動化されている間

答えて

1

現在、左のあなたのサブプロットは、'equal'アスペクト比を有します。したがって、右側のサブプロットの縦横比を手動で設定する必要があります。

def get_aspect(ax): 
    xlim = ax.get_xlim() 
    ylim = ax.get_ylim() 
    aspect_ratio = abs((ylim[0]-ylim[1])/(xlim[0]-xlim[1])) 

    return aspect_ratio 

ax2.set_aspect(get_aspect(ax1)/get_aspect(ax2)) 
関連する問題