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

QDateTimeAxis

QDateTimeAxis类将日期和时间添加到图表的坐标轴。可以将QDateTimeAxis设置为显示带有刻度线,网格线和阴影的坐标轴样式。可以通过设置适当的DateTime格式来配置坐标轴的标签显示样式。QDateTimeAxis可以正确使用从4714 BCE到287396 CE的日期。QDateTimeAxis可以与任何QXYSeries一起使用。

使用
QDateTime.toMSecsSinceEpoch()将数据点添加到图表序列中。

series = QLineSeries()xValue = QDateTime()
xValue.setDate(QDate(2019, 1, 18))
xValue.setTime(QTime(9, 34))
yValue = 12
series.append(xValue. toMSecsSinceEpoch(), yValue)xValue.setDate(QDate(2020, 5, 11))
xValue.setTime(QTime(11, 14))
yValue = 22
series.append(xValue. toMSecsSinceEpoch(), yValue)

下面的代码说明了如何将图表序列添加到图表中,并将X轴设置为QDateTimeAxis

chartView = QChartView()
chartView.chart().addSeries(series)......
axisX = QDatetimeAxis()
axisX.setFormat('dd-MM-yy h:mm')
chartView.chart().setAxisX(axisX, series)

QDateTimeAxis常用函数:

  • setFormat(self, format):设置为坐标轴创建时间显示使用的格式字符串。
  • setMax(self, max):设置坐标轴的最大值。
  • setMin(self, min):设置坐标轴的最小值。
  • setRange(self, min, max):设置坐标轴值的范围。
  • setTickCount(self, count):设置坐标轴上刻度线的数量。

QDateTimeAxis常用信号:

  • formatChanged(self, format):当由format指定的坐标轴时间显示格式发生了改变,将发出此信号。
  • maxChanged(self, max):当max指定坐标轴的最大值发生了变化,将发出此信号。
  • minChanged(self, min):当由min指定坐标轴的最小值发生了变化,将发出此信号。
  • rangeChanged(self, min, max):当由minmax指定的坐标轴的最大值或最小值发生了改变,将发出此信号。
  • tickCountChanged(self, tickCount):当由tickCount指定的坐标轴上的刻度线数量改变时,将发出此信号。

日期时间坐标轴示例

基于Qt提供的C++演示代码,示例图表显示了太阳黑子的数据如何随时间变化,在代码中通过使用QDateTime. toMSecsSinceEpoch方法将QDateTime对象转换成一个数添加到线型图表序列QLineSeries。完整代码如下:

import sys,re
from PyQt5.QtCore import Qt, QFile, QTextStream, QIODevice, QDateTime, QDate
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from  PyQt5.QtChart import QChart, QChartView, QLineSeries, QDateTimeAxis, QValueAxisimport sundata_rcclass DemoDateTimeAxis(QMainWindow):def __init__(self, parent=None):super(DemoDateTimeAxis, self).__init__(parent)   # 设置窗口标题self.setWindowTitle('实战 Qt for Python: 日期时间坐标轴演示')      # 设置窗口大小self.resize(820, 540)self.createChart()def createChart(self):#设置折线数据lineSeries = QLineSeries()sunSpots = QFile(':sun')if not sunSpots.open(QIODevice.ReadOnly | QIODevice.Text):QMessageBox.information(self, '错误', '读取数据文件出错')returnstream = QTextStream(sunSpots)while not stream.atEnd():line = stream.readLine()if line.startswith('#') or line.startswith(':'):continue#正则表达式 '\s{1,}' 匹配一个或多个空格values = re.split('\s{1,}', line)momentInTime = QDateTime()momentInTime.setDate(QDate(int(values[0]), int(values[1]), 15))lineSeries.append(momentInTime.toMSecsSinceEpoch(), float(values[2]))sunSpots.close()#创建图表chart = QChart()chart.legend().hide()chart.addSeries(lineSeries)chart.setTitle('太阳黑子数量(由太空天气预报中心提供)')#坐标轴axisX = QDateTimeAxis()axisX.setTickCount(10)axisX.setFormat('MMM yyyy')axisX.setTitleText('日期')chart.addAxis(axisX, Qt.AlignBottom)lineSeries.attachAxis(axisX)axisY = QValueAxis()axisY.setLabelFormat('%i')axisY.setTitleText('太阳黑子数量')chart.addAxis(axisY, Qt.AlignLeft)lineSeries.attachAxis(axisY)#图表视图chartView = QChartView(chart)chartView.setRenderHint(QPainter.Antialiasing)self.setCentralWidget(chartView)if __name__ == '__main__':app = QApplication(sys.argv)window = DemoDateTimeAxis()window.show()sys.exit(app.exec())   

QChart日期时间坐标轴演示

本文知识点

  • 了解日期时间坐标轴QDateTimeAxis。
  • 使用QDateTime. toMSecsSinceEpoch方法将QDateTime对象转换成一个数。
  • 使用正则表达式分离数据并去掉多余的空格。

请多多关注,评论,收藏,点赞,和转发。


前一篇:实战PyQt5: 151-QChart图表之给图表添加标注

实战PyQt5: 152-QChart图表之日期时间坐标轴相关推荐

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

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

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

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

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

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

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

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

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

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

  6. chart.js 饼图显示百分比_实战PyQt5: 135-数据可视化之QChart绘制饼图

    饼图是数据可视图表的基本类型,在QChart中,QPieSeries, QPieSlice处理饼图的绘制. QPieSeries QPieSeries类以饼图形式显示数据.饼图系列由定义为QPieSl ...

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

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

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

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

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

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

最新文章

  1. php链表笔记:单链表反转
  2. linux命令fdisk
  3. ubuntu 下安装memcache 以及php扩展
  4. MySQL约束课堂笔记
  5. [.Net 多线程处理系列专题七——对多线程的补充
  6. css中hover的妙用!!
  7. 漫画丨那些年,我们一起被毁过的“三观”…
  8. jquery.lazyload 插件实现图片延迟加载
  9. 链接列表插入删除方法
  10. 【辨异】entice, tempt, lure, seduce, induce
  11. 每天一个linux命令
  12. MySQL数据库数据类型
  13. 2017 ACM-ICPC 亚洲区(青岛赛区)网络赛 HDU 6206 1001 Apple(三角形外接圆圆心和半径)
  14. 【IoT】创业:产品生产之老化测试
  15. 置信区间,置信水平/置信度
  16. 货拉拉数据治理平台建设实践
  17. Greenplum 实时数据仓库实践(1)——数据仓库简介
  18. 为seo而生的WordPress主题RabbitV3.0主题分享
  19. echarts 提示框被挡住如何解决
  20. android 数据重构(仿淘宝浏览记录,足迹)

热门文章

  1. 03 可配置表决器设计与功能验证(附源码)
  2. mysql复制数据库cmd指令
  3. c语言乘法运算 相对于,C语言中,求余运算与乘除法运算,哪个的优先级高
  4. 分布式系统(数据复制与一致性)
  5. java 内聚_java内聚性
  6. Windows——获取一个可用的端口
  7. 1、GO 语言注意事项、注释
  8. linux uniq按照一列去重,linux uniq命令用法
  9. Online 学习网站
  10. 零基础制作平衡小车【连载】8---位置式PID和增量式PID