我正在尝试绘制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)