QtCharts使用

news2024/11/20 6:15:21

1.基础配置

1.QGraphicsView提升为QChartView

#include <QtCharts>
QT_CHARTS_USE_NAMESPACE
#include "ui_widget.h"

2. QT += charts

2.柱状图

2.1QBarSeries

    //1.创建Qchart对象
    QChart *chart = new QChart();
    chart->setTitle("直方图演示");//设置表格标题

    //2.创建QBarSet对象
    QBarSet *set0 = new QBarSet("A日常开支");//设置直方图类别名称
    QBarSet *set1 = new QBarSet("B日常开支");
    set0->setColor(QColor("red"));//设置颜色

    *set0 << 2010 << 1200 << 860 << 3104 << 1322 << 4532;
    *set1 << 766 << 435 << 3225 << 1348 << 4883 << 233;
    chart->legend()->setVisible(true);//设置直方图类别名称显隐
    chart->legend()->setAlignment(Qt::AlignBottom);//直方图类别名称位置

    //3.创建QBarSeries对象
    QBarSeries  *series = new QBarSeries (chart);
    series->append(set0);
    series->append(set1);

    //4.将QBarSeries添加到QChart
    chart->addSeries(series);

    //5.设置动画效果
    chart->setAnimationOptions(QChart::SeriesAnimations);

    //6.设置横坐标字符串
    QStringList categories;
    categories << "饮食开支" << "交通开支" << "教育开支" << "购物开支" << "生活缴费" << "娱乐开支";  //保存横坐标字符串的列表
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);

    chart->createDefaultAxes(); //设置网格
    chart->setAxisX(axis, series);
    chart->axes(Qt::Vertical).first()->setRange(0,5000);//设置y轴数值范围

    // Add space to label to add space between labels and axis在标签和轴之间加空格
    QValueAxis *axisY = qobject_cast<QValueAxis*>(chart->axes(Qt::Vertical).first());
    Q_ASSERT(axisY);
    axisY->setLabelFormat("%.2f  ");//控制y轴数值精度
    axisY->setTickCount(6);  //设置y轴刻度
    series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);  //设置标签显示的位置
    series->setLabelsVisible(true);  //设置数据标签可见

    //设置主题
    // 可选: QChart::ChartThemeLight
    // QChart::ChartThemeBlueCerulean
    // QChart::ChartThemeDark
    // QChart::ChartThemeBrownSand
    // QChart::ChartThemeBlueNcs
    // QChart::ChartThemeHighContrast
    // QChart::ChartThemeBlueIcy
    // QChart::ChartThemeQt
    chart->setTheme(QChart::ChartThemeLight);
    ui->graphicsView->setChart(chart);
    ui->graphicsView->setRenderHint(QPainter::Antialiasing);

2.2QHorizontalBarSeries

    //1.创建Qchart对象
    QChart *chart = new QChart();
    chart->setTitle("直方图演示");//设置表格标题

    //2.创建QBarSet对象
    QBarSet *set0 = new QBarSet("A日常开支");//设置直方图类别名称
    QBarSet *set1 = new QBarSet("B日常开支");
    set0->setColor(QColor("red"));//设置颜色

    *set0 << 2010 << 1200 << 860 << 3104 << 1322 << 4532;
    *set1 << 766 << 435 << 3225 << 1348 << 4883 << 233;
    chart->legend()->setVisible(true);//设置直方图类别名称显隐
    chart->legend()->setAlignment(Qt::AlignBottom);//直方图类别名称位置

    //3.创建QBarSeries对象
    QHorizontalBarSeries  *series = new QHorizontalBarSeries (chart);
    series->append(set0);
    series->append(set1);

    //4.将QBarSeries添加到QChart
    chart->addSeries(series);

    //5.设置动画效果
    chart->setAnimationOptions(QChart::SeriesAnimations);

    //6.设置横坐标字符串
    QStringList categories;
    categories << "饮食开支" << "交通开支" << "教育开支" << "购物开支" << "生活缴费" << "娱乐开支";  //保存横坐标字符串的列表
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);

    chart->createDefaultAxes(); //设置网格
    chart->setAxisY(axis, series);
    chart->axes(Qt::Horizontal).first()->setRange(0,5000);//设置x轴数值范围

    // Add space to label to add space between labels and axis在标签和轴之间加空格
    QValueAxis *axisX = qobject_cast<QValueAxis*>(chart->axes(Qt::Horizontal).first());
    Q_ASSERT(axisX);
    axisX->setLabelFormat("%.2f  ");//控制y轴数值精度
    axisX->setTickCount(6);  //设置y轴刻度
    series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);  //设置标签显示的位置
    series->setLabelsVisible(true);  //设置数据标签可见

    chart->setTheme(QChart::ChartThemeLight);
    ui->graphicsView->setChart(chart);
    ui->graphicsView->setRenderHint(QPainter::Antialiasing);

