我想请教如何在绘制图像子图时覆盖默认的matplotlib行为,因为子图的大小似乎与图形大小不匹配。我希望设置我的图形大小(例如与A4纸的宽度相匹配),并且子图可以自动拉伸以填充可用空间。在下面的示例中,下面的代码生成了一个在面板之间有很多空白空间的图形。
我希望子图在水平方向上拉伸,以填满图形空间。我将制作许多类似的图表,每个轴上的值数量不同,而图表之间的间距似乎取决于x值与y值的比例,所以我想知道是否有一种好的通用方法来设置子图的宽度以填充空间。是否可以以某种方式指定子图的物理尺寸?我已经搜索了几个小时的解决方案,所以提前感谢您能提供的任何帮助。
import numpy as np
import matplotlib.pyplot as plt
data=np.random.rand(10,4)
#creating a wide figure with 2 subplots in 1 row
fig,ax=plt.subplots(1,2, figsize=(9,3))
ax=ax.reshape(1,len(ax))
for i in [0,1]:
plt.sca(ax[0,i])
plt.imshow(data,interpolation='nearest')
plt.colorbar()
我希望子图在水平方向上拉伸,以填满图形空间。我将制作许多类似的图表,每个轴上的值数量不同,而图表之间的间距似乎取决于x值与y值的比例,所以我想知道是否有一种好的通用方法来设置子图的宽度以填充空间。是否可以以某种方式指定子图的物理尺寸?我已经搜索了几个小时的解决方案,所以提前感谢您能提供的任何帮助。
ax.imshow(...)
而不是plt.imshow(...)
)。 - Ajeanimshow
在这个意义上有点奇怪。 - DrVplt.gca().set_position([0, 0, 1, 1])
正是我需要的,使用 Cartopy 的.imshow()
来填充整个图形,以获得卫星图像的绘制。对于我的用例,plt.axis('tight')
显示了整个地球的投影,这不是我想要的。感谢非常有帮助的答案! - kevinmicke