Я пытаюсь создать волновую форму песни.И отобразить его в окне matplotlib, обернутом PyQt, но я продолжаю сталкиваться с ошибкой:
RuntimeError: Can not put single artist in more than one figure
Это происходит, когда я пытаюсь сделать:
self.axes.add_collection(col)
В отличие от того, когда я импортируюpyplot, он не добавляется к сюжету сам по себе при вызове waveform
.Вот в чем проблема, и использование add_collection, единственного способа, которым я мог бы использовать Google, не работает для меня.
Дополнительная информация, col
- это PolyCollection
.
Это полный код кода:
import sys
from PyQt5.QtWidgets import *
import librosa.display
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import os
import random
class WaveForm(FigureCanvas):
def __init__(self, parent=None):
dir_path = 'D:\\Musikk\\DLs\\'
dir_content = os.listdir(dir_path)
file = os.path.join(dir_path, random.choice(dir_content))
# Replace file with any song you may have.
y, sr = librosa.load(file, mono=False, duration=None)
fig = Figure(figsize=(5, 2))
super().__init__(fig)
col = librosa.display.waveplot(y, sr=sr)
self.axes = fig.gca()
self.axes.add_collection(col)
self.draw()
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
form = WaveForm()
app.exec()