【PyQt5】PyQtChart二维绘图

这篇具有很好参考价值的文章主要介绍了【PyQt5】PyQtChart二维绘图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概述
PyQtChart是Qt Charts模块的Python绑定,它需要单独安装。绘制各种常见的二维图表,如折线图、柱状图、饼图、散点图、极坐标图等。

安装PyQtChart,只需在Windows的cmd窗口里执行下面的命令即可。

pip3 install PyQtChart

PyQtChart安装后的类都在PyQt5.QtChart模块中,所以程序中要使用其中的类时,import语句示例如下:

from PyQt5.QtChart import QChartView,QChart,QLineSeries,QValueAxis

2.主要类
PyQtChart模块包括一组易于使用的图表操作类,它基于Qt的Graphics View架构,其核心组件是QChartView和QChart。

(1)QChartView的父类是QGraphicsView,就是Graphics View架构中的视图类,所以,QChartView是用于显示图表的视图。先放置一个QGraphicsView组件,然后提升为QChartView。QChartView类定义的函数很少,只有以下几个。

setChart(chart)函数,设置一个QChart对象chart作为显示的图表。
chart()函数,返回QChartView当前的QChart类对象。
setRubberBand(rubberBand)函数,设置选择框的类型,即鼠标在视图组件上拖动选择范围的方式,参数rubberBand是一个QChartView.RubberBand枚举类型的组合,枚举类型有以下几种取值:
QChartView.NoRubberBand(无选择框);
QChartView.VerticalRubberBand(垂直选择);
QChartView.HorizontalRubberBand(水平选择);
QChartView.RectangleRubberBand(矩形框选择)。
rubberBand()函数,返回设置的选择框类型。

(2)QChart的继承关系如图所示,可以看到QChart是从QGraphicsItem继承而来的,所以,QChart是一种图形项。QPolarChart是用于绘制极坐标图的图表类,它从QChart继承而来。

QChart的继承关系:
pyqtchart,笔记,PyQt GUI,qt,python,开发语言,ui
(3)序列:图表的类型主要就是由序列的类型决定的,常见的图表类型有折线图、柱状图、饼图、散点图等,PyQtChart模块中的序列类的层次关系如图所示。QAbstractSeries类是所有这些类的上层类,QAbstractSeries的父类是QObject,所以这些序列类并不是可视组件,只是用于管理各种类型序列的数据的类。
pyqtchart,笔记,PyQt GUI,qt,python,开发语言,ui
这些序列类可以分为以下几组。
(1)从QXYSeries继承的曲线和散点类
QLineSeries折线序列:两个数据点之间直接用直线连接的序列,用于一般的曲线显示,Demo12_1是这种类型。
QSplineSeries曲线序列:数据点的连线会做光滑处理的曲线序列。
QScatterSeries散点序列:只显示数据点的序列。
(2)从QAbstractBarSeries继承的各种柱状图类
QBarSeries和QHorizontalBarSeries:常见的柱状图序列。
QStackedBarSeries和QHorizontalStackedBarSeries:堆叠柱状图序列。
QPercentBarSeries和QHorizontalPercentBarSeries:百分比柱状图序列。
(3)从QAbstractSeries直接继承的特殊序列类
QPieSeries饼图序列。
QCandlestickSeries蜡烛图序列:可绘制常用于金融数据分析的蜡烛图。
QBoxPlotSeries箱线图序列:用于金融数据分析的一种图形。
QAreaSeries面积图序列:用两个QLineSeries序列曲线作为上界和下界绘制填充的面积图。

坐标轴:坐标轴用QValueAxis类的数值坐标轴,如果用对数坐标,就可以使用QLogValueAxis类的坐标轴。柱状图的横坐标经常是文字表示的类别,可以用QBarCategoryAxis作为横轴,而饼图没有坐标轴。
PyQtChart中的坐标轴类如下:
QValueAxis数值坐标轴:作为数值型数据的坐标轴
QCategoryAxis分组数值坐标轴:可以为数值范围设置文字标签
QLogValueAxis对数数值坐标轴:作为数值型数据的对数坐标轴,可以设置对数的基。
QBarCategoryAxis类别坐标轴:用字符串作为坐标轴的刻度,用于图表的非数值坐标轴。
QDateTimeAxis日期时间坐标轴:作为日期时间数据的坐标轴
pyqtchart,笔记,PyQt GUI,qt,python,开发语言,ui
QAbstractAxis类的父类是QObject,所以坐标轴类不是可见的组件类,只是用于封装坐标轴相关的各种数据和属性,如坐标轴的刻度、标签、网格线、标题等属性。

