libsora与matplotlib之间数据交换的问题

cigdeys3  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(148)

为了保存波谱图像,典型的代码如下:

###########################

import matplotlib.pyplot as plt
import librosa.display

y, sr = librosa.load(filename) 

fig = plt.Figure()
canvas = FigureCanvas(fig)
...
librosa.display.specshow(logmelspec, sr=sample_rate, x_axis='time', y_axis='log')
fig.savefig('spec.png')

问题是,'fig'是在Figure类中创建的,也是FigureCanvas的一个参数,librosa.display.specshow是一个属于librosa.display类的函数。

  1. fig如何知道fig.savefig的输入数据?
  2. fig和librosa之间的数据交换是如何工作的?
    1.当我运行这段代码时,它确实按预期保存了正确的图像(但是,如果我构建一个基于FileDialog的应用程序,加载一个新的wav文件并再次调用“fig.savefig”,图像将变得随机)。
8hhllhi2

8hhllhi21#

看来下面的方法可以解决这个问题,

plt.savefig("spec.png")
plt.clf()
plt.close()

相关问题