如何使用librosa.display在pyqt应用程序中显示matplotlib.colorbar?

时间:2019-05-05 15:38:46

标签: python qt matplotlib pyqt librosa

我想在我的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()

0 个答案:

没有答案