1.折線圖
- 1、QChart 類繼承自 QGraphicsWidget,用于管理圖表、圖例和軸。
- 2、QValueAxis 類專門用來自定義圖表中 X 和 Y 坐標軸。
- 3、QLineSeries 類專門用于折線圖(曲線)的形式展示數據
//.pro
QT += core gui charts#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QtCharts>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//自定義函數實現折線圖void myselfLineSeriesFunc();private:Ui::Widget *ui;
};
#endif // WIDGET_H//.c#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//調用此函數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(true);//設置網格線是否可見//設置Y坐標QValueAxis * axisY = new QValueAxis;axisY->setTitleText("軍事(萬億:美元)");axisY->setRange(2000,10000);//設置范圍axisY->setTickCount(5);//這只刻度個數axisY->setLineVisible(true);axisY->setGridLineVisible(true);//設置網格線是否可見//繪制折線圖,設置序列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,8900);sris1->append(2022,9000);QLineSeries * sris2 =new QLineSeries;sris2->setName("美國");sris2->setColor(QColor(0,255,0));//設置序列顏色值//添加數據點到序列sris2->append(2017,6500);sris2->append(2018,7300);sris2->append(2019,7500);sris2->append(2020,8000);sris2->append(2021,8700);sris2->append(2022,9200);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,8000);sris3->append(2021,8200);sris3->append(2022,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);}
?
2.柱形圖
- 1、QBarSet 類專用于條形圖中的一組條形集。
- 2、QStackedBarSeries 類在 QChart 中用于創建堆積柱狀圖。
- 3、QBarCategoryAxis 類用于提供柱狀圖的軸。?
//.pro
QT += charts#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QChart>
using namespace QtCharts;#include <QBarSet>
#include <QBarSeries>
#include <QBarCategoryAxis>
#include <QChartView>
#include <QValueAxis>
#include <QStackedBarSeries>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H//.c#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();
}
3.餅狀圖?
- 1、QPieSeries 類專用于提供餅圖形狀。
- 2、QPieSlice 類設置顏色。
//.pro
QT += charts#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QChart>
#include <QtCharts/QPieSeries>
#include <QtCharts/QPieSlice>
#include <QtCharts/QChartView>
using namespace QtCharts;
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H//.cpp#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 * sgree = sris->slices().at(1);QPieSlice * sblue = sris->slices().at(2);QPieSlice * sblack = sris->slices().at(3);sred->setColor(QColor(255,0,0,255));sgree->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();
}