Qt常用图表: 折线图_柱形图_饼状图

折线图

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

     this->setWindowTitle(QStringLiteral("我自定义的标题"));
    // 调用此函数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("中国");
    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("美国");
    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("俄罗斯");
    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);

}

image

柱状图

#include "mainwindow.h"
#include <QApplication>

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

    // 创建条形集对象
    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);



    MainWindow w;

    w.setWindowTitle("高考成绩--柱状图表展示");
    w.setCentralWidget(chartview);
    w.resize(800,500);


    w.show();
    return a.exec();
}

image

饼状图

#include "mainwindow.h"
#include <QApplication>

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


    // 创建饼状图形对象
    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);



    MainWindow w;

    w.setCentralWidget(chartview);
    w.resize(600,600);


    w.show();
    return a.exec();
}

image

posted @   逸風明  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示