热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QTQChart画柱状图

TheQChartclassmanagesthegraphicalrepresentationofthechartsseries,legends,andaxes.QChartisa
The QChart class manages the graphical representation of the chart's series, 
legends, and axes.
QChart is a QGraphicsWidget that you can show in a QGraphicsScene. It manages the
 graphical representation of different types of series and other chart related 
class QChartView can be used instead of QChart. In addition, line, spline, area,
 and scatter series can be presented as polar charts by using the QPolarChart class.

QChart类管理图表系列、图例和轴的图形表示。
QChart是一个可以在QGraphicsScene中显示的QGraphicsWidget。
它管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示。
要简单地在布局中显示图表,可以使用便利类QChartView代替QChart。
此外,直线、样条、面积和散射级数可以通过QPolarChart类来表示为极坐标图.

使用QChart 要在安装Qt的选择QChart 模块 否则 不能使用!!!
使用QChart 要在安装Qt的选择QChart 模块 否则 不能使用!!!
使用QChart 要在安装Qt的选择QChart 模块 否则 不能使用!!!

pro 加入 QT += charts

并且在程序的开头加上一句 using namespace Qtcharts或者一个宏 QT_CHARTS_USE_NAMESPACE

先来了解几个部分

QBarSet:

#include  
QBarSet(const QString label, QObject *parent = Q_NULLPTR)//构造

QBarSet类表示条形图中的一组条形。
一个bar集包含每个类别的一个数据值。
假设集合的第一个值属于第一个类别,
第二个属于第二个类别,依此类推。
如果集合的值小于类别的值,则假设缺失值位于集合的末尾。对于位于集合中间的缺失值,则使用0的数值。
没有显示零值集的标签。

QT -- QChart画柱状图

 这 竖 立 五 个 条 就 是 QBarSet:

    QBarSet *set0 = new QBarSet("Jane");
    QBarSet *set1 = new QBarSet("John");
    QBarSet *set2 = new QBarSet("Axel");
    QBarSet *set3 = new QBarSet("Mary");
    QBarSet *set4 = new QBarSet("Samantha");

    *set0 <<1 <<2 <<3 <<4 <<5 <<6;// 名字为 Jane 竖条的 6个值 (分别代表6个月的值)  <<符号表示赋值
    *set1 <<5 <<0 <<0 <<4 <<0 <<7;
    *set2 <<3 <<5 <<8 <<19<<8 <<5;
    *set3 <<5 <<6 <<7 <<3 <<4 <<5;
    *set4 <<9 <<7 <<5 <<3 <<1 <<2;

QBarSeries:

#include  
QBarSeries(QObject *parent = Q_NULLPTR)

QBarSeries类以垂直条的形式呈现一系列数据,按类别分组。
这个类将数据绘制为一系列按类别分组的竖线,每个类别中有一个竖线添加到这个系列中。
请参阅柱状图示例,了解如何创建分组柱状图

    QBarSeries *series = new QBarSeries();
    series->append(set0);
    series->append(set1);
    series->append(set2);
    series->append(set3);
    series->append(set4);
//把上面5个人的 6个月的值放到 series 待会显示
//在QChart绘图中,append()的作用主要是给柱、饼、折线赋值之类(个人理解)

QBarCategoryAxis:

#include  

QBarCategoryAxis(QObject *parent = Q_NULLPTR)

QBarCategoryAxis类将类别添加到图表的轴中。
可以设置QBarCategoryAxis来显示带有标记、网格线和阴影的轴线。在刻度之间绘制类别。
它还可以与线系列一起使用,如line和BarChart示例所示。

    QStringList categories;
    categories <<"Jan" <<"Feb" <<"Mar" <<"Apr" <<"May" <<"Jun";
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);

//QBarCategoryAxis:柱状图坐标文字描述
//QValueAxis:设置坐标轴范围

QT -- QChart画柱状图

Qt 的demo:

#include 
#include 
#include 
#include 
#include 
#include 
#include 

QT_CHARTS_USE_NAMESPACE

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

//![1]
    QBarSet *set0 = new QBarSet("Jane");
    QBarSet *set1 = new QBarSet("John");
    QBarSet *set2 = new QBarSet("Axel");
    QBarSet *set3 = new QBarSet("Mary");
    QBarSet *set4 = new QBarSet("Samantha");

    *set0 <<1 <<2 <<3 <<4 <<5 <<6;// Jane 6个月份的值
    *set1 <<5 <<0 <<0 <<4 <<0 <<7;
    *set2 <<3 <<5 <<8 <<19<<8 <<5;
    *set3 <<5 <<6 <<7 <<3 <<4 <<5;
    *set4 <<9 <<7 <<5 <<3 <<1 <<2;
//![1]

//![2]
    QBarSeries *series = new QBarSeries();
    series->append(set0);
    series->append(set1);
    series->append(set2);
    series->append(set3);
    series->append(set4);

//![2]

//![3]
    QChart *chart = new QChart(); // 实例化QChart
    chart->addSeries(series);    //往Chart里添加series
    chart->setTitle("Simple barchart example");  //设置表格头
    chart->setAnimationOptions(QChart::SeriesAnimations);  
//![3]

//![4]
    QStringList categories;  //创建字符串List
    categories <<"Jan" <<"Feb" <<"Mar" <<"Apr" <<"May" <<"Jun";
    QBarCategoryAxis *axis = new QBarCategoryAxis();   //实例化坐标轴文字标识轴
    axis->append(categories);   //将字符串列表append到文字标识轴里
    chart->createDefaultAxes();//创建默认的坐标轴(笛卡尔坐标),一定要有这一句
    chart->setAxisX(axis, series);//设置坐标轴
//![4]

//![5]
    chart->legend()->setVisible(true); //设置图例为显示状态
    chart->legend()->setAlignment(Qt::AlignBottom);//设置图例的显示位置在底部
//![5]

//![6]
//显示容器 QChartView
QChartView *chartView = new QChartView(chart); //添加Chart到QChartView上 chartView->setRenderHint(QPainter::Antialiasing); //![6] //![7] QMainWindow window; window.setCentralWidget(chartView); window.resize(420, 300); window.show(); //![7] return a.exec(); }

如果数据量大(百万数据不卡顿)并且交互多的话 推荐使用QCustomplot


推荐阅读
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
author-avatar
摇身一变鄙人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有