3

我有 8 个图要与 8 个不同但对应的图进行比较。所以我设置了8个子图,然后尝试用它axes_grid1.make_axes_locatable来划分子图。但是,似乎当我使用该new_vertical函数时,它会返回 type 的某些内容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;博士我怎样才能在 ax2, anAxesSubplot以及 ax1, an上获得颜色条Axes?还是有更好的方法来获得相同的外观?

4

0 回答 0