QtChart实现Y轴单曲线,X轴实时时间轴
前言
练手做个实时曲线,以演示采集到的数据。参考了https://www.jianshu.com/p/2c584fa2e469的文章。
准备工作
首先,通过QT的帮助文档了解下QChart、QSplineSeries(或者其他的Series类)、QValueAxis等类的描述。
QChart
QChart是一个可以在QGraphicsScene中显示的QGraphicsWidget。它管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示。要简单地在布局中显示图表,可以使用便利类QChartView代替QChart。此外,直线、平滑曲线、面积和散射图可以通过QPolarChart类来表示为极坐标图。
QSplineSeries
一个spline series存储QPainterPath绘制平滑曲线所需的数据点和段控制点。当数据发生变化时,控制点会自动计算。该算法对点进行计算,以便绘制平滑曲线。
QValueAxis
可以设置一个值轴来显示带有标记、网格线和阴影的轴线。在轴上的值是在标记的位置绘制的。
QDateTimeAxis
可以设置QDateTimeAxis来显示带有标记标记、网格线和阴影的轴线。可以通过设置适当的DateTime格式来配置轴线上显示的值。QDateTimeAxis可以表示公元前4714年到公元287396年之间的时间。关于其他与QDateTime相关的信息,请参阅QDateTime文档。
*void QChart::addSeries(QAbstractSeries series)
将series添加到chart中,并且chart获得series的所有权,即chart成为series的parent。
*void QChart::addAxis(QAbstractAxis axis, Qt::Alignment alignment)
将坐标轴添加到图表中的指定的位置(左边,下方,右边,上方)。这个chart获得坐标轴的所有权。
*bool QAbstractSeries::attachAxis(QAbstractAxis axis)
将指定的坐标轴附加给series。
如果成功,返回true,否则,返回false
代码实现
一个简单的演示实时曲线图,可直接运行。``
import sys
import random
from PyQt5.QtChart import QDateTimeAxis,QValueAxis,QSplineSeries,QChart,QChartView
from PyQt5.QtWidgets import QApplication
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import QDateTime,Qt,QTimer
class ChartView(QChartView,QChart):
def __init__(self, *args, **kwargs):
super