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

Qt-chart 画折线图(以时间为x轴)

上图

在这里插入图片描述

代码

#include <iostream>
#include <random>
#include <qcategoryaxis.h>void MainWindow::testLine()
{//1、创建图表视图QChartView* view = new QChartView(this);//2.创建图表QChart* chart = new QChart();//3.将图表设置给图表视图view->setChart(chart);//设置标题chart->setTitle("");chart->legend()->show();//显示或者隐藏图例(默认显示)//4.构建x轴-日期时间轴QDateTimeAxis* axisX = new QDateTimeAxis(this);//设置轴的标题axisX->setTitleText("");//设置时间轴的范围,参数是两个时期时间QDateTimeaxisX->setRange(QDateTime(QDate(2000, 01, 01), QTime(0, 0, 0)),QDateTime(QDate(2000, 01, 10), QTime(0, 0, 0)));//设置刻度个数,刻度数算不好会会导致X轴看起来没有对中一样axisX->setTickCount(10);//设置刻度值的格式,和格式化时间字符串一样axisX->setFormat("MM.dd");axisX->setLabelsAngle(45);//添加轴chart->addAxis(axisX, Qt::AlignBottom);//5.构建y轴-数值轴QValueAxis* axisY = new QValueAxis(this);axisY->setRange(0, 100);axisY->setTickCount(11);axisY->setTitleText("Y");chart->addAxis(axisY, Qt::AlignLeft);//6.构建折线系列QLineSeries* line = new QLineSeries();//设置图例文本line->setName("tar");QLineSeries* line2 = new QLineSeries();//设置图例文本line2->setName("reality");for (int  i = 0; i < 7; i++){QString strDate = QString("%1.%2.%3").arg(2000).arg(1).arg(i + 1);{std::random_device rd;  // 用于获取随机数种子std::mt19937 gen(rd()); // 以 rd() 作为种子的 Mersenne Twister 引擎// 定义一个均匀分布的整数范围 [1, 100]std::uniform_int_distribution<> dis(1, 100);line->append(QDateTime(QDate::fromString(strDate, "yyyy.M.d"), QTime(0, 0, 0)).toMSecsSinceEpoch(), dis(gen));}{std::random_device rd;  // 用于获取随机数种子std::mt19937 gen(rd()); // 以 rd() 作为种子的 Mersenne Twister 引擎// 定义一个均匀分布的整数范围 [1, 100]std::uniform_int_distribution<> dis(1, 100);line2->append(QDateTime(QDate::fromString(strDate, "yyyy.M.d"), QTime(0, 0, 0)).toMSecsSinceEpoch(), dis(gen));}}//显示标签line->setPointLabelsVisible(true);line2->setPointLabelsVisible(true);//显示标签格式line->setPointLabelsFormat("(@yPoint)");line2->setPointLabelsFormat("(@yPoint)");//显示标签裁剪line->setPointLabelsClipping(false);line2->setPointLabelsClipping(false);chart->addSeries(line);chart->addSeries(line2);//7、将xy轴附加到折线line->attachAxis(axisX);line->attachAxis(axisY);line2->attachAxis(axisX);line2->attachAxis(axisY);setCentralWidget(view);
}
http://www.lryc.cn/news/502467.html

相关文章:

  • 【入门】晶晶的补习班
  • c#动态更新替换json节点
  • cf补题日记
  • Golang学习笔记_01——包
  • RPC设计--应用层缓冲区,TcpBuffer
  • 基于单片机智能控制的饮水机控制系统
  • 路径规划 | 改进的人工势场法APF算法进行路径规划(Matlab)
  • 【云原生知识】Kubernets实践-前端服务如何访问后端服务
  • 【ubuntu18.04】ubuntu18.04安装EasyCwmp操作说明
  • 使用Jackson库的ObjectMapper类将JSON字符串转换为Java的Map对象
  • ASP.NET Core实现鉴权授权的几个库
  • MySql:数据类型
  • Couchbase的OLAP支持情况
  • 企业级包管理器之搭建 npm 私有服务器 (6)
  • Elasticsearch的一些介绍
  • 音乐网站设计与实现
  • UE5 蓝图节点中文化
  • java抽奖系统登录下(四)
  • 解决阿里云轻量级服务器 Ubuntu 24.04.1 LTS 没网也 ping 不通 8.8.8.8 以及 route -n 没有输出任何转发信息
  • 跨域问题及其解决方案
  • 在CentOS中安装和卸载mysql
  • React简单入门 - [Next.js项目] - 页面跳转、AntD组件、二级目录等
  • Redis安装和Python练习(Windows11 + Python3.X + Pycharm社区版)
  • Sqoop脚本编写(Mysql---->>hdfs)
  • 帝可得项目redis连接不上
  • JS中this的值详细讲解以及面试指向练习
  • 显示浮动式窗口的方法
  • FireFox火狐浏览器企业策略禁止更新
  • C++类的运算符重载
  • 泷羽Sec学习笔记-zmap搭建炮台