gridspec
またはfig.add_subplots
で生成されたサブプロットで複数のカラーバーを揃えようとしています。詳細な位置調整が可能なので、matplotlib(v2.02)にfig.add_axes
のカラーバーを追加したいと思います。しかし、私は整列を行うために図形の位置を取得する必要があります。 ax.get_position()
機能は、正しい座標を返すように表示されません。ここでMatplotlibの軸の位置とカラーバーのアライメント
はMWEです:
import matplotlib.gridspec as gridspec
import scipy.misc
fig = plt.figure(1)
fig.set_tight_layout(True)
gs = gridspec.GridSpec(2,2)
ax = plt.subplot(gs[0,0])
lena = scipy.misc.face()
im = ax.imshow(lena)
axpos = ax.get_position() # bbox# get_position().get_points()
cbar_axis = fig.add_axes([axpos.x0, axpos.y0-0.1, axpos.width, 0.05])
colorbar = fig.colorbar(im, cax=cbar_axis, orientation="horizontal")
を、私は、コードの実行後axpos
を印刷する場合、およびax.get_position()
、2つは同じではありません。これは、コードが実行されている間にax.get_position()
が古い情報を使用していることを示しています。私はplt.show()
とplt.draw()
を追加しようとしましたが、これは修正されません。
どのように軸位置を取得できますか?
EDITは:
私はより良い私がやろうとしていますとmake_axes_locatable
が表示されない理由を(まだ)私のために動作するかを示すために(https://stackoverflow.com/a/44731797/238882)の下に掲載ソリューションを修正しました。 1つの列の下に2つのカラーバーが、もう1つの列の下に2つのカラーバーが必要です。 make_axes_locatable
でこれを行うと、次のコードが下の図になります。数字はすべて同じサイズのままで、グリッド内で整列させたいと思います。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import scipy.misc
from mpl_toolkits.axes_grid1 import make_axes_locatable
plt.close(1)
fig, axes = plt.subplots(2,2)
fig.set_tight_layout(True)
lena = scipy.misc.face()
for i, ax in enumerate(axes.flatten()):
im = ax.imshow(lena)
divider = make_axes_locatable(ax)
if i == 2:
ax_cb = divider.new_vertical(size="10%", pad=0.3, pack_start=True)
fig.add_axes(ax_cb)
fig.colorbar(im, cax=ax_cb, orientation="horizontal")
ax_cb2 = divider.new_vertical(size="10%", pad=0.3, pack_start=True)
fig.add_axes(ax_cb2)
fig.colorbar(im, cax=ax_cb2, orientation="horizontal")
if i == 3:
ax_cb = divider.new_vertical(size="10%", pad=0.3, pack_start=True)
fig.add_axes(ax_cb)
fig.colorbar(im, cax=ax_cb, orientation="horizontal")
plt.show()
最初に下の2番目のカラーバーを追加することはできますか?そして、4つのイメージ(このMWEに1つしか表示されません)をお互いに同じサイズに保ちますか? – mankoff
4枚の画像のそれぞれに2つのカラーバーがありますか?画像は同じサイズですか? – ImportanceOfBeingErnest
はい、4つの画像はすべて同じサイズです。左の列の下に2つのカラーバーがあり、右下に1つのカラーバーがあります。 – mankoff