将colorbar添加到matplotlib.axes.AxesSublot

时间:2012-11-01 21:06:11

标签: python matplotlib

我有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位于每个子图中的底部:

enter image description here

我应该提到它们的规模不同,所以我不能只使用相同的颜色条。提前谢谢。

tl; dr我怎样才能在ax2上获得一个颜色条,AxesSubplot,以及ax1,Axes?或者有更好的方法来获得相同的外观吗?

0 个答案:

没有答案