我在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=-3
和order=0
运行这个函数,得到下面的图,显然它们有(a)不同的大小和(b)不同大小的主图轴。
**如何确保图像和轴的大小相同,而不考虑数据的小数位数?**我知道我的数据最多有3位小数。我尝试在colorbar上使用fraction
参数来“保留”空间,但是该值在执行bbox_inches='tight
时没有任何效果。我基本上需要在图的右侧保持一些填充。
1条答案
按热度按时间svgewumm1#
我发现了一个方法,使用
plt.tight_layout()
,但之后在右侧重新添加填充,即。字符串
但是它确实需要
right
的经验值,所以我对其他选项感兴趣。