我试图将librosa与matplotlib一起使用,并使用gridspec和librosa的所有代码示例,看起来它们都打算用于jupyter笔记本,并且我正在pyqt中编写。以下是看起来像我的代码的东西:
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.gridspec as gridspec
import librosa
self.fig = Figure(figsize=(self.width, self.height), dpi=dpi)
gs = gridspec.GridSpec(2, 2, height_ratios=[3, 1])
self.axes1 = self.fig.add_subplot(gs[1, :])
self.axes2 = self.fig.add_subplot(gs[0, :])
self.axes1.plot(range(array_length), self.array)
self.axes2.specgram(self.array, Fs=44100, scale='dB')
所有示例代码如下:
C = librosa.feature.chroma_cqt(y=y, sr=sr)
plt.subplot(4, 2, 5)
librosa.display.specshow(C, y_axis='chroma')
plt.colorbar()
plt.title('Chromagram')
我正在尝试将频谱图放入gridspec [0,:]。我想问题是我如何强迫librosa在self.axes2中进行绘图?
答案 0 :(得分:0)
如果self.axes2
是通过gridspec创建的轴,则可以将其提供给对specshow
的调用。
C = librosa.feature.chroma_cqt(y=y, sr=sr)
librosa.display.specshow(C, y_axis='chroma', ax=self.axes2)
self.fig.colorbar(self.axes2.images[0], ax=self.axes2)
self.axes2.set_title('Chromagram')