当前位置: 首页 > news >正文

windows python qt5 QChartView画折线图

环境:windows pyqt5 ,用QCartView画折线图

环境需要提前安装 pip install PyQtChart

折线图随着时间推移会不断移动,主动更新x轴坐标

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5.QtChart import QChart, QChartView ,QDateTimeAxis ,QValueAxis ,QSplineSeries
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import QDateTime ,QTimer
import numpy as npclass MainWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle("QChart Demo示例绘图")self.initUI()self.resize(600, 500)def initUI(self):layout = QVBoxLayout()self.setLayout(layout)self.series1 = QSplineSeries()self.series1.setName("series1")self.series2 = QSplineSeries()self.series2.setName("series2")self.chart = QChart()self.chart.setTitle("测试图")self.chart.setTheme(QChart.ChartTheme.ChartThemeDark)self.chart_view = QChartView()self.chart_view.setChart(self.chart)self.chart_view.setRenderHint(QPainter.Antialiasing)layout.addWidget(self.chart_view)self.chart.addSeries(self.series1)self.chart.addSeries(self.series2)self.axisXTime = QDateTimeAxis()self.axisXTime.setFormat("hh:mm:ss")self.axisXTime.setTickCount(10)self.axisXTime.setTitleText("time")self.axisXTime.setRange(QDateTime.currentDateTime(), QDateTime.currentDateTime().addSecs(30*2))self.axisY = QValueAxis()self.axisY.setTickCount(5)# axisY.setLabelFormat("%.2f")self.axisY.setTitleText("value")self.axisY.setRange(0, 100)self.chart.setAxisX(self.axisXTime, self.series1)self.chart.setAxisY(self.axisY, self.series1)self.chart.setAxisX(self.axisXTime, self.series2)self.chart.setAxisY(self.axisY, self.series2)# 创建定时器self.timer = QTimer()self.timer.timeout.connect(self.update_view)# 设置定时器间隔为1000毫秒(1秒)self.timer.start(1000)def update_view(self):now_time = QDateTime.currentDateTime()now_time_np = np.int64(now_time.toMSecsSinceEpoch())self.series1.append(now_time_np , np.random.rand()*100)self.series2.append(now_time_np , np.random.rand()*100)if now_time_np > self.axisXTime.max().toMSecsSinceEpoch():self.axisXTime.setRange(now_time.addSecs(-30), now_time.addSecs(30))y_data = np.random.rand()if y_data > self.axisY.max() or self.axisY.min() > y_data :self.axisY.setMax(max(y_data + 10, self.axisY.max()));self.axisY.setMin(min(y_data - 10, self.axisY.min()));if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec_())
http://www.lryc.cn/news/499360.html

相关文章:

  • 阿里云通义千问:全面解析智能云服务先锋
  • QT 贪吃蛇
  • 二、点亮希望之光:寄存器与库函数驱动 LED 灯
  • Oracle 用户管理模式下的恢复案例-不完全恢复
  • SharpDevelop IDE IViewContent.cs类
  • Unity RectTransUtility工具类
  • React性能优化
  • 前端开发流程实操:从概念到上线
  • Metasploit使用
  • Milvus向量数据库05-常见问题整理
  • Ruby On Rails 笔记3——表的增删改查
  • CSS3 动画详解,介绍、实现与应用场景详解
  • Winston-MySQL 使用文档
  • java日期工具: 获取两个时间段的时间段值,Java获得两个日期之间的所有年、月份、日。
  • 【Rive】混合动画
  • qt应用程序崩溃日志和转储dmp文件对于定位问题
  • Mysql架构
  • 杂发单的单据类型一个参数的逻辑
  • Linux系统 vim 编辑文件搜索关键字用法
  • Vue智慧商城项目
  • Qt Window应用程序去掉控制台窗口
  • 软件测试最新项目合集【商城、外卖、银行、金融等等.......】
  • SAP SD学习笔记18 - 投诉处理4 - 请求书订正依赖,投诉处理流程的总结
  • VBA批量提取PDF内容的程序
  • C++入门终
  • ubuntu下Qt5自动编译配置QtMqtt环境(10)
  • Vulnhub DC-3靶机攻击实战(一)
  • 常用传感器介绍合集
  • “为您的家电穿上防震铠甲:优质电器缓冲器
  • Elasticsearch入门之HTTP高级查询操作