我有8个图,我想与8个不同但对应的图比较。所以我设置了8个子图,然后尝试使用axes_grid1.make_axes_locatable
来划分子图。但是,当我使用new_vertical
函数时,它会返回matplotlib.axes.AxesSubplot
类型的内容。
这是我的代码:
fig = plt.figure()
for i in range(7):
ax = fig.add_subplot(4,2,i+1)
idarray = ice_dict[i]
mdarray = model_dict[i]
side_by_side(ax, idarray, mdarray)
def side_by_side(ax1, idata, mdata):
from mpl_toolkits.axes_grid1 import make_axes_locatable
global mycmap
global ice_dict, titles
divider = make_axes_locatable(ax1)
ax2 = divider.new_vertical(size="100%", pad=0.05)
fig1 = ax1.get_figure()
fig1.add_axes(ax2)
cax1 = divider.append_axes("right", size = "5%", pad= 0.05)
plt.sca(ax1)
im1 = ax1.pcolor(idata, cmap = mycmap)
ax1.set_xlim(space.min(), space.max()+1)
ax1.set_ylim(0, len(idata))
plt.colorbar(im1, cax=cax1)
im2 = ax2.pcolor(mdata, cmap = mycmap)
ax2.set_xlim(space.min(), space.max()+1)
for tl in ax2.get_xticklabels():
tl.set_visible(False)
ax2.set_ylim(0, len(mdata))
ax2.invert_yaxis()
产生类似这样的东西,其中ax2位于顶部,ax1位于每个子图中的底部:
我应该提到它们的规模不同,所以我不能只使用相同的颜色条。提前谢谢。
tl; dr我怎样才能在ax2上获得一个颜色条,AxesSubplot
,以及ax1,Axes
?或者有更好的方法来获得相同的外观吗?