1. 文章内容会在以后持续增加

2. 文中涉及的数据,会在文末提供下载链接

1. 双Y轴

1.1 最终效果

1.2 代码

import matplotlib
matplotlib.use("Qt5Agg")
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
from PyQt5 import QtWidgets
import pandas as pd
import sys
基础类:MplCanvas
class MplCanvas(FigureCanvas):"""FigureCanvas的最终的父类其实是QWidget。"""def __init__(self, parent=None, width=5, height=4, dpi=100):# 配置中文显示plt.rcParams['font.family'] = ['SimHei']  # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号self.fig = Figure(figsize=(width, height), dpi=dpi)  # 新建一个figure# self.axes = self.fig.add_subplot(111)  # 建立一个子图,如果要建立复合图,可以在这里修改# self.axes.hold(False)  # 每次绘图的时候不保留上一次绘图的结果FigureCanvas.__init__(self, self.fig)self.setParent(parent)'''定义FigureCanvas的尺寸策略,这部分的意思是设置FigureCanvas,使之尽可能的向外填充空间。'''FigureCanvas.setSizePolicy(self,QtWidgets.QSizePolicy.Expanding,QtWidgets.QSizePolicy.Expanding)FigureCanvas.updateGeometry(self)'''绘制静态图,可以在这里定义自己的绘图逻辑'''pass
基础类:MplLineOneOrTwoYWidget
class MplLineOneOrTwoYWidget(MplCanvas):def __init__(self, *args, **kwargs):MplCanvas.__init__(self, *args, **kwargs)def init_start(self):self.axes = self.fig.add_subplot(111)self.axes2 = Nonedef drawLine(self, data: Dict[str, Any]):# 清空画布self.fig.clf()self.init_start()# x轴数据x = data['x']x_int = []x_str = []# 坐标只显示10个if len(x)>10:for i in range(0,len(x),math.floor(len(x)/10)):x_int.append(i)x_str.append(x[i])passelse:for i in range(0,len(x)):x_int.append(i)x_str.append(x[i])# y轴数据y = data['y1']# 图形标题title_str = data['title_str']# x轴标签 strxlabel = data['xlabel']# y轴标签 strylabel = data['ylabel']legend = data['legend']self.axes.plot(x, y, color='steelblue',label=legend)self.axes.set_xticks(x_int)self.axes.set_xticklabels(x_str, rotation=15, fontdict={'size': 8})self.axes.set_xlabel(xlabel)self.axes.set_ylabel(ylabel)self.axes.legend()self.fig.suptitle(title_str)self.draw()self.flush_events()passdef drawLineTwoY(self,data:Dict[str,Any]):# 清空画布self.fig.clf()self.init_start()# x轴数据x = data['x']x_int = []x_str = []# 坐标只显示10个if len(x)>10:for i in range(0, len(x), math.floor(len(x) / 10)):x_int.append(i)x_str.append(x[i])passelse:for i in range(0,len(x)):x_int.append(i)x_str.append(x[i])# y轴数据y1 = data['y1']y2 = data['y2']# 图形标题title_str = data['title_str']# x轴标签 strxlabel = data['xlabel']# y轴标签 strylabel = data['ylabel']ylabel2 = data['ylabel2']legend1 = data['legend1']legend2 = data['legend2']self.axes2 = self.axes.twinx()self.axes.plot(x, y1, color='steelblue',label=legend1)self.axes2.plot(x,y2,color='orange',label=legend2)self.axes.set_xticks(x_int)self.axes.set_xticklabels(x_str, rotation=15, fontdict={'size': 8})self.axes.set_xlabel(xlabel)self.axes.set_ylabel(ylabel)self.axes2.set_ylabel(ylabel2)self.axes.legend(loc=2)self.axes2.legend(loc=1)self.fig.suptitle(title_str)self.draw()self.flush_events()passpass

实际使用类:MatplotlibExample

class MatplotlibExample(QtWidgets.QWidget):def __init__(self):super().__init__()self.init_data()self.init_ui()def init_data(self):file_path = r'./002410_pe.csv'df = pd.read_csv(file_path, encoding='utf-8')df00 = df.loc[:, ['tradeDate', 'closePrice', 'pe', 'close_log', 'pe_log']]self.show_dict = {}self.show_dict['x'] = df00['tradeDate'].values.tolist()self.show_dict['y1'] = df00['closePrice'].values.tolist()self.show_dict['y2'] = df00['close_log'].values.tolist()self.show_dict['xlabel'] = '日期'self.show_dict['ylabel'] = '收盘价'self.show_dict['ylabel2'] = '对数收盘价'self.show_dict['legend1'] = '收盘价'self.show_dict['legend2'] = '对数收盘价'self.show_dict['title_str'] = '双Y轴例子'passdef init_ui(self):self.setWindowTitle('Matplotlib例子')self.setMinimumWidth(1000)self.setMinimumHeight(600)self.show_widget = MplLineOneOrTwoYWidget()self.show_widget.drawLineTwoY(self.show_dict)layout = QtWidgets.QVBoxLayout()layout.addWidget(self.show_widget)self.setLayout(layout)passif __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)temp_w = MatplotlibExample()temp_w.show()sys.exit(app.exec_())pass

