Python 对具有不同注释的子地块强制执行相同的大小

Python 对具有不同注释的子地块强制执行相同的大小,python,matplotlib,subplot,Python,Matplotlib,Subplot,我有一个数字,一行有3个子图。只有左侧子地块在y轴上有轴标签和记号标签,只有右侧子地块旁边有颜色栏。因此,包括注释的三个子图的宽度不相同。现在我想强制三个子图(比如说imshow)中实际绘图区域的大小相同。现在我所能做的就是使包括注释在内的三个子图的大小相同(这必然导致不同的绘图大小),或者在中使用a,b,c gridspec.gridspec(1,3,宽度比=[a,b,c]) 直到我得到满意的结果。有没有办法自动找到这样的a、b、c,或者以其他方式固定绘图大小 下面是一个最小的示例,其中第三个

我有一个数字,一行有3个子图。只有左侧子地块在y轴上有轴标签和记号标签,只有右侧子地块旁边有颜色栏。因此,包括注释的三个子图的宽度不相同。现在我想强制三个子图(比如说imshow)中实际绘图区域的大小相同。现在我所能做的就是使包括注释在内的三个子图的大小相同(这必然导致不同的绘图大小),或者在中使用
a
b
c

gridspec.gridspec(1,3,宽度比=[a,b,c])

直到我得到满意的结果。有没有办法自动找到这样的
a
b
c
,或者以其他方式固定绘图大小

下面是一个最小的示例,其中第三个图像明显小于前两个图像:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np

field = np.random.rand(800,800)

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(18,6))
fig.subplots_adjust(hspace=0.1,wspace=0.1)

gs = gridspec.GridSpec(1, 3)

ax = plt.subplot(gs[0])

plt.imshow(field)

plt.xlabel("$x$")
plt.ylabel("$y$")

ax = plt.subplot(gs[1])

plt.imshow(field)

plt.xlabel("$x$")
plt.ylabel("")

ax = plt.subplot(gs[2])

sc = ax.imshow(field, vmin=0.0, vmax=1.0)

plt.xlabel("$x$")
plt.ylabel("")

divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="2%", pad=0.05)

cbar = plt.colorbar(sc, orientation = 'vertical', cax=cax)
cbar.set_label("colors")
cbar.set_ticks([0.0,1.0])

plt.savefig('test.png', bbox_inches='tight')

你能提供一个完整的例子吗?我的期望是,你想要的应该是默认行为,你描述的很难做到。你能提供一个完整的最小示例吗?我的期望是,你想要的应该是默认的行为,你描述的很难做到。