仅在matplotlib图形中裁剪上下白边

0 投票
1 回答
19 浏览
提问于 2025-04-14 18:18

有没有办法在保存matplotlib图像之前,只去掉上下的空白部分?也就是说,保存的图像宽度要和figsize设置的一样,但高度要尽量合适。

我现在用的代码是这样的,不过它保存的图像高度是10英寸(1000像素)。

import numpy as np
from matplotlib import pyplot as plt
plt.subplots(constrained_layout=True, figsize = (6, 10))
plt.imshow(np.zeros((1000, 1000)))
plt.savefig('short_plot.png', dpi=100)

把最后一行改成plt.savefig('short_plot.png', dpi=100, bbox_inches='tight')后,保存的图像变成了6.11英寸宽和6.04英寸高。但我需要我的图像宽度正好是6英寸。

1 个回答

0

我觉得这就是你想要的效果:

import numpy as np
from matplotlib import pyplot as plt

plt.figure(figsize=(6, 6), dpi=100)
plt.imshow(np.zeros((1000, 1000)))
plt.tight_layout()
plt.savefig('short_plot.png', dpi=100)

这样做会生成一个定义为600x600像素的图片(在100dpi的情况下,相当于6x6英寸)。在提供了显示的数据后,布局会变得更加紧凑(这正是你想通过bbox_inches='tight'来实现的效果)。

命令.savefig('short_plot.png', dpi=100)会保存一张正好是600x600像素的.png格式图片。

撰写回答