图例(Legend):QLegend是封装了图例功能的类,在QChart对象添加序列后会自动生成图例,可以为每个序列设置图例中的文字,可以控制图例显示在图表的上、下、左、右的不同位置。

3.详细代码
用纯代码的方式创建一个基于QMainWindow的GUI应用程序,并用PyQtChart模块中的几个主要的类绘制了一个简单的图表。myMainWindow.py文件的完整代码如下:

import sys, math
from PyQt5.QtWidgets import  QApplication, QMainWindow
from PyQt5.QtChart import QChartView,QChart,QLineSeries,QValueAxis

class QmyMainWindow(QMainWindow): 
   def __init__(self, parent=None):
      super().__init__(parent)
      self.setWindowTitle("Demo12_1, QChart基本绘图")
      self.resize(580,420)
##创建chart和chartView
      chart = QChart()               #创建 chart
      chart.setTitle("简单函数曲线")
      chartView=QChartView(self)     #创建 chartView
      chartView.setChart(chart)      #chart添加到chartView
      self.setCentralWidget(chartView)
##创建曲线序列
      series0 = QLineSeries()
      series1 = QLineSeries()
      series0.setName("Sin曲线")
      series1.setName("Cos曲线")
      chart.addSeries(series0)       #序列添加到图表
      chart.addSeries(series1)
##序列添加数值
      t=0
      intv=0.1
      pointCount=100
      for i in range(pointCount):
         y1=math.cos(t) 
         series0.append(t,y1)
         y2=1.5*math.sin(t+20)
         series1.append(t,y2)
         t=t+intv
##创建坐标轴
      axisX = QValueAxis()      #x轴
      axisX.setRange(0, 10)     #设置坐标轴范围
      axisX.setTitleText("time(secs)")    #轴标题
      axisY = QValueAxis()      #y轴
      axisY.setRange(-2, 2)
      axisY.setTitleText("value")
##为序列设置坐标轴
      chart.setAxisX(axisX, series0)    #为序列series0设置坐标轴
      chart.setAxisY(axisY, series0)
      chart.setAxisX(axisX, series1)    #为序列series1设置坐标轴
      chart.setAxisY(axisY, series1)

##  ============窗体测试程序 ============================
if  __name__ == "__main__": 
   app = QApplication(sys.argv)
   form = QmyMainWindow() 
   form.show()
   sys.exit(app.exec_())

(1)首先创建一个QChart对象chart和一个QChartView对象chartView,将chart在chartView里显示。
用到了QChartView中的setChart(QChart)函数。

(2)图表上用于显示数据的称为序列(series),这里使用折线序列QLineSeries,创建了两个QLineSeries类型的序列series0和series1,并将序列添加到chart中。QChart使用addSeries(QLineSeries)函数。

(3)序列存储用于显示的数据,所以需要为两个序列添加平面数据点的坐标数据。程序中用正弦函数和余弦函数生成数据作为序列的数据。QLineSeries用到了append()函数。

(4)图表还需要坐标轴,创建两个QValueAxis类型的坐标轴对象axisX和axisY,再使用QChart的setAxisX()和setAxisY()函数为两个序列分别设置x 轴和y 轴。

图表创建后还会自动生成图例(Legend),图例是与序列对应的。
pyqtchart,笔记,PyQt GUI,qt,python,开发语言,ui
图表的主要组成部分:QChartView是QChart的视图组件,而一个QChart绘制的图表一般包括序列、坐标轴、图例、图表标题等部分。文章来源地址https://www.toymoban.com/news/detail-680825.html

