【发布时间】:2021-06-09 02:37:31
【问题描述】:
我正在尝试使用自定义宽度和高度绘制频谱图,但是当我运行以下代码时,它会引发以下错误,但是当我删除自定义宽度和高度时它工作正常,但它会在 515x389 中创建频谱图
代码:
filename = path
x, sr = librosa.load(filename, mono=True)
widthHeight = (432, 288)
plt.figure(figsize=widthHeight)
plt.specgram(x, NFFT=2048, Fs=2, Fc=0, noverlap=128, cmap='inferno', sides='default', mode='default', scale='dB')
plt.axis('off')
plt.savefig("spec.png", bbox_inches='tight', transparent=True)
plt.clf()
错误
_tkinter.TclError: not enough free memory for image buffer
【问题讨论】:
-
宽度和高度是以英寸为单位的图形大小。你正在制作一个 10 米 x 8 米的人形,让你的记忆超载。
-
@JodyKlymak 如果我想将其转换为 432 像素 bv 288,那么转换率是多少?
-
默认每英寸 72 像素
-
@JodyKlymak 感谢您进行数学计算。挺好玩的
-
英寸到像素由 dpi(每英寸点数)设置。默认值通常为 100。但您可以在
plt.savefig(..., dpi=200)中指定。如果您想指定具有一定数量像素的图形,您只需要知道您将使用的 dpi。也可以使用默认值,所以widthHeight=(4.32, 2.88)应该会得到一个 432x288 像素的图形。但是请注意,坐标轴不是 432x288 像素,整个图都是。
标签: python matplotlib librosa spectrogram