сюжеты либроза в гридспеке матплотлиб - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь использовать 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')

Я пытаюсь перенести спектрограмму в сетку [0,:]. Я предполагаю, что вопрос заключается в том, как заставить принести librosa в self.axes2?

1 Ответ

0 голосов
/ 04 ноября 2018

Если 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')
...