Qt 统计图编程
学习目标:Qt 折线图,柱形图和扇形统计图编程
学习基础
Qt QChart 曲线图表操作-CSDN博客
学习内容
Qt中绘制三种常见的图表非常方便, 主要步骤如下:
1. 折线图:
- 使用QLineSeries定义折线数据,添加多个坐标点
- 使用QValueAxis创建X轴和Y轴
- 将系列和坐标轴添加到QChart中
- 设置属性如标题、线条样式等
- 添加到QChartView显示
2. 柱形图:
- 使用QBarSet定义每个组的柱数据
- 使用QBarSeries添加多个QBarSet组成总系列
- 同样创建分类轴和值轴
- 可以采用堆积方式显示
- 其他设置与折线图类似
3. 饼图:
- 使用QPieSeries定义饼图序列
- 通过QPieSlice添加多个扇形部分
- 设置每个扇形的名称、百分比和颜色
- 添加到QChart并使用QChartView显示
- 可以手动修改扇形的开始和长度Angle
Qt Chart提供了很友好的接口实现各种常见图表。开发者只需熟悉这几个关键类,就可以方便绘制不同需求的图表。它使用户界面的数据可视化开发工作效率得到很大提升。
话不多说直接开始上代码
项目效果
核心代码
折线图
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); //创建图表 QChart* chart =new QChart; chart->setTitle("全球各国军费增长折线图"); // 设置标题名称 ui->graphicsView->setChart(chart); //设置坐标 QValueAxis* ax =new QValueAxis; ax->setTitleText("年份"); ax->setRange(2018,2022); ax->setTickCount(5); //设置刻度 即年份总个数 ax->setLineVisible(true); //网格 ax->setGridLineVisible(true);//网格线均可见 QValueAxis *ay =new QValueAxis; ay->setTitleText("军费(万亿)"); ay->setRange(3000,10000); ay->setTickCount(5); ay->setLineVisible(true); ay->setGridLineVisible(true); //绘画折线 QLineSeries* series =new QLineSeries; series->setName("中国"); series->setColor(Qt::red); // 添加数据点到序列 series->append(2018,6500); series->append(2019,4900); series->append(2020,8000); series->append(2021,9000); series->append(2022,9500); QLineSeries* series2 =new QLineSeries; series2->setName("俄罗斯"); series2->setColor(Qt::green); // 添加数据点到序列 series2->append(2018,4500); series2->append(2019,4900); series2->append(2020,9000); series2->append(2021,10000); series2->append(2022,10000); //加入到图表 chart->addSeries(series); chart->setAxisX(ax,series); chart->setAxisY(ay,series); chart->addSeries(series2); chart->setAxisX(ax,series2); chart->setAxisY(ay,series2); } Widget::~Widget() { delete ui; }
柱形图
#include "mainwindow.h" #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; //创建图表 QChart * chart =new QChart; chart->setTitle("某某学校实验班高考成绩分数"); //创建条形对象数据 QBarSet* bar =new QBarSet("bar"); *barattachAxis(ay); chart->legend()->setVisible(false); // 设置绘图区与图表边界 chart->legend()->setAlignment(Qt::AlignBottom); QChartView* view = new QChartView; view->setChart(chart); w.setWindowTitle("高考成绩--柱状图表展示"); w.setCentralWidget(view); w.resize(800,500); w.show(); return a.exec(); }
饼形图
#include "mainwindow.h" #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; //创建饼状图绘画对象 QPieSeries* series =new QPieSeries; // 占用比例 series->append("70分以下:30%",30); series->append("70分-85分:40%",40); series->append("86分-99分:25%",25); series->append("100分:5%",5); series->setLabelsVisible(true);// 设置标签属性,可见 QPieSlice* s1=series->slices().at(0); QPieSlice* s2=series->slices().at(1); QPieSlice* s3=series->slices().at(2); QPieSlice* s4=series->slices().at(3); s1->setColor(Qt::red); s2->setColor(Qt::green); s3->setColor(Qt::yellow); s4->setColor(Qt::black); //创建图表 QChart* chart =new QChart; chart->addSeries(series); chart->setTitle("饼图形状--班级考试百分制整数比例"); //创建图表视图 QChartView* view =new QChartView; view->setChart(chart); w.setCentralWidget(view); w.resize(600,600); w.show(); return a.exec(); }
总结
总的来说,通过这个示例可以很清楚地了解QT中的图表绘制过程:
1. 首先创建相应的图表对象,如QLineChart、QBarChart、QPieChart等。设置标题、属性等。
2. 定义数据模型,如QLineSeries、QBarSeries、QPieSeries等,用于存储图表的数据点。
3. 添加具体的数据到系列对象中,如坐标点、分类数据、占比等。
4. 创建坐标轴对象QValueAxis和QCategoryAxis,配置名称、范围等。
5. 将系列与坐标轴添加到图表对象中,实现数据与轴的关联。
6. 创建QChartView视图对象,设置图表给视图即可渲染展示。
7. 另外可以对分量设置个性化属性,如颜色、标签等。
通过极少量API调用,就可以绘制出丰富的线性图、柱状图、饼图等不同图表类型。这说明QT Chart的设计理念非常清晰、使用也很简单易上手。开发人员可以根据实际需求,通过组合这些基础类快速实现各种数据可视化工作。这无疑大大提升了开发效率。
最后附上源代码链接
对您有帮助的话,帮忙点个star
Qt demo: 学习qt过程 (gitee.com)