2.3QPercentBarSeries

    //1.创建Qchart对象
    QChart *chart = new QChart();
    chart->setTitle("直方图演示");//设置表格标题

    //2.创建QBarSet对象
    QBarSet *set0 = new QBarSet("A日常开支");//设置直方图类别名称
    QBarSet *set1 = new QBarSet("B日常开支");
    set0->setColor(QColor("red"));//设置颜色

    *set0 << 1000 << 1000 << 1000 << 1000 << 1000 << 1000;
    *set1 << 1000 << 1000 << 1000 << 1000 << 1000 << 1000;
    chart->legend()->setVisible(true);//设置直方图类别名称显隐
    chart->legend()->setAlignment(Qt::AlignBottom);//直方图类别名称位置

    //3.创建QBarSeries对象
    QPercentBarSeries   *series = new QPercentBarSeries  (chart);
    series->append(set0);
    series->append(set1);

    //4.将QBarSeries添加到QChart
    chart->addSeries(series);

    //5.设置动画效果
    chart->setAnimationOptions(QChart::SeriesAnimations);

    //6.设置横坐标字符串
    QStringList categories;
    categories << "饮食开支" << "交通开支" << "教育开支" << "购物开支" << "生活缴费" << "娱乐开支";  //保存横坐标字符串的列表
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);

    chart->createDefaultAxes(); //设置网格
    chart->setAxisX(axis, series);
    //chart->axes(Qt::Vertical).first()->setRange(0,5000);//设置x轴数值范围

    // Add space to label to add space between labels and axis在标签和轴之间加空格
    QValueAxis *axisY = qobject_cast<QValueAxis*>(chart->axes(Qt::Vertical).first());
    Q_ASSERT(axisY);
    axisY->setLabelFormat("%.2f  ");//控制y轴数值精度
    //axisY->setTickCount(6);  //设置y轴刻度
    series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);  //设置标签显示的位置
    series->setLabelsVisible(true);  //设置数据标签可见

    chart->setTheme(QChart::ChartThemeLight);
    ui->graphicsView->setChart(chart);
    ui->graphicsView->setRenderHint(QPainter::Antialiasing);

2.4QHorizontalPercentBarSeries

    //1.创建Qchart对象
    QChart *chart = new QChart();
    chart->setTitle("直方图演示");//设置表格标题

    //2.创建QBarSet对象
    QBarSet *set0 = new QBarSet("A日常开支");//设置直方图类别名称
    QBarSet *set1 = new QBarSet("B日常开支");
    set0->setColor(QColor("red"));//设置颜色

    *set0 << 1000 << 1000 << 1000 << 1000 << 1000 << 1000;
    *set1 << 1000 << 1000 << 1000 << 1000 << 1000 << 1000;
    chart->legend()->setVisible(true);//设置直方图类别名称显隐
    chart->legend()->setAlignment(Qt::AlignBottom);//直方图类别名称位置

    //3.创建QBarSeries对象
    QHorizontalPercentBarSeries* series = new QHorizontalPercentBarSeries(chart);
    series->append(set0);
    series->append(set1);

    //4.将QBarSeries添加到QChart
    chart->addSeries(series);

    //5.设置动画效果
    chart->setAnimationOptions(QChart::SeriesAnimations);

    //6.设置横坐标字符串
    QStringList categories;
    categories << "饮食开支" << "交通开支" << "教育开支" << "购物开支" << "生活缴费" << "娱乐开支";  //保存横坐标字符串的列表
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);

    chart->createDefaultAxes(); //设置网格
    chart->setAxisY(axis, series);
    //chart->axes(Qt::Vertical).first()->setRange(0,5000);//设置x轴数值范围

    // Add space to label to add space between labels and axis在标签和轴之间加空格
    //QValueAxis *axisY = qobject_cast<QValueAxis*>(chart->axes(Qt::Vertical).first());
    //Q_ASSERT(axisY);
    //axisY->setLabelFormat("%.2f  ");//控制y轴数值精度
    //axisY->setTickCount(6);  //设置y轴刻度
    series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);  //设置标签显示的位置
    series->setLabelsVisible(true);  //设置数据标签可见

    chart->setTheme(QChart::ChartThemeLight);
    ui->graphicsView->setChart(chart);
    ui->graphicsView->setRenderHint(QPainter::Antialiasing);

