plt.savefig去除图片白边
时间: 2023-06-26 14:05:42 浏览: 326
可以通过设置plt.savefig()函数的bbox_inches参数来去除图片白边。具体方法如下:
```python
import matplotlib.pyplot as plt
# 绘制图形
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])
# 去除白边并保存图形
plt.savefig('output.png', bbox_inches='tight')
```
其中,'tight'参数表示将图形边界设置为最小值,从而去除白边。还可以使用其他的参数,例如pad_inches来控制边界空白大小。
相关问题
优化这段代码import numpy as np import wave import matplotlib.pyplot as plt import os COOKED_DIR = 'C:/Users/86137/Desktop/UrbanSound8K/audio/wyj' i = 0 for root, dirs, files in os.walk(COOKED_DIR): print("Root = ", root, "dirs = ", dirs, "files = ", files) for filename in files: print(filename) path_one = COOKED_DIR + filename print(path_one) f = wave.open(path_one, 'rb') params = f.getparams() # 一次性返回所有的音频参数,声道数、量化位数、采样频率、采样点数 nchannels, sampwidth, framerate, nframes = params[:4] # 声道/量化数/采样频率/采样点数 str_data = f.readframes(nframes) # 指定需要读取的长度(以取样点为单位),返回字符串类型数据 waveData = np.frombuffer(str_data, dtype=np.int16) # 将字符串转化为int waveData = waveData * 1.0 / (max(abs(waveData))) # wave幅值归一化 plt.specgram(waveData, NFFT=512, Fs=framerate, noverlap=500, scale_by_freq=True, sides='default') plt.ylabel('Frequency') plt.xlabel('Time(s)') plt.axis('off') name = str(i) # 做名字 i += 1 plt.savefig("filepath"+name+".jpg", bbox_inches='tight', pad_inches=0) # 后两项为去除白边 plt.show()
这段代码需要进行一些优化。 首先,代码中指定的COOKED_DIR变量应该定义在代码块的开头。 其次,在处理文件时,建议使用os.listdir()函数。 最后,为了避免文件不能正确关闭的情况,应该使用try-finally结构来打开和关闭文件。
优化后的代码如下:
import numpy as np
import wave
import matplotlib.pyplot as plt
import os
COOKED_DIR = 'C:/Users/86137/Desktop/UrbanSound8K/audio/wyj'
for filename in os.listdir(COOKED_DIR):
path_one = os.path.join(COOKED_DIR, filename)
print(path_one)
try:
with wave.open(path_one, 'rb') as f:
params = f.getparams()
# 在此处添加需要执行的其他操作
finally:
f.close()
plt.figure去除留白
引用:关于去除plt图像保存的白边,可以尝试使用plt.savefig()函数时指定参数bbox_inches='tight'来实现。这个参数会自动调整图像的边界框,以确保保存的图像没有多余的留白。你可以在保存图像的时候加上这个参数来尝试一下。
引用:另外一种方法是使用plt.subplots_adjust()函数来调整子图的边距,以减少图像的留白。你可以通过调整left、right、bottom和top参数来控制子图的位置和大小,以达到去除留白的效果。需要注意的是,这种方法只适用于有子图的情况。
引用:还有一种方法是使用plt.tight_layout()函数来自动调整子图的布局,以减少图像的留白。这个函数会自动调整子图之间的间距,使得整个图像的布局更加紧凑。你可以在绘制完图像后调用这个函数来去除留白。
阅读全文