PyQt5 图表 QtChart

安装 PyQt5 与 PyQtChart

安装 PyQt5 与 PyQtChart,PyQtChart 是主要用来呈现数据可视化的包。安装完后记得检验是否安装成功,以及确认版本,以确保安装是否完成。

# 安装命令
pip3 install PyQt5 PyQtChart
# 检视命令
pip3 show PyQt5 PyQtChart

使用 PyQtChart

PyQt5 可以利用 QtChart 来产生如先前 Matplotlib 或是 Pandas 包的图表效果,重要的是使用者可以完全客制化而且还可以与使用者产生互动。以下使用随机生成的数据生成代码,但在产生图片时,使用 PyQt5,并使用信号槽的方式,让使用者双击图示,打印出双击的数据内容。

import sys
import numpy as np
import pandas as pdfrom PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtChart import (QChart, QChartView, QBarSeries, QBarSet, QBarCategoryAxis, QValueAxis)class MainWindow(QMainWindow):def __init__(self):super().__init__()self.resize(800, 600)
# 随机找出 4 笔 7 天的温度变化df = pd.DataFrame(np.random.randint(20, high = 35, size=(7,4)),columns=list('abcd'),index=list('1234567'))print(df)
# 画出4 周的温度变化折线图cols = list(df.columns)#valuesArray = list(df.values)series = QBarSeries()for i in range(len(cols)):setTemp = QBarSet(cols[i])setTemp.append(list(df.iloc[:,i]))series.append(setTemp)chart = QChart()chart.addSeries(series)chart.setTitle("Weather (day of the week)")chart.setAnimationOptions(QChart.SeriesAnimations)daysofweek = [f"day of week-{i}" for i in range(7)]axisY = QValueAxis()axisY.applyNiceNumbers()chart.addAxis(axisY, Qt.AlignLeft)series.attachAxis(axisY)self.axis_x = QBarCategoryAxis()self.axis_x.append(daysofweek)chart.addAxis(self.axis_x, Qt.AlignBottom)series.attachAxis(self.axis_x)chart.legend().setVisible(True)chart.legend().setAlignment(Qt.AlignBottom)chartView = QChartView(chart)chartView.setRenderHint(QPainter.Antialiasing)self.setCentralWidget(chartView)series.doubleClicked.connect(self.bar_double_clicked)def bar_double_clicked(self, index, barset):print(barset.label(), barset.at(index), self.axis_x.categories()[index])if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec())

下图显示 QtChart 所绘出的四周的每天气温柱状图,当双击图表时,会在下方命令控制台中打印中数据内容。


利用 PyQt5 生成图表,双击图表会打出数据内容

参考文献

  • Qt Charts,https://doc.qt.io/qt-5/qtcharts-index.html
  • PyQt5 Charts, https://geekscoders.com/courses/pyqt5-tutorials/lessons/pyqt5-tutorial-working-with-pyqtchart/
  • How to get the Value from Bar Chart in PyqtChart, https://stackoverflow.com/questions/63332965/

