一、折线图
- QChart 类 继承QGraphicsWidget,用于管理图表、图例和轴。
- QValueAxis 类专门用来自定义图表中 X 和 Y 坐标轴。
- QLineSeries 类专门用于折线图(曲线)的形式展示数据。
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// 调用此函数myselfLineSeriesFunc()
myselfLineSeriesFunc();
}
Widget::~Widget()
{
delete ui;
}
void Widget::myselfLineSeriesFunc()
{
// 实例化图表QChart对象
QChart *chart=new QChart;
chart->setTitle("折线图"); // 设置标题名称
ui->graphicsView->setChart(chart);
// 设置X坐标
QValueAxis *axisX=new QValueAxis;
axisX->setTitleText("年份"); // 设置标题名称
axisX->setRange(2017,2021); // 设置范围
// axisX->setTickCount(6); // 设置刻度个数
axisX->setLineVisible(true);
axisX->setGridLineVisible(false); // 设置网格线是否可见
QValueAxis *axisY=new QValueAxis;
axisY->setTitleText("(万亿:美元)"); // 设置标题名称
axisY->setRange(2000,10000); // 设置范围
axisY->setTickCount(5); // 设置刻度个数
axisY->setLineVisible(true);
axisY->setGridLineVisible(false); // 设置网格线是否可见
// 绘制折线图 ,设置序列
QLineSeries *sris1=new QLineSeries;
sris1->setName("A");
sris1->setColor(QColor(255,0,0)); // 设置序列颜色值
// 添加数据点到序列
sris1->append(2017,5000);
sris1->append(2018,6500);
sris1->append(2019,4900);
sris1->append(2020,8000);
sris1->append(2021,9000);
// 绘制折线图 ,设置序列
QLineSeries *sris2=new QLineSeries;
sris2->setName("B");
sris2->setColor(QColor(0,255,0)); // 设置序列颜色值
// 添加数据点到序列
sris2->append(2017,6500);
sris2->append(2018,7000);
sris2->append(2019,6900);
sris2->append(2020,9000);
sris2->append(2021,9800);
// 绘制折线图 ,设置序列
QLineSeries *sris3=new QLineSeries;
sris3->setName("C");
sris3->setColor(QColor(0,0,255)); // 设置序列颜色值
// 添加数据点到序列
sris3->append(2017,4000);
sris3->append(2018,8000);
sris3->append(2019,7900);
sris3->append(2020,10000);
sris3->append(2021,9500);
// 为QChart添加序列
chart->addSeries(sris1);
chart->addSeries(sris2);
chart->addSeries(sris3);
// 将序列设置到坐标轴
chart->setAxisX(axisX,sris1);
chart->setAxisY(axisY,sris1);
chart->setAxisX(axisX,sris2);
chart->setAxisY(axisY,sris2);
chart->setAxisX(axisX,sris3);
chart->setAxisY(axisY,sris3);
}
二、柱状图
- QBarSet 类专用于条形图中的一组条形集。
- QStackedBarSeries 类在 QChart 中用于创建堆积柱状图。
- QBarCategoryAxis 类用于提供柱状图的轴。
// 创建条形集对象
QBarSet *ba=new QBarSet("bar");
*ba<<560<<710<<599<<688<<701;
QStackedBarSeries *sris=new QStackedBarSeries();
sris->append(ba);
QChart *chart=new QChart();
chart->addSeries(sris);
chart->setTitle("某某学校实验班高考成绩分数");
QStringList strlist={"小王","小李","小吴","小张","小赵"};
// 通过QBarCategoryAxis类将类型添加到图表的轴
QBarCategoryAxis *axisX=new QBarCategoryAxis();
axisX->append(strlist);
axisX->setTitleText("考生姓名");
chart->addAxis(axisX,Qt::AlignBottom);
// 通过QBarCategoryAxis类将类型添加到图表的轴
QValueAxis *axisY=new QValueAxis();
axisY->setRange(0,750);
axisY->setTitleText("高考总分阶梯");
chart->addAxis(axisY,Qt::AlignLeft);
sris->attachAxis(axisX);
sris->attachAxis(axisY);
// 图例
chart->legend()->setVisible(false); // 设置绘图区与图表边界
chart->legend()->setAlignment(Qt::AlignBottom);
QChartView *chartview=new QChartView(chart);
三、饼图
- QPieSeries 类专用于提供饼图形状。
- QPieSlice 类设置颜色。
// 创建饼状图形对象
QPieSeries *sris=new QPieSeries();
// 占用比例
sris->append("70分以下:30%",30);
sris->append("70分-85分:40%",40);
sris->append("86分-99分:25%",25);
sris->append("100分:5%",5);
sris->setLabelsVisible(); // 设置标签属性,可见
QPieSlice *sred=sris->slices().at(0);
QPieSlice *sgreen=sris->slices().at(1);
QPieSlice *sblue=sris->slices().at(2);
QPieSlice *sblack=sris->slices().at(3);
sred->setColor(QColor(255,0,0,255));
sgreen->setColor(QColor(0,255,0,255));
sblue->setColor(QColor(0,0,255,255));
sblack->setColor(QColor(0,0,0,255));
QChart *chart=new QChart();
chart->addSeries(sris);
chart->setTitle("饼图形状--班级考试百分制整数比例");
QChartView *chartview=new QChartView(chart);