6
Matplotlibのmake_axes_locatable
ツールを使用すると、新しい軸を既存の軸の側面にタックすることができます。ただし、親軸のサイズを変更します。これを避ける方法はありますか?以下は元の軸のサイズを変更せずにディバイダを作成しますか?
問題とどのようにそれを再現することを示す完全な例である:
import matplotlib.pyplot as pl
from mpl_toolkits.axes_grid import make_axes_locatable
import matplotlib.axes as maxes
fig = pl.figure()
ax1=pl.subplot(1,3,1)
ax1.imshow([[0,1],[2,0]])
ax1.yaxis.set_visible(False)
ax1.xaxis.set_visible(False)
ax2=pl.subplot(1,3,2)
ax2.imshow([[0,1],[2,0]])
ax2.yaxis.set_visible(False)
ax2.xaxis.set_visible(False)
ax3=pl.subplot(1,3,3)
ax3.imshow([[0,1],[2,0]])
ax3.yaxis.set_visible(False)
ax3.xaxis.set_visible(False)
pl.subplots_adjust(wspace=0)
divider = make_axes_locatable(ax1)
cax1 = divider.new_horizontal(size=0.2, pad=0.0, pack_start=True, axes_class=maxes.Axes)
pl.colorbar(ax1.images[0],cax=cax1)
cax1.yaxis.set_label_position('left')
cax1.yaxis.set_ticks_position('left')
fig.add_axes(cax1)
divider = make_axes_locatable(ax2)
cax2 = divider.new_vertical(size=0.2, pad=0.0, pack_start=True, axes_class=maxes.Axes)
fig.add_axes(cax2)
pl.colorbar(ax2.images[0],cax=cax2,orientation='horizontal')
# thin out the tick labels for visibility
for t in cax2.xaxis.get_majorticklabels()[::2]:
t.set_visible(False)
divider = make_axes_locatable(ax3)
cax3 = divider.new_horizontal(size=0.2, pad=0.0, pack_start=False, axes_class=maxes.Axes)
pl.colorbar(ax3.images[0],cax=cax3)
fig.add_axes(cax3)
問題は、サブプロットは、現在さまざまなサイズであるということです。私は左右が縮んだと思うが、中央は変わらない。
「美的」の違いは、私のためにデフォルトの設定項目です。私はデフォルトで '補間= 'nearest'が設定されています。 – keflavich
この一般的なアプローチはうまくいくようですが、ハードコードするのではなく、幅/高さ/垂直/水平の位置を自動的に生成する方法があれば、はるかに良いでしょう。 – keflavich