PyQt5 图表 QtChart相关推荐

  1. qchart 坐标轴设置_实战PyQt5: 156-QChart图表之更换图表主题

    图表主题 QChart定义了多种图表主题,可以创建不同风格的图表显示,在调整图表主题风格的时候,为了使整个应用的风格看起来更和谐一致,一般要使用应用程序的背景调色板来调整应用的颜色以适配图表所选的主题 ...

  2. qchart 设置线颜色_实战PyQt5: 137-QChart图表之散点图

    散点图(scatter chart)将序列显示为一组点.值由点在图表中的位置表示.类别由图表中的不同标记表示.散点图通常用于比较跨类别的聚合数据.在QChart中,使用类QScatterSeries创 ...

  3. 实战PyQt5: 141-QChart图表之箱形图

    箱形图(英文:Box plot),又称为盒须图.盒式图.盒状图或箱线图,也称箱须图(Box-whisker Plot).是一种用作显示一组数据分散情况资料的统计图,经常被使用于各种领域,因形状如箱子而 ...

  4. 实战PyQt5: 143-QChart图表之堆积柱状图

    堆积柱状图将数据按组显示为彼此堆积的柱状图.堆积按类别进行.堆积柱状图将数据按组显示为柱状的条,并相互堆积.堆积按类别进行.创建堆积柱状图就像创建常规的柱状图相似,在QChart中使用QStacked ...

  5. qchart 图表_实战PyQt5: 158-QChart图表之线条缩放显示

    线条缩放 在数据量比较的折线图或者曲线图,受图表本身显示区域大小的限制,不能精细地显示某一小块区域的数据变化,QChartView提供了方法setRubberBand()可以实现一种类似放大镜的功能, ...

  6. pyecharts 显示坐标轴线_实战PyQt5: 153-QChart图表之对数坐标轴

    一些成指数变化的数据,在图表中需要使用对数坐标轴显示.QChart提供列QLogValueAxis来实现对数坐标轴. QLogValueAxis QLogValueAxis类将对数刻度添加到图表的坐标 ...

  7. 实战PyQt5: 153-QChart图表之对数坐标轴

    一些成指数变化的数据,在图表中需要使用对数坐标轴显示.QChart提供列QLogValueAxis来实现对数坐标轴. QLogValueAxis QLogValueAxis类将对数刻度添加到图表的坐标 ...

  8. 实战PyQt5: 152-QChart图表之日期时间坐标轴

    在统计图表中,使用时间作为某一坐标轴的情况非常常见,比如,常见的一年间月度销售统计,财务统计等等.在QChart中提供了日期时间坐标轴QDateTimeAxis类可以方便地将日期和时间添加到图表的坐标 ...

  9. 实战PyQt5: 154-QChart图表之多坐标轴图表

    在图表制作中,有些情况需要将不同类型数据序列显示一个图表中,以显示对比效果,但是两者的数据所对应的坐标轴是不一样的,在这种情况线需要使用多坐标轴. 使用多坐标轴 QChart中图表序列,通常需要绑定两 ...

最新文章

  1. 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章
  2. 将变量区分_【统计学】区分定类、定序、定距、定比变量!
  3. Spark Standalone模式应用程序开发
  4. linux进程通信ips,Cisco IPS 分析引擎拒绝服务漏洞(CVE-2014-0718)
  5. 【转载】最短路径之Dijkstra算法详细讲解
  6. 利用python自定义完整版迭代器
  7. 用实力给自己正名,YOLOv5:道路损伤检测我最强!GRDDC'2020大赛报告
  8. Vue+SpringBoot的微信登录
  9. 课程笔记--复习专用
  10. 为什么周报如此重要?如何才能写好周报
  11. java实现的端口映射器
  12. java分布式框架_5个强大的Java分布式缓存框架推荐
  13. Windows 编程之 WINUSERAPI 和 WINAPI 区别
  14. java怎么做小人跑动的动画_纯CSS3实现人物跑步动画
  15. 今日分享——《青春》(李大钊)
  16. 基于CNN的微信二维码引擎OpenCV开源!
  17. 山东2016年高考高校理工科录取人数统计
  18. 什么是次世代游戏?次世代游戏前景怎么样?
  19. UNITER多模态预训练模型原理加代码解读
  20. time_t、SYSTEMTIME、CTime、COleDateTime互转

热门文章

  1. Picker 选择器
  2. hdu 5148 Cities dp
  3. batchsize、iteration、epoch之间的关系
  4. flutter系列之:如丝般顺滑的SliverAppBar
  5. 期权和期货的定义及区别
  6. 如何理解paddle.reader.xmap_readers()函数
  7. bitset的使用方法
  8. Java 9~Java 17主要更新了什么?
  9. Oracle创建和查询索引
  10. Linux下安装google浏览器