作者:翟天保Steven
版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處
為什么要繪制數(shù)據(jù)圖表?
? ? ? ?在當(dāng)今這個(gè)信息爆炸的時(shí)代,數(shù)據(jù)無處不在,無論是企業(yè)的運(yùn)營管理、科研項(xiàng)目的開展,還是市場(chǎng)趨勢(shì)的分析等等,都伴隨著海量的數(shù)據(jù)產(chǎn)生。然而,這些原始的數(shù)據(jù)往往是繁雜且無序的,就像一堆未經(jīng)雕琢的璞玉,很難讓人一眼洞察其中蘊(yùn)含的關(guān)鍵信息和規(guī)律,。
? ? ? ?而數(shù)據(jù)圖表化就如同一位神奇的工匠,能將這些原始數(shù)據(jù)進(jìn)行巧妙的加工轉(zhuǎn)化,。通過把數(shù)據(jù)以圖表的形式呈現(xiàn)出來,比如用柱狀圖清晰展示不同項(xiàng)目間的數(shù)據(jù)對(duì)比情況,折線圖直觀反映數(shù)據(jù)隨時(shí)間的變化趨勢(shì),餅圖精準(zhǔn)呈現(xiàn)各部分占總體的比例關(guān)系等,。它可以極大地提升我們對(duì)數(shù)據(jù)的理解效率,讓我們能夠快速抓取重點(diǎn),發(fā)現(xiàn)數(shù)據(jù)背后隱藏的邏輯,、關(guān)聯(lián)以及發(fā)展態(tài)勢(shì),??梢哉f,數(shù)據(jù)圖表化是我們?cè)跀?shù)據(jù)的海洋里航行時(shí)的燈塔,為我們照亮通往深入分析,、精準(zhǔn)決策的道路,其重要性不言而喻,也正因如此,掌握高效繪制數(shù)據(jù)圖表的工具和方法就顯得尤為關(guān)鍵。
? ? ? QXlsx 就是這樣一款得力的工具,接下來讓我們學(xué)習(xí)如何使用它來繪制數(shù)據(jù)圖表,。
QXlsx下載與配置
? ? ? ?參考文章:QXlsx下載與配置:助力辦公自動(dòng)化的第一步-CSDN博客
圖表繪制實(shí)現(xiàn)
1)繪制二維餅圖,。在Excel第四行第四列(3表示第4,計(jì)數(shù)從0開始),將數(shù)據(jù)A1到A9以二維餅圖形式繪制,尺寸為300*300。
// 繪制二維餅圖
Chart *pieChart = xlsx.insertChart(3, 3, QSize(300, 300));
pieChart->setChartType(Chart::CT_PieChart);
pieChart->addSeries(CellRange("A1:A9"));
2)繪制三維餅圖,。在Excel第四行第十列,將數(shù)據(jù)C1到C9以三維餅圖形式繪制,尺寸為300*300,。
// 繪制三維餅圖
Chart *pie3DChart = xlsx.insertChart(3, 9, QSize(300, 300));
pie3DChart->setChartType(Chart::CT_Pie3DChart);
pie3DChart->addSeries(CellRange("C1:C9"));
3)繪制二維條狀圖。將數(shù)據(jù)A1到C9以二維條狀圖形式繪制,尺寸為300*300,其中A1到A9為一組數(shù)據(jù),B1到B9為一組,C1到C9為一組,自動(dòng)劃分為三組,。
// 繪制二維條狀圖
Chart *barChart = xlsx.insertChart(23, 3, QSize(300, 300));
barChart->setChartType(Chart::CT_BarChart);
barChart->addSeries(CellRange("A1:C9"));
4)繪制三維條狀圖,。
// 繪制三維條狀圖
Chart *bar3DChart = xlsx.insertChart(23, 9, QSize(300, 300));
bar3DChart->setChartType(Chart::CT_Bar3DChart);
bar3DChart->addSeries(CellRange("A1:C9"));
5)繪制二維折線圖。
// 繪制二維折線圖
Chart *lineChart = xlsx.insertChart(43, 3, QSize(300, 300));
lineChart->setChartType(Chart::CT_LineChart);
lineChart->addSeries(CellRange("A1:C9"));
6)繪制三維折線圖,。
// 繪制三維折線圖
Chart *line3DChart = xlsx.insertChart(43, 9, QSize(300, 300));
line3DChart->setChartType(Chart::CT_Line3DChart);
line3DChart->addSeries(CellRange("A1:C9"));
7)繪制二維面積圖,。
// 繪制二維面積圖
Chart *areaChart = xlsx.insertChart(63, 3, QSize(300, 300));
areaChart->setChartType(Chart::CT_AreaChart);
areaChart->addSeries(CellRange("A1:C9"));
8)繪制三維面積圖。
// 繪制三維面積圖
Chart *area3DChart = xlsx.insertChart(63, 9, QSize(300, 300));
area3DChart->setChartType(Chart::CT_Area3DChart);
area3DChart->addSeries(CellRange("A1:C9"));
9)繪制散點(diǎn)圖,。
// 繪制散點(diǎn)圖(注意這里如果用A1:C9,則只會(huì)顯示B1:C9的數(shù)據(jù))
Chart *scatterChart = xlsx.insertChart(83, 3, QSize(300, 300));
scatterChart->setChartType(Chart::CT_ScatterChart);
scatterChart->addSeries(CellRange("A1:A9"));
scatterChart->addSeries(CellRange("B1:B9"));
scatterChart->addSeries(CellRange("C1:C9"));
10)繪制圓環(huán)圖,。
// 繪制圓環(huán)圖
Chart *doughnutChart = xlsx.insertChart(83, 9, QSize(300, 300));
doughnutChart->setChartType(Chart::CT_DoughnutChart);
doughnutChart->addSeries(CellRange("A1:C9"));
完整代碼
? ? ? ?main.cpp如下所示。
#include "mainwindow.h"
#include "xlsxdocument.h"
#include "xlsxformat.h"
#include "xlsxcellrange.h"
#include "xlsxchart.h"
#include <QApplication>
using namespace QXlsx;
int main()
{
// 插入數(shù)據(jù)
Document xlsx;
for (int i = 1; i < 10; ++i) {
xlsx.write(i, 1, i); // A1:A9 線性
xlsx.write(i, 2, i * i); // B1:B9 次方
xlsx.write(i, 3, i * i * i); // C1:C9 立方
}
// 繪制二維餅圖
Chart *pieChart = xlsx.insertChart(3, 3, QSize(300, 300));
pieChart->setChartType(Chart::CT_PieChart);
pieChart->addSeries(CellRange("A1:A9"));
// 繪制三維餅圖
Chart *pie3DChart = xlsx.insertChart(3, 9, QSize(300, 300));
pie3DChart->setChartType(Chart::CT_Pie3DChart);
pie3DChart->addSeries(CellRange("C1:C9"));
// 繪制二維條狀圖
Chart *barChart = xlsx.insertChart(23, 3, QSize(300, 300));
barChart->setChartType(Chart::CT_BarChart);
barChart->addSeries(CellRange("A1:C9"));
// 繪制三維條狀圖
Chart *bar3DChart = xlsx.insertChart(23, 9, QSize(300, 300));
bar3DChart->setChartType(Chart::CT_Bar3DChart);
bar3DChart->addSeries(CellRange("A1:C9"));
// 繪制二維折線圖
Chart *lineChart = xlsx.insertChart(43, 3, QSize(300, 300));
lineChart->setChartType(Chart::CT_LineChart);
lineChart->addSeries(CellRange("A1:C9"));
// 繪制三維折線圖
Chart *line3DChart = xlsx.insertChart(43, 9, QSize(300, 300));
line3DChart->setChartType(Chart::CT_Line3DChart);
line3DChart->addSeries(CellRange("A1:C9"));
// 繪制二維面積圖
Chart *areaChart = xlsx.insertChart(63, 3, QSize(300, 300));
areaChart->setChartType(Chart::CT_AreaChart);
areaChart->addSeries(CellRange("A1:C9"));
// 繪制三維面積圖
Chart *area3DChart = xlsx.insertChart(63, 9, QSize(300, 300));
area3DChart->setChartType(Chart::CT_Area3DChart);
area3DChart->addSeries(CellRange("A1:C9"));
// 繪制散點(diǎn)圖(注意這里如果用A1:C9,則只會(huì)顯示B1:C9的數(shù)據(jù))
Chart *scatterChart = xlsx.insertChart(83, 3, QSize(300, 300));
scatterChart->setChartType(Chart::CT_ScatterChart);
scatterChart->addSeries(CellRange("A1:A9"));
scatterChart->addSeries(CellRange("B1:B9"));
scatterChart->addSeries(CellRange("C1:C9"));
// 繪制圓環(huán)圖
Chart *doughnutChart = xlsx.insertChart(83, 9, QSize(300, 300));
doughnutChart->setChartType(Chart::CT_DoughnutChart);
doughnutChart->addSeries(CellRange("A1:C9"));
// 保存文件
xlsx.saveAs("chart1.xlsx");
return 0;
}
效果展示
? ? ? ?注意生成的xlsx文件要用Excel打開,用WPS打開的話,三維圖表可能還是二維樣式,。
? ? ? ?如果文章幫助到你了,可以點(diǎn)個(gè)贊讓我知道,我會(huì)很快樂~加油!