如何去除Pyplot保存频谱图时原坐标轴处的空白区域?
解决matplotlib保存频谱图时的空白区域问题
没问题!要彻底去除保存图像时坐标轴位置的空白,你只需要调整几个matplotlib的参数,同时修正代码里的小语法错误。我帮你修改并解释:
修改后的完整代码
import numpy as np import matplotlib.pyplot as plt # 假设你的times、hist_bins_khz、amplitudes_logged已提前定义 x, y = np.mgrid[:len(times), :len(hist_bins_khz)] fig, ax = plt.subplots() ax.pcolormesh(x, y, np.swapaxes(amplitudes_logged, 0, 1)) # 关闭坐标轴显示 plt.axis('off') # 让坐标轴铺满整个画布,从根源消除空白 ax.set_position([0, 0, 1, 1]) # 保存图像时彻底裁剪空白 plt.savefig("testfile.png", bbox_inches="tight", pad_inches=0)
关键参数说明
ax.set_position([0, 0, 1, 1]):这个设置让坐标轴完全填充整个画布,四个值分别代表左、下、宽度、高度(范围0-1),直接避免了坐标轴和画布边缘之间的空隙。bbox_inches="tight":告诉matplotlib自动裁剪掉图像周围的空白区域,但单独用它可能还会有极窄的残留空白。pad_inches=0:配合bbox_inches="tight"使用,把裁剪后的填充间距设为0,彻底清除所有残留空白。
另外注意你原代码里的小错误:plt.savefig的括号位置写错了,把),bbox_inches改成, bbox_inches就可以正常运行了。
内容的提问来源于stack exchange,提问作者Atle Kristiansen
相关产品推荐
相关产品推荐