2.5QStackedBarSeries

    //1.创建Qchart对象
    QChart *chart = new QChart();
    chart->setTitle("直方图演示");//设置表格标题

    //2.创建QBarSet对象
    QBarSet *set0 = new QBarSet("A日常开支");//设置直方图类别名称
    QBarSet *set1 = new QBarSet("B日常开支");
    set0->setColor(QColor("red"));//设置颜色

    *set0 << 1000 << 1000 << 1000 << 1000 << 1000 << 1000;
    *set1 << 1000 << 1000 << 1000 << 1000 << 1000 << 1000;
    chart->legend()->setVisible(true);//设置直方图类别名称显隐
    chart->legend()->setAlignment(Qt::AlignBottom);//直方图类别名称位置

    //3.创建QBarSeries对象
    QStackedBarSeries *series = new QStackedBarSeries(chart);
    series->append(set0);
    series->append(set1);

    //4.将QBarSeries添加到QChart
    chart->addSeries(series);

    //5.设置动画效果
    chart->setAnimationOptions(QChart::SeriesAnimations);

    //6.设置横坐标字符串
    QStringList categories;
    categories << "饮食开支" << "交通开支" << "教育开支" << "购物开支" << "生活缴费" << "娱乐开支";  //保存横坐标字符串的列表
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);

    chart->createDefaultAxes(); //设置网格
    chart->setAxisX(axis, series);
    chart->axes(Qt::Vertical).first()->setRange(0,3000);//设置x轴数值范围

    // Add space to label to add space between labels and axis在标签和轴之间加空格
    QValueAxis *axisY = qobject_cast<QValueAxis*>(chart->axes(Qt::Vertical).first());
    Q_ASSERT(axisY);
    axisY->setLabelFormat("%.2f  ");//控制y轴数值精度
    axisY->setTickCount(6);  //设置y轴刻度
    series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);  //设置标签显示的位置
    series->setLabelsVisible(true);  //设置数据标签可见

    chart->setTheme(QChart::ChartThemeLight);
    ui->graphicsView->setChart(chart);
    ui->graphicsView->setRenderHint(QPainter::Antialiasing);

2.6QHorizontalStackedBarSeries

    //1.创建Qchart对象
    QChart *chart = new QChart();
    chart->setTitle("直方图演示");//设置表格标题

    //2.创建QBarSet对象
    QBarSet *set0 = new QBarSet("A日常开支");//设置直方图类别名称
    QBarSet *set1 = new QBarSet("B日常开支");
    set0->setColor(QColor("red"));//设置颜色

    *set0 << 1000 << 1000 << 1000 << 1000 << 1000 << 1000;
    *set1 << 1000 << 1000 << 1000 << 1000 << 1000 << 1000;
    chart->legend()->setVisible(true);//设置直方图类别名称显隐
    chart->legend()->setAlignment(Qt::AlignBottom);//直方图类别名称位置

    //3.创建QBarSeries对象
    QHorizontalStackedBarSeries* series = new QHorizontalStackedBarSeries(chart);
    series->append(set0);
    series->append(set1);

    //4.将QBarSeries添加到QChart
    chart->addSeries(series);

    //5.设置动画效果
    chart->setAnimationOptions(QChart::SeriesAnimations);

    //6.设置横坐标字符串
    QStringList categories;
    categories << "饮食开支" << "交通开支" << "教育开支" << "购物开支" << "生活缴费" << "娱乐开支";  //保存横坐标字符串的列表
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);

    chart->createDefaultAxes(); //设置网格
    chart->setAxisY(axis, series);
    chart->axes(Qt::Horizontal).first()->setRange(0,3000);//设置x轴数值范围

    // Add space to label to add space between labels and axis在标签和轴之间加空格
    //QValueAxis *axisY = qobject_cast<QValueAxis*>(chart->axes(Qt::Vertical).first());
    //Q_ASSERT(axisY);
    //axisY->setLabelFormat("%.2f  ");//控制y轴数值精度
    //axisY->setTickCount(6);  //设置y轴刻度
    series->setLabelsPosition(QAbstractBarSeries::LabelsInsideEnd);  //设置标签显示的位置
    series->setLabelsVisible(true);  //设置数据标签可见

    chart->setTheme(QChart::ChartThemeLight);
    ui->graphicsView->setChart(chart);
    ui->graphicsView->setRenderHint(QPainter::Antialiasing);

