UniLi 2021-04-16 11:08 采纳率: 50%
浏览 208
已采纳

Matplotlib绘图窗口

用matplotlib画图,会单独弹出绘图窗口,有没有办法让图表在主窗口显示而不弹出独立窗口

窗口的搭建用的是PyQt5,想把matplotlib的绘图结果直接在PyQt5搭建的图形界面里显示

  • 写回答

1条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2021-04-16 17:38
    关注

    matplotlib支持交互式绘图,这是我们最常使用的方式。此外,matplotlib也可以方便地嵌入到多个GUI库中,比如PyQt和wxPython等。

    import numpy as np
    import matplotlib
    import matplotlib.pyplot as plt
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
    from PyQt5 import QtCore, QtWidgets,QtGui
    import sys
    
    matplotlib.use('Qt5Agg')
    
    
    class My_Main_window(QtWidgets.QDialog):
        def __init__(self,parent=None):
            super(My_Main_window,self).__init__(parent)
            
            self.figure = plt.figure()
            self.canvas = FigureCanvas(self.figure)
            self.button_plot = QtWidgets.QPushButton("绘制")
    
            self.button_plot.clicked.connect(self.plot_)
            
            layout = QtWidgets.QVBoxLayout()
            layout.addWidget(self.canvas)
            layout.addWidget(self.button_plot)
            self.setLayout(layout)
    
        def plot_(self):
            x = np.linspace(0, 2*np.pi, 200)
            y = np.sin(x)
            ax = self.figure.add_axes([0.1,0.1,0.8,0.8])
            ax.plot(x, y)
            self.canvas.draw()
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        main_window = My_Main_window()
        main_window.show()
        app.exec()
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表