PS:

链接:https://pan.baidu.com/s/1PY44Xu3YAh11ZZGKDBWSjQ 
提取码:urlg

PyQt5控件matplotlib相关推荐

  1. python PyQt5中文教程☞【第八节】PyQt5控件(II)

    引用文章:http://code.py40.com/pyqt5/ 在这里我们将继续介绍PyQt5控件.我们将介绍QPixmap.QLineEdit QSplitter,QComboBox. QPixm ...

  2. 2020 PyQt5控件内置信号与函数汇总(1):QLineEdit内置信号与函数

    2020 PyQt5 控件内置信号与函数汇总(1):QLineEdit内置信号与函数 文章目录 2020 PyQt5 控件内置信号与函数汇总(1):QLineEdit内置信号与函数 0.继承关系 1. ...

  3. PyQt5学习笔记- PyQt5控件介绍

    PyQt5控件介绍 一.控件的概念 二.控件结构继承图 一.控件的概念 一个程序界面上的各个独立的元素(一块矩形区域) 具备不同的功能:用户点击.接受用户输入.展示内容.存放其他控件 初始常用控件:按 ...

  4. python制作好看的界面_【一点资讯】Python界面如何漂亮的展示树形结构,PyQt5控件之QTreeWidget详解 www.yidianzixun.com...

    前面内容,我们介绍了关于PyQt5的一些常用高级控件的使用,为了更好的便于大家理解,我们通过一些案例进行了讲解.用户接口 用Python将电子表格Excel展示在界面中,PyQt5之QTableWid ...

  5. pyqt5——控件1

    控件1 控件就像是应用这座房子的一块块砖.PyQt5有很多的控件,比如按钮,单选框,滑动条,复选框等等.在本章,我们将介绍一些很有用的控件:QCheckBox,ToggleButton,QSlider ...

  6. Qt Designer+PyQt5 控件使用经验(不定时随缘更新)

    Qt Designer 灵活使用布局 使用ctrl键多选多个控件,可为选中的控件添加布局: 也可在上侧工具栏找到快捷图标: 以两个控件使用垂直布局(VerticalLayout)为例: 4个Margi ...

  7. PyQt5 控件学习(一个一个学习之QObject)

    总的学习路线: 首先我们要知道控件之间的继承结构,并按照它去学习: 下面是基类的继承图: 所以,我们首先学习的是QObject 和 QWidget 这两个,然后再学其他的. QObject 类: 1, ...

  8. PyQt5控件QTableWidget

    1. 文章内容会在以后持续增加 2. 文中涉及的数据,会在文末提供下载链接 1. 简单实例 1.1 最终效果: 1.2 代码 from PyQt5 import QtWidgets import pa ...

  9. pythongui界面实例带注释_python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例...

    PyQt5状态栏控件QStatusBar简介 MainWindow对象在底部保留有一个水平条,作为状态栏(QstatusBar),用于显示永久或临时的状态信息 QStatusBar类中的常用方法 方法 ...

最新文章

  1. 自动sqlldr脚本
  2. Linux网络编程之select
  3. Nginx在开发中常用的基础命令
  4. 在linux配置jdk教程,Linux中JDK安装配置教程
  5. 数据库相关中间件收录集
  6. 哪些模块可用于python性能分析_python性能分析之cProfile模块
  7. 精心整理 | R语言中文社区历史文章合集(作者篇)
  8. 面试真题:经典智力题最详汇总(上)
  9. 360浏览器邮件扩展添加企业邮箱
  10. 信息可视化——走近人类命运共同体
  11. ISA防火墙策略配置
  12. 计算机网络基础(TCP/IP)
  13. Web课程设计-仿当当网-增删改查-java+jsp+mysql-期末大作业
  14. telnet 不是内部或外部命令,也不是可运行的程序解决方案:Windows 安装Telnet客户端
  15. 思迈特软件Smartbi:10分钟教会你制作高难度的数据地图!
  16. ATM制造商Diebold推自助结帐系统,助力消费者NFC结账
  17. android+仿ios+音乐播放器,iOS简单的音乐播放器(仿QQ音乐)
  18. 来自C++之父主页的《C++的应用》
  19. stata最大值最小值命令_stata基本操作来袭,简单易学,必看!
  20. android提取图片颜色代码,Android 中动态提取图片中颜色作为主题色

热门文章

  1. --->>>MySQL常用命令关键点
  2. 用C语言编程实现接口COM组件,把《C语言接口与实现》读薄之第一章:引言
  3. Imagenet和wordnet的联系
  4. NFS:Linux中最简单且实用的服务
  5. 汽车有眼睛和有眼睛的汽车
  6. Qt程序添加音乐和音效,解决QtCreator中给程序添加音乐失败的问题
  7. 5.2 (电脑技能经验)遗忘曲线
  8. 记一次蚂蚁金服电话面试经历
  9. 百度飞桨Paddle Lite与海云捷迅基于Intel FPGA的自研开发套件完成适配
  10. Visual Studio 2022 for Mac v17.0 发布,离线安装包下载