• PyQt5和matplotlib简单结合的实例


    demo

    code

    import sys
    import matplotlib.pyplot as plt
    import numpy as np
    from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QPushButton
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FC
    
    
    class MyWidget(QWidget):
        def __init__(self):
            super(MyWidget, self).__init__()
            self.init_ui()
    
        def init_ui(self):
            self.resize(1000, 500)
    
            # 解决无法显示中文
            plt.rcParams['font.sans-serif'] = ['SimHei']
            # 解决无法显示负号
            plt.rcParams['axes.unicode_minus'] = False
            # 按钮
            self.one_btn = QPushButton('画一条线')
            self.more_btn = QPushButton('重复画线')
            self.reset_btn = QPushButton('重置')
            # 按钮绑定方法
            self.one_btn.clicked.connect(self.draw_cmd)
            self.more_btn.clicked.connect(self.draw_cmd)
            self.reset_btn.clicked.connect(self.reset_cmd)
            # 设置画布部分
            self.fig = plt.figure(figsize=(10, 4), dpi=80)
            self.canvas = FC(self.fig)
            # 添加第一个图
            self.ax = self.fig.add_subplot('121')
            self.ax.set_title('画一条线')
            # 添加第二个图
            self.ax1 = self.fig.add_subplot('122')
            self.ax1.set_title('重复画线')
            # 设置布局,将组件添加到布局中
            self.layout = QVBoxLayout()
    
            self.layout.addWidget(self.canvas)
            self.layout.addWidget(self.one_btn)
            self.layout.addWidget(self.more_btn)
            self.layout.addWidget(self.reset_btn)
    
            self.setLayout(self.layout)
    
        def draw_cmd(self):
            try:
                # 如果是点击画一条线的按钮,就先清除内容
                if self.sender() == self.one_btn:
                    ax = self.ax
                    ax.cla()
                    self.ax.set_title('画一条线')
                # 如果是点击重复画图的按钮,就不清除原先的内容
                elif self.sender() == self.more_btn:
                    ax = self.ax1
                # 绘图部分
                x = [i + 1 for i in range(5)]  # x轴
                y = np.random.randint(0, 10, 5)  # y轴
                ax.plot(x, y)  # 折线图
                self.canvas.draw()  # 绘制
            except Exception as e:
                print(e)
    
        def reset_cmd(self):
            try:
                # 清除内容
                self.ax.cla()
                self.ax1.cla()
                # 重新设置标题
                self.ax.set_title('画一条线')
                self.ax1.set_title('重复画线')
                # 重新绘制
                self.canvas.draw()
            except Exception as e:
                print(e)
    
    
    def start():
        app = QApplication(sys.argv)
        m = MyWidget()
        m.show()
        sys.exit(app.exec_())
    
    
    if __name__ == '__main__':
        start()
    
    
  • 相关阅读:
    文件转换table
    日期选择
    下拉多选
    下载文件(简洁方法)
    服务器下载文件http
    文件名称 (年4+月2+日2+时2+分2+秒2+毫秒3+8位随机数)
    Vim自动补全神器:YouCompleteMe
    Linux下如何卸载HP_LoadGenerator
    python 安装 setuptools Compression requires the (missing) zlib module 的解决方案
    linux安装IPython四种方法
  • 原文地址:https://www.cnblogs.com/milesma/p/12170838.html
Copyright © 2020-2023  润新知