matplotlib gridspec中的librosa图

时间:2018-11-04 16:59:50

标签: python matplotlib librosa

我试图将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中进行绘图?

1 个答案:

答案 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')