2x2プロットの各サブプロットに個別のカラーバーを追加したいと思います。
fig , ( (ax1,ax2) , (ax3,ax4)) = plt.subplots(2, 2,sharex = True,sharey=True)
z1_plot = ax1.scatter(x,y,c = z1,vmin=0.0,vmax=0.4)
plt.colorbar(z1_plot,cax=ax1)
z2_plot = ax2.scatter(x,y,c = z2,vmin=0.0,vmax=40)
plt.colorbar(z1_plot,cax=ax2)
z3_plot = ax3.scatter(x,y,c = z3,vmin=0.0,vmax=894)
plt.colorbar(z1_plot,cax=ax3)
z4_plot = ax4.scatter(x,y,c = z4,vmin=0.0,vmax=234324)
plt.colorbar(z1_plot,cax=ax4)
plt.show()
これがあなたのやり方だと思いましたが、結果のプロットは本当に混乱しています。背景がすべて灰色で、私が持っているset_xlim、set_ylimコマンドを無視します(簡単にするためにここには示していません)。 +カラーバーは表示されません。これは正しい方法ですか?
また、「cax = ...」を削除しようとしましたが、カラーバーはすべて右下のプロットに表示され、個別のプロットには表示されません!
これをご覧ください matplotlibサンプルページ 。ここでは、各サブプロットに4つの個別のカラーバーを持つ次のプロットを取得する方法が示されています。
これがお役に立てば幸いです。
さらに詳しく見ることができます こちら で、matplotlib
でできることの多くを見つけることができます。
これはユーティリティmake_axes_locatable
で簡単に解決できます。これがどのように機能し、容易に適応できるかを示す最小限の例を提供します。
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
m1 = np.random.Rand(3, 3)
m2 = np.arange(0, 3*3, 1).reshape((3, 3))
fig = plt.figure(figsize=(16, 12))
ax1 = fig.add_subplot(121)
im1 = ax1.imshow(m1, interpolation='None')
divider = make_axes_locatable(ax1)
cax = divider.append_axes('right', size='5%', pad=0.05)
fig.colorbar(im1, cax=cax, orientation='vertical')
ax2 = fig.add_subplot(122)
im2 = ax2.imshow(m2, interpolation='None')
divider = make_axes_locatable(ax2)
cax = divider.append_axes('right', size='5%', pad=0.05)
fig.colorbar(im2, cax=cax, orientation='vertical');
plt.colorbar(z1_plot,cax=ax1)
では、_ax=
_の代わりに_cax=
_を使用します。つまり、plt.colorbar(z1_plot,ax=ax1)
ax
引数を matplotlib.pyplot.colorbar()
に指定します。
import numpy as np
import matplotlib.pyplot as plt
fig,ax = plt.subplots(2,2)
for i in range(2) :
for j in range(2) :
data = np.array([[i,j],[i+0.5,j+0.5]])
im = ax[i,j].imshow(data)
plt.colorbar(im,ax=ax[i,j])
plt.show()