使用matplotlib colorbar时确保图形大小不变

z8dt9xmd  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(156)

我在matplotlib中使用颜色条创建多个图,并将它们保存在紧凑的布局中。我注意到每个图像的图形大小和轴的大小不同,因为颜色条占用的空间更多/更少,这取决于数据的小数位数。例如,考虑以下脚本:

import numpy as np
import matplotlib.pyplot as plt

order = 0

x = np.tile(np.arange(10), 10).reshape((10,10))
y = np.repeat(np.arange(10),10).reshape((10,10))
z = np.sort(np.random.rand(100)*10**order).reshape((10,10))

fig, ax = plt.subplots(figsize=(8,6))
cs = ax.pcolor(x,y,z)

cbar = plt.colorbar(cs)
plt.tight_layout()

fig.savefig(f'order_{order}.jpg', bbox_inches='tight')
plt.show()

字符串
order=-3order=0运行这个函数,得到下面的图,显然它们有(a)不同的大小和(b)不同大小的主图轴。

**如何确保图像和轴的大小相同,而不考虑数据的小数位数?**我知道我的数据最多有3位小数。我尝试在colorbar上使用fraction参数来“保留”空间,但是该值在执行bbox_inches='tight时没有任何效果。我基本上需要在图的右侧保持一些填充。

svgewumm

svgewumm1#

我发现了一个方法,使用plt.tight_layout(),但之后在右侧重新添加填充,即。

plt.tight_layout()
plt.subplots_adjust(right = 0.9)

字符串
但是它确实需要right的经验值,所以我对其他选项感兴趣。

相关问题