3.饼状图

4.折线图

5.曲线图

6.散点图

7.面积图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1791555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习300问】107、自然语言处理(NLP)领域有哪些子任务?

自然语言处理&#xff08;NLP&#xff09;是计算机科学、人工智能和语言学领域的一个交叉学科&#xff0c;致力于让计算机能够理解、解析、生成和与人类的自然语言进行互动。自然语言指的是人们日常交流使用的语言&#xff0c;如英语、汉语等&#xff0c;与计算机编程语言相对。…

MySQL中:cmd下输入命令mysql -uroot -p 连接数据库错误

目录 问题cmd下输入命令mysql -uroot -p错误 待续、更新中 问题 cmd下输入命令mysql -uroot -p错误 解决 配置环境变量&#xff1a;高级系统设置——环境变量——系统变量——path编辑——新建——MySQL.exe文件路径&#xff08;如下图所示&#xff09; phpstudy2018软件下&am…

《微服务大揭秘:SpringBoot与SpringCloud的魔法组合》

加入我们的探险队伍&#xff0c;一起深入SpringBoot与SpringCloud构建的微服务世界。以轻松幽默的笔触&#xff0c;带你一步步揭开微服务架构的神秘面纱&#xff0c;从服务发现的智能地图Eureka&#xff0c;到API网关Zuul的城市门卫&#xff0c;每一个环节都充满了惊喜。不仅如…

北航数据结构与程序设计第四次作业选填题复习

首先都是线性的&#xff0c;线性包括顺序和链式&#xff0c;栈和队都可以用两种方式实现。栈只能存于栈顶取于栈顶&#xff0c;队列先进先出&#xff0c;因此存取点是固定的。 函数栈帧创建原理 画图即可。 A.显然不行&#xff0c;5如果第一个出来说明5是最后一个进的&#xf…

《2024年网络安全预测:未来规划深度洞察》

2024 年打击网络对手的计划。 阅读报告&#xff0c;了解我们的专家对 2024 年网络安全行业的预测&#xff0c;包括&#xff1a; 攻击者将人工智能融入其行动中&#xff0c;防御者利用它来加强检测和响应 民族国家继续开展网络行动以实现其地缘政治目标 攻击者继续利用零日漏洞…

nginx代理vue项目路由跳转刷新

常规代理 在我们日常开发中&#xff0c;前端部署到服务器&#xff0c;需要用到nginx部署&#xff0c;简单代理如下&#xff1a; #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid…

node mysql的增删改查基础

学习koa时&#xff0c;不选择mongodb&#xff0c;而是MySQL&#xff0c;虽然node对mongodb更亲和&#xff0c;但是我感觉MySQL的键值对的储存结构更正规 1.首选确认你的数据库有个库。有个表,我的如下 2.配置 let mySqlConfig{host:localhost,user:root,password:123456,data…

单列集合--List

方法演示&#xff1a; package exercise;import java.util.ArrayList; import java.util.List;public class ListDemo1 {public static void main(String[] args) {List<String> list new ArrayList<>();list.add("hello");list.add("world"…

【MATLAB源码-第222期】基于matlab的改进蚁群算法三维栅格地图路径规划,加入精英蚁群策略。包括起点终点,障碍物,着火点,楼梯。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 蚁群算法&#xff08;Ant Colony Optimization&#xff0c;ACO&#xff09;是一种通过模拟蚂蚁觅食行为的启发式优化算法。它由意大利学者Marco Dorigo在20世纪90年代初提出&#xff0c;最初用于解决旅行商问题&#xff08;T…

LabVIEW源程序安全性保护综合方案

