在图像外部添加颜色条而不缩小图像

时间:2019-06-11 14:00:36

标签: python-3.x matplotlib colorbar imshow

我正在尝试绘制3x3子图,第一行使用imshow,第二和第三行是规则图形。所有3x3图都共享相同的x轴,因此将它们完美对齐非常重要(我没有使用sharey = true,因为我想要y刻度)。我可以使用以下命令将图例放在图的右边(图例是同一行中全部3个图的同一个图例)。

ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

但是我无法找到如何将第一行的颜色条放在它们上方的方法,而又不缩小第一行中的第三条图。我正在尝试使用“ make_axes_locatable”:

from mpl_toolkits.axes_grid1 import make_axes_locatable
divider = make_axes_locatable(powers_ax)
cax = divider.append_axes("right", size="5%", pad=1)
plt.colorbar(im, cax=cax)

或“插入轴”:

from mpl_toolkits.axes_grid1.inset_locator import inset_axes
axins = inset_axes(powers_ax, width="10%", height="100%", loc=5,
                   bbox_to_anchor=(0.5, 0, 1, 1), bbox_transform=powers_ax.transAxes)
plt.colorbar(im, cax=axins)

甚至这个技巧:

fig.colorbar(im2, ax=ax[0, :].ravel().tolist(), location='right', shrink=0.6)

但是我没有想过我想要的结果。 有什么想法吗?

*编辑*

按照@ImportanceOfBeingErnest的建议,解决方案是调整bbox_to_anchor中的第一个参数(在本例中为0.5到1.15):

from mpl_toolkits.axes_grid1.inset_locator import inset_axes
axins = inset_axes(powers_ax, width="5%", height="100%", loc=5,
                   bbox_to_anchor=(1.15, 0, 1, 1), bbox_transform=powers_ax.transAxes)
plt.colorbar(im2, cax=axins)

enter image description here

0 个答案:

没有答案