Qt数据可视化QChart - QBarSet柱状图

实例一,基本柱状图型

注意的点:必须使用命名空间:QT_CHARTS_USE_NAMESPACE

如图:

 代码:

#include <QApplication>
#include <QMainWindow>
#include <QChartView>
#include <QChart>
#include <QBarSet>
#include <QStackedBarSeries>
#include <QBarCategoryAxis>
#include <QValueAxis>


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

    QBarSet *bar = new QBarSet("Bar");;
    *bar<<50<<40<<100<<60<<80<<60<<80<<89<<45<<30;

    QStackedBarSeries *series = new QStackedBarSeries();
    series->append(bar);

    QChart *chart = new QChart();
    chart->addSeries(series);
    chart->setTitle("学生成绩展示");
    chart->setAnimationOptions(QChart::SeriesAnimations);

    /* 分类轴 */
    QStringList strlist = {"小米","小红","小张","小李","小明","小刘","小杨","小翠","小王","小胖"};
    QBarCategoryAxis *axisX = new QBarCategoryAxis();
    axisX->append(strlist);
    axisX->setTitleText("姓名");
    chart->addAxis(axisX,Qt::AlignBottom);

    QValueAxis *axisY = new QValueAxis();
    axisY->setRange(0,100);
    axisY->setTitleText("分数");
    chart->addAxis(axisY,Qt::AlignLeft);
    series->attachAxis(axisX);
    series->attachAxis(axisY);

    /* 图例 */
    chart->legend()->setVisible(false);             // 是否显示
    chart->legend()->setAlignment(Qt::AlignBottom); // 显示位置

    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing);

    QMainWindow  window;
    window.setWindowTitle("柱状图表展示实例");
    window.setCentralWidget(chartView);
    window.resize(600,300);
    window.show();
    return a.exec();
}

实例二,堆叠图柱状图型

注意的点:必须使用命名空间:QT_CHARTS_USE_NAMESPACE

如图:

代码:

#include <QApplication>
#include <QMainWindow>
#include <QChartView>
#include <QChart>
#include <QBarSet>
#include <QStackedBarSeries>
#include <QBarCategoryAxis>
#include <QValueAxis>


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

    QBarSet *barH = new QBarSet("最高气温");
    QBarSet *barL = new QBarSet("最低气温");
    *barH << -22 << -10 << -9.3 << -17.0 << -15.6 << -8.0
         << -6.0 << -11.8 << -9.7 << -12.8 << -23.0 << -28.0;
    *barL << 11.9 << 12.8 << 18.5 << 26.5 << 32.0 << 34.8
          << 38.2 << 34.8 << 29.8 << 20.4 << 15.1 << 11.8;

    QStackedBarSeries *series = new QStackedBarSeries();
    series->append(barL);
    series->append(barH);

    QChart *chart = new QChart();
    chart->addSeries(series);
    chart->setTitle("2022年气温记录");
    chart->setAnimationOptions(QChart::SeriesAnimations);

    /* 分类轴 */
    QStringList strlist = {
        "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"};
    QBarCategoryAxis *axisX = new QBarCategoryAxis();
    axisX->append(strlist);
    axisX->setTitleText("月份");
    chart->addAxis(axisX,Qt::AlignBottom);

    QValueAxis *axisY = new QValueAxis();
    axisY->setRange(-30,40);
    axisY->setTitleText("温度");
    chart->addAxis(axisY,Qt::AlignLeft);
    series->attachAxis(axisX);
    series->attachAxis(axisY);

    /* 图例 */
    chart->legend()->setVisible(false);             // 是否显示
    chart->legend()->setAlignment(Qt::AlignBottom); // 显示位置

    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing);

    QMainWindow  window;
    window.setWindowTitle("柱状图表展示实例");
    window.setCentralWidget(chartView);
    window.resize(600,300);
    window.show();
    return a.exec();
}

实例三,堆叠图柱状图型

注意的点:必须使用命名空间:QT_CHARTS_USE_NAMESPACE

如图:

代码:

#include <QApplication>
#include <QMainWindow>
#include <QChartView>
#include <QChart>
#include <QBarSet>
#include <QStackedBarSeries>
#include <QBarCategoryAxis>
#include <QValueAxis>

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

    QBarSet *barYW = new QBarSet("语文");
    QBarSet *barSX = new QBarSet("数学");
    QBarSet *barYY = new QBarSet("英语");
    QBarSet *barZH = new QBarSet("综合");

    *barYW<<12<<10<<22<<16<<30<<12<<15<<17<<9<<5;
    *barSX<<18<<6<<18<<12<<20<<22<<25<<7<<12<<15;
    *barYY<<14<<16<<20<<10<<10<<19<<12<<13<<19<<25;
    *barZH<<9<<4<<5<<8<<10<<12<<19<<13<<9<<5;

    QStackedBarSeries *series = new QStackedBarSeries();
    series->append(barYW);
    series->append(barSX);
    series->append(barYY);
    series->append(barZH);

    QChart *chart = new QChart();
    chart->addSeries(series);
    chart->setTitle("10个班级四科成绩90分-150分学生数目");
    chart->setAnimationOptions(QChart::SeriesAnimations);

    /* 分类轴 */
    QStringList strlist = {
        "1班", "2班", "3班", "4班", "5班", "6班", "7班", "8班", "9班", "10班"};
    QBarCategoryAxis *axisX = new QBarCategoryAxis();
    axisX->append(strlist);
    axisX->setTitleText("班级");
    chart->addAxis(axisX,Qt::AlignBottom);

    QValueAxis *axisY = new QValueAxis();
    axisY->setRange(0,80);
    axisY->setTitleText("人数");
    chart->addAxis(axisY,Qt::AlignLeft);
    series->attachAxis(axisX);
    series->attachAxis(axisY);

    /* 图例 */
    chart->legend()->setVisible(true);              // 是否显示
    chart->legend()->setAlignment(Qt::AlignBottom); // 显示位置

    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing);

    QMainWindow  window;
    window.setWindowTitle("柱状图表展示实例");
    window.setCentralWidget(chartView);
    window.resize(600,300);
    window.show();
    return a.exec();
}

  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃馒头爱吃鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值