首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Matplotlib- PyQt5中的图形在运行时不更新

如果你在使用Matplotlib和PyQt5时遇到图形在运行时不更新的问题,可能是因为你没有正确地更新和重绘图形。以下是一个基本的例子,展示了如何在PyQt5的窗口中动态更新Matplotlib图形:

代码语言:javascript
复制
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QSizePolicy, QWidget
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import numpy as np
import random

class MyMplCanvas(FigureCanvas):
    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)

        FigureCanvas.__init__(self, fig)
        self.setParent(parent)

        FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)

    def plot(self):
        data = [random.random() for i in range(25)]
        self.axes.plot(data, 'r')
        self.draw()

class ApplicationWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.main_widget = QWidget(self)

        layout = QVBoxLayout(self.main_widget)
        self.canvas = MyMplCanvas(self.main_widget, width=5, height=4, dpi=100)
        layout.addWidget(self.canvas)

        self.main_widget.setFocus()
        self.setCentralWidget(self.main_widget)

if __name__ == '__main__':
    app = QApplication(sys.argv)

    window = ApplicationWindow()
    window.setWindowTitle("Matplotlib in PyQt5")
    window.show()

    # Update the plot every second
    timer = QtCore.QTimer()
    timer.timeout.connect(window.canvas.plot)
    timer.start(1000)

    sys.exit(app.exec_())

在这个例子中,我们创建了一个MyMplCanvas类,它是FigureCanvas的子类,用于在PyQt5窗口中显示Matplotlib图形。plot方法用于更新图形,并使用draw方法重绘图形。

然后,我们在ApplicationWindow类中创建了一个MyMplCanvas实例,并将其添加到布局中。

最后,我们使用QtCore.QTimer每秒调用plot方法,以动态更新图形。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券