在PyQt5中创建pyplot图形而不保存i

2024-04-26 06:59:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个来自mne库(https://martinos.org/mne/stable/generated/mne.viz.plot_topomap.html#mne.viz.plot_topomap)的函数,它自动绘制我需要嵌入到PyQt5中的图形。你知道吗

我现在要做的是将.png中的图形保存到我的目录中,它就可以工作了。但我要做的是在画布上绘制它而不保存它。你知道吗

import matplotlib
matplotlib.use('QT5Agg')
from PyQt5 import QtCore, QtGui, QtWidgets
from matplotlib.pyplot import Figure
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as Canvas

class MplCanvas(Canvas):
    def __init__(self):
        self.fig = Figure()
        self.ax = self.fig.add_subplot(111)
        Canvas.__init__(self, self.fig)
        Canvas.setSizePolicy(self, QtWidgets.QSizePolicy.Expanding,                       QtWidgets.QSizePolicy.Expanding)
        Canvas.updateGeometry(self)
class MplWidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)   # Inherit from QWidget
        self.canvas = MplCanvas()                  # Create canvas object
        self.qeeg1 = QtWidgets.QVBoxLayout()         # Set box for plotting
        self.qeeg1.addWidget(self.canvas)
        self.setLayout(self.qeeg1)
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.qeeg = MplWidget(self.widget)
        self.qeeg.setEnabled(True)
class ExampleApp(QtGui.QMainWindow, mneTrial_ui.Ui_MainWindow):
    def __init__(self, parent=None):
        super(ExampleApp, self).__init__(parent)
        self.setupUi(self)

    def QEEG_plotting(parameters)
        fig = plt.figure(figsize=(size,size))
        mne.viz.plot_topomap(parameters)  
        return fig
    def refresh(self):
        figure = self.QEEG_plotting(parameters)
        self.qeeg.canvas.ax.imshow(figure)  
        self.qeeg1.canvas.draw()

if __name__=="__main__":
    app = QtWidgets.QApplication(sys.argv)
    form = ExampleApp()
    form.show()

    # form.update() #start with something
    app.exec_()

我得到的错误是“图像数据不能转换成浮点”,但我还没有从画布上找到一个函数来绘制图像。你知道吗

“图形”的类型是matplotlib.figure.figure图你知道吗

附言:我有一个刷新绘图的按钮


Tags: fromimportselfmatplotlibinitdeffigclass