我想在我的pyqt程序中显示librosa.display
图,但是无法将其添加到此颜色栏中。
代码:
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
class Spectrogram(FigureCanvas):
def __init__(self, stft, sr, parent, duration):
fig = Figure()
super().__init__(fig)
self.setParent(parent)
self.axes = fig.gca()
Xdb = librosa.amplitude_to_db(abs(stft))
librosa.display.specshow(Xdb, sr=sr, ax=self.axes, x_axis="time",
y_axis="log", cmap=matplotlib.cm.jet)
i = self.axes.imshow(Xdb)
fig.colorbar(i)
self.draw()
但是它不起作用。
当我以通常的方式编写它时,一切正常:
def show_spectrum(self, figure_width = 14, figure_height = 5, dpi = 200):
# Convert an amplitude spectrogram to dB-scaled spectrogram
Xdb = librosa.amplitude_to_db(abs(self.X))
print(Xdb.shape)
plt.figure(figsize=(figure_width, figure_height), dpi=dpi)
librosa.display.specshow(Xdb, sr=self._sample_rate, x_axis='time',
y_axis='log', cmap=matplotlib.cm.jet)
plt.grid(True)
plt.colorbar()
plt.show()