到了这里,关于【PyQt5】PyQtChart二维绘图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • python GUI工具之PyQt5模块,pyCharm 配置PyQt5可视化窗口

    python GUI工具之PyQt5模块,pyCharm 配置PyQt5可视化窗口

    https://doc.qt.io/qt-5/qtwidgets-module.html https://doc.qt.io/qt-5/qt.html#AlignmentFlag-enum 一、简介 PyQt是Qt框架的Python语言实现,由Riverbank Computing开发,是最强大的GUI库之一。PyQt提供了一个设计良好的窗口控件集合,每一个PyQt控件都对应一个Qt控件。 PyQt5是由一系列Python模块组成,有超过6

    2024年02月11日
    浏览(32)
  • Python GUI文章合集(PyQt5)

    Python GUI文章合集(PyQt5)

    我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合

    2024年02月12日
    浏览(13)
  • PyQt5 GUI编程界面与函数相连

    在使用PyQt5的时候会出现一些需求 无法用代码一步步实现 ,而用GUI画完窗口之后,又要根据pyUIC5 自动生成的界面的参数 进行编程,这样增加了理解变量所需的时间。我查到了一个解决办法,就是 将界面设计与函数实现分开分别写 ,并用一个巧妙的方法将这俩在代码层面进

    2024年02月05日
    浏览(7)
  • PyQt5 GUI编程(QMainWindow与QWidget模块结合使用)

    PyQt5 GUI编程(QMainWindow与QWidget模块结合使用)

    QWidget是所有用户界面对象的基类,而QMainWindow 用于创建主应用程序窗口的类。它是 QWidget 的一个子类,提供了创建具有菜单栏、工具栏、状态栏等的主窗口所需的功能。上篇主要介绍了基本使用,创建窗口时都是继承单个模块,本章主要介绍下两个模块的结合使用。 1.我们先

    2024年04月08日
    浏览(14)
  • Python GUI设计-PyQt5从入门到实践(第1-3章)

    Python GUI设计-PyQt5从入门到实践(第1-3章)

    良好的开端,等于成功的一半 ————柏拉图 1.1.3 Python的应用领域 Web开发、大数据处理、人工智能、自动化运维开发、云计算、爬虫、游戏开发。 Python ,PyCharm,模块:pyqt5、pyqt5-tools、pyqt5designer 2.3.1 安装Pyqt5及设计器 Pycharm:file–settings 安装三个包。 2.3.2 配置PyQt5设计器

    2024年02月12日
    浏览(12)
  • Python创建一个GUI(PyQt5)选择文件的界面获取文件路径
  • 基于PyQt5GUI的人脸识别系统设计与实现

    基于PyQt5GUI的人脸识别系统设计与实现

    目 录 前 言 1 第 1 章 人脸识别系统概述 1 第 2 章 人脸检测技术 1 §2.1 基于 Harr 级联的人脸检测 2 §2.2 基于 face_recognition 开源库的人脸检测… 错误!未定义书签。第 3 章 人脸识别技术 5 §3.1 构造人脸数据集 5 §3.2 模型训练 7 §3.3 实时人脸识别 9 第 4 章 基于 PyQt5 的应用平台 1

    2024年02月04日
    浏览(12)
  • PyQt5桌面应用开发(16):定制化控件-QPainter绘图

    PyQt5桌面应用开发(16):定制化控件-QPainter绘图

    PyQt5桌面应用开发(1):需求分析 PyQt5桌面应用开发(2):事件循环 PyQt5桌面应用开发(3):并行设计 PyQt5桌面应用开发(4):界面设计 PyQt5桌面应用开发(5):对话框 PyQt5桌面应用开发(6):文件对话框 PyQt5桌面应用开发(7):文本编辑+语法高亮与行号 PyQt5桌面应用开

    2024年02月06日
    浏览(31)
  • python3GUI--图片浏览器By:PyQt5(附源码)

    python3GUI--图片浏览器By:PyQt5(附源码)

    本次使用PyQt5开发一款图片浏览器,本篇主要练习QDockWidget、QTreeWidget,软件打包好放在了文末,可自取。 点击“添加目录”后,选择目录,软件会扫描文件夹及子文件夹下的所有图片文件,最后展示到左侧的目录树中。 支持多级目录图片展示 右击文件,点击查看文件信息

    2024年02月16日
    浏览(16)
  • python3GUI--做一款某雷影音播放器By:PyQt5

    python3GUI--做一款某雷影音播放器By:PyQt5

    新版本已发布,支持弹幕请移步:https://blog.csdn.net/a1397852386/article/details/127952142?spm=1001.2014.3001.5502 本次使用PyQt5开发一款视频播放器,支持本地视频文件播放、在线视频播放,支持解析播放B站视频,撰写本篇用来记录一下开发过程。 本软件是在Windows系统上使用PyQt5开发的视频

    2024年02月12日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包