LabVIEW源程序安全性保护综合方案 一、硬件加密保护方案 选择和安装硬件设备 选择加密狗和TPM设备&#xff1a;选择Sentinel HASP加密狗和支持TPM&#xff08;可信平台模块&#xff09;的计算机主板。 安装驱动和开发工具&#xff1a;安装Sentinel HASP加密狗的驱动程序和开发…

Linux: ubi rootfs 加载故障案例

文章目录 1. 前言2. ubi rootfs 加载故障现场3. 故障分析与解决4. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. ubi rootfs 加载故障现场 问题故障内核日志如下&#xff1a; Star…

python-01

第一个程序 import randomcomputer random.randint(1, 3) print(电脑出的是&#xff1a;, computer) i int(input(你要出什么&#xff1f;1代表石头&#xff0c;2代表剪刀&#xff0c;3代表布\n)) if i computer:print(平局) elif (computer 1 and i 3) or (computer 2 …

DP动态规划(上)

文章目录 动态规划基本概念斐波那契数列问题C 实现Python 实现Java 实现 迷你结C、Python和Java在实现动态规划时有哪些性能差异&#xff1f;迷你结哪种语言在动态规划中更适合大规模数据处理?迷你结C有哪些知名的库适用于动态规划和大数据处理?动态规划辅助库大数据处理库 迷…

vs2019 c++20 规范 STL库中关于时间的模板 ratio<T,U> , duration<T,U> , time_point<T,U>等

(探讨一)在学习线程的时候&#xff0c;一些函数会让线程等待或睡眠一段时间。函数形参是时间单位&#xff0c;那么在 c 中是如何记录和表示时间的呢&#xff1f;以下给出模板简图&#xff1a; &#xff08;2 探讨二&#xff09;接着给出对模板类 duration_values 的成员函数的测…

STM32(八):独立看门狗 (标准库函数)

前言 上一篇文章介绍了STM32单片机中的USART串口通信&#xff0c;这篇文章我们来介绍一下如何用STM32单片机中的独立看门狗来实现检测按键点灯的程序。 一、实验原理 单片机系统会由于受到外界的干扰&#xff0c;而造成程序执行紊乱&#xff0c;系统无法正常运行。为了防止这…

从学士-硕士-博士-博士后-副教授-教授-优青-杰青-长江-院士:一文看懂学术巨人的成长历程

会议之眼 快讯 学术之路&#xff0c;如同攀登一座高耸入云的山峰&#xff0c;需要毅力、智慧和不断的求知探索。从奠定基础的学士&#xff0c;到站在学术巅峰的院士。这条成长之路充满了挑战和机遇。 如果把学术界比作王者荣耀&#xff0c;那么学者们的成长历程就像是在进行一…

mediasoup基础概览

提示&#xff1a;本文为之前mediasoup基础介绍的优化 mediasoup基础概览 架构&#xff1a;2.特性&#xff1a;优点缺点 3.mediasoup常见类介绍js部分c 4.mediasoup类图5.业务类图 Mediasoup 是一个构建在现代 Web 技术之上的实时通信&#xff08;RTC&#xff09;解决方案&#…

Day13:vw 和 vh 基本使用

目标&#xff1a;使用 vw 和 less 完成移动端的布局。 一、vw 适配方案 1、vw 和 vh 基本使用 vw 和 vh 是相对单位&#xff0c;相对视口尺寸计算结果。 vw&#xff1a;viewport width&#xff08;1vw 1/100视口宽度 &#xff09;vh&#xff1a;lviewport height ( 1vh 1/…

企业为么要建设数据可视化大屏?简要的告诉您答案

1、在数字时代的浪潮中&#xff0c;数据已经成为企业决策和操作的重要基础。因此&#xff0c;“数据可视化大屏方案”逐渐成为业界关注的焦点。 2、数据可视化大屏通过将复杂的数据集合以直观的形式展现出来&#xff0c;帮助决策者快速把握信息&#xff0c;让决策者做出更加明…

Python04:python代码设置作者/创建时间/文件名称

我们新建一个py文件时&#xff0c;如果希望文件开头有固定的内容&#xff0c;怎么设置呢&#xff1f; 比如代码作者、文件创建时间等。。。 1、点击左上角【Python】–>【Settings】设置 2、在弹出的新窗口找到【File and Code Templates】–>【Python Script】–>在右…