Python使用Spire.XLS創(chuàng)建柱形圖和條形圖
在日常數據分析和報告制作中,你是否遇到過這些問題:需要手動為幾十份銷售報告創(chuàng)建圖表,耗時且易出錯;客戶要求在不同場景下展示不同維度的數據對比,卻不知如何選擇合適的圖表類型;生成的圖表樣式單調,無法直觀展示數據關系?
圖表是 Excel 中強大的數據可視化工具,能將復雜的數據轉化為直觀的信息。Spire.XLS for Python 提供了便捷的圖表創(chuàng)建功能,讓開發(fā)者能夠僅用幾行代碼就創(chuàng)建各種專業(yè)圖表,包括柱形圖、條形圖、雷達圖、折線圖等。今天就讓我們來看看,怎么使用 Spire.XLS 創(chuàng)建柱形圖和條形圖。
前期準備
Spire.XLS for Python 是本教程的核心工具,它提供了豐富的 Excel API,支持高效完成 Excel 文件的創(chuàng)建、編輯和轉換操作,無需 Microsoft Office,并且不依賴于任何第三方工具。
安裝它非常簡單:
直接在 cmd 窗口中輸入 pip install Spire.XLS
,然后等待進度條結束,即安裝完成。
又或者訪問 Spire.XLS for Python 下載 壓縮包,解壓縮后從“lib”文件夾中獲取 .whl 文件,再使用 pip 的 install 語句從 .whl 文件安裝就好了。
不僅如此,官方提供了詳細的安裝指南,它會手把手教你怎么將其安裝到自己的環(huán)境中。
一、柱形圖
Excel 中的簇狀柱形圖和堆疊柱形圖是柱形圖的兩種常見變體。簇狀柱形圖可以直接比較不同類別的值,而堆疊柱形圖既可以顯示每個類別的總數,也可以顯示其各個組成部分的比例。本段將介紹如何通過代碼在 Excel 中生成簇狀或堆疊柱形圖。
Python 創(chuàng)建簇狀柱形圖
當你想要對比幾個門店幾個季度的營業(yè)額時;當你要比較幾個班級幾次考試成績的差異時;當你必須分析幾類產品幾個工廠的次品概率時,簇狀柱形圖可以幫你分塊對比幾類數據,一目了然。 Spire.XLS for Python 提供的 Worksheet.Charts.Add(ExcelChartType chartType) 方法支持在工作表中添加圖表。其中的 ExcelChartType 枚舉包含 MS Excel 中預定義的各種圖表類型。
關鍵步驟如下:
- 創(chuàng)建一個 Workbook 對象。
- 使用 Workbook.LoadFromFile() 方法加載一個待處理的 Excel 文件
- 使用 Workbook.Worksheets[index] 屬性獲取指定工作表。
- 使用 Worksheet.Charts.Add(ExcelChartType.ColumnClustered) 方法在工作表中添加一個簇狀柱形圖。
- 使用 Chart.DataRange 屬性設置圖表數據范圍。
- 使用 Chart 對象下的各屬性設置圖表的位置、標題、樣式等。
- 使用 Workbook.SaveToFile() 方法保存結果文件。
from spire.xls import * from spire.xls.common import * # 創(chuàng)建 Workbook 對象 workbook = Workbook() # 加載Excel文件 workbook.LoadFromFile("Microsoft Excel 工作表.xlsx") # 獲取第一個工作表 sheet = workbook.Worksheets[0] # 添加一個簇狀柱形圖到工作表 chart = sheet.Charts.Add(ExcelChartType.ColumnClustered) # 設置圖表數據范圍 chart.DataRange = sheet.Range["A1:D6"] chart.SeriesDataFromRange = False # 設置圖表位置 chart.LeftColumn = 5 chart.TopRow = 1 chart.RightColumn = 14 chart.BottomRow = 21 # 設置圖表標題 chart.ChartTitle = "兒童網絡書店圖書銷售情況圖" chart.ChartTitleArea.IsBold = True chart.ChartTitleArea.Size = 12 # 設置坐標軸標題 chart.PrimaryCategoryAxis.Title = "圖書類別" chart.PrimaryCategoryAxis.Font.IsBold = True chart.PrimaryCategoryAxis.TitleArea.IsBold = True chart.PrimaryValueAxis.Title = "銷售額" chart.PrimaryValueAxis.HasMajorGridLines = False chart.PrimaryValueAxis.TitleArea.IsBold = True chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90 # 設置圖表系列的顏色、重疊、間隙寬度和數據標簽 series = chart.Series for i in range(len(series)): cs = series[i] cs.Format.Options.IsVaryColor = True cs.Format.Options.Overlap = -50 cs.Format.Options.GapWidth = 350 cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True # 設置圖例位置 chart.Legend.Position = LegendPositionType.Right # 保存結果文檔 workbook.SaveToFile("簇狀柱形圖.xlsx", ExcelVersion.Version2016)
效果預覽:
程序自動生成的簇狀柱形圖
Python 創(chuàng)建堆疊柱形圖
現在你要關注于幾個門店占各個季度的營業(yè)的額比例變化,同時還要注意各個季度的總營業(yè)額變化。堆疊柱形圖將數據分類堆疊,用直觀的面積來比較不同的時間的不同變量的比例關系,同時展現總體的變化趨勢,是處理這種復雜需求的最佳解決方案。 創(chuàng)建堆疊柱形圖的過程與創(chuàng)建簇狀柱形圖基本相同。唯一不同的是,你需要將 Excel 圖表類型從 ColumnClustered 更改為 ColumnStacked。
關鍵步驟如下:
- 創(chuàng)建一個 Workbook 對象。
- 使用 Workbook.LoadFromFile() 方法加載一個待處理的 Excel 文件
- 使用 Workbook.Worksheets[index] 屬性獲取指定工作表。
- 使用 Worksheet.Charts.Add(ExcelChartType.ColumnStacked) 方法在工作表中添加一個堆疊柱形圖。
- 使用 Chart.DataRange 屬性設置圖表數據范圍。
- 使用 Chart 對象下的各屬性設置圖表的位置、標題、樣式等。
- 使用 Workbook.SaveToFile() 方法保存結果文件。
from spire.xls import * from spire.xls.common import * # 創(chuàng)建 Workbook 對象 workbook = Workbook() # 加載Excel文件 workbook.LoadFromFile("Microsoft Excel 工作表.xlsx") # 獲取第一個工作表 sheet = workbook.Worksheets[0] # 添加一個堆疊柱形圖到工作表 chart = sheet.Charts.Add(ExcelChartType.ColumnStacked) # 設置圖表數據范圍 chart.DataRange = sheet.Range["A1:D6"] chart.SeriesDataFromRange = False # 設置圖表位置 chart.LeftColumn = 5 chart.TopRow = 1 chart.RightColumn = 14 chart.BottomRow = 21 # 設置圖表標題 chart.ChartTitle = "兒童網絡書店圖書銷售情況圖" chart.ChartTitleArea.IsBold = True chart.ChartTitleArea.Size = 12 # 設置坐標軸標題 chart.PrimaryCategoryAxis.Title = "圖書類別" chart.PrimaryCategoryAxis.Font.IsBold = True chart.PrimaryCategoryAxis.TitleArea.IsBold = True chart.PrimaryValueAxis.Title = "銷售額" chart.PrimaryValueAxis.HasMajorGridLines = False chart.PrimaryValueAxis.TitleArea.IsBold = True chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90 # 設置圖表系列的顏色、重疊、間隙寬度和數據標簽 series = chart.Series for i in range(len(series)): cs = series[i] cs.Format.Options.IsVaryColor = True cs.Format.Options.GapWidth = 270 cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True cs.DataPoints.DefaultDataPoint.DataLabels.Position = DataLabelPositionType.Inside # 設置圖例位置 chart.Legend.Position = LegendPositionType.Right # 保存結果文檔 workbook.SaveToFile("堆疊柱形圖.xlsx", ExcelVersion.Version2016)
效果預覽:
程序自動生成的堆疊柱形圖
二、條形圖
Excel 中的條形圖是一種使用矩形條來表示分類數據的圖表。它與柱形圖相似,但其矩形條是從 Y 軸開始水平延伸的。每個矩形條的長度與特定類別或組別所代表的值相對應,通過比較條形圖的長度可以快速識別數據變化、趨勢或排名。本段將介紹如何在 Excel 中創(chuàng)建簇狀條形圖或堆疊條形圖。
Python 創(chuàng)建簇狀條形圖
當類別名稱較長或類別數量較多時,傳統的柱形圖可能導致標簽重疊難以閱讀。簇狀條形圖通過橫向布局,能更好地展示多類別數據對比。 Spire.XLS for Python 提供的 Worksheet.Chart.Add(ExcelChartType chartType) 方法可用于在工作表中添加圖表。要在 Excel 中添加簇狀條形圖,可以將圖表類型設置為 BarClustered。
關鍵步驟如下:
- 創(chuàng)建一個 Workbook 類的對象。
- 使用 Workbook.LoadFromFile() 方法加載一個待處理的 Excel 文件
- 使用 Workbook.Worksheets[index] 屬性獲取特定工作表。
- 使用 Worksheet.Chart.Add(ExcelChartType.BarClustered) 方法在工作表中添加簇狀條形圖。
- 使用 Chart.DataRange 屬性設置圖表的數據范圍。
- 設置圖表的位置、標題、類別軸和數值軸。
- 使用 Workbook.SaveToFile() 方法保存結果文件。
from spire.xls.common import * from spire.xls import * # 創(chuàng)建Workbook對象 workbook = Workbook() # 加載Excel文件 workbook.LoadFromFile("Microsoft Excel 工作表.xlsx") # 獲取第一張工作表 sheet = workbook.Worksheets[0] # 在工作表中添加簇狀條形圖 chart = sheet.Charts.Add(ExcelChartType.BarClustered) # 設置圖表的數據范圍 chart.DataRange = sheet.Range["A1:D6"] chart.SeriesDataFromRange = False # 設置圖表位置 chart.LeftColumn = 1 chart.TopRow = 7 chart.RightColumn = 11 chart.BottomRow = 38 # 設置圖表標題及其樣式 chart.ChartTitle = "兒童網絡書店圖書銷售情況圖" chart.ChartTitleArea.IsBold = True chart.ChartTitleArea.Size = 20 # 設置分類軸名稱及樣式 chart.PrimaryCategoryAxis.Title = "圖書類別" chart.PrimaryCategoryAxis.Font.IsBold = True chart.PrimaryCategoryAxis.TitleArea.IsBold = True chart.PrimaryCategoryAxis.TitleArea.TextRotationAngle = 90 # 設置數值軸名稱及樣式 chart.PrimaryValueAxis.Title = "銷售額" chart.PrimaryValueAxis.HasMajorGridLines = False chart.PrimaryValueAxis.MinValue = 1000 chart.PrimaryValueAxis.TitleArea.IsBold = True # 顯示數據標簽 for cs in chart.Series: cs.Format.Options.IsVaryColor = True cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True # 設置圖例位置 chart.Legend.Position = LegendPositionType.Right # 保存結果文件 workbook.SaveToFile("簇狀條形圖.xlsx", ExcelVersion.Version2016) workbook.Dispose()
效果預覽:
程序自動生成的簇狀條形圖
Python 創(chuàng)建堆疊條形圖
當需要橫向展示各部分占比和整體對比時,堆疊條形圖能同時滿足這兩方面需求,特別適合比較多個類別的構成差異。 與柱形圖類似,堆疊條形圖和簇狀條形圖的實現區(qū)別非常小,要創(chuàng)建堆疊條形圖,只需將 Excel 圖表類型更改為 BarStacked 即可。
關鍵步驟如下:
- 創(chuàng)建一個 Workbook 類的對象。
- 使用 Workbook.LoadFromFile() 方法加載一個待處理的 Excel 文件
- 使用 Workbook.Worksheets[index] 屬性獲取特定工作表。
- 使用 Worksheet.Chart.Add(ExcelChartType.BarStacked) 方法在工作表中添加堆疊條形圖。
- 使用 Chart.DataRange 屬性設置圖表的數據范圍。
- 設置圖表的位置、標題、類別軸和數值軸。
- 使用 Workbook.SaveToFile() 方法保存結果文件。
from spire.xls.common import * from spire.xls import * # 創(chuàng)建Workbook對象 workbook = Workbook() # 加載Excel文件 workbook.LoadFromFile("Microsoft Excel 工作表.xlsx") # 獲取第一張工作表 sheet = workbook.Worksheets[0] # 在工作表中添加簇狀條形圖 chart = sheet.Charts.Add(ExcelChartType.BarStacked) # 設置圖表的數據范圍 chart.DataRange = sheet.Range["A1:D6"] chart.SeriesDataFromRange = False # 設置圖表位置 chart.LeftColumn = 1 chart.TopRow = 7 chart.RightColumn = 11 chart.BottomRow = 38 # 設置圖表標題及其樣式 chart.ChartTitle = "兒童網絡書店圖書銷售情況圖" chart.ChartTitleArea.IsBold = True chart.ChartTitleArea.Size = 20 # 設置分類軸名稱及樣式 chart.PrimaryCategoryAxis.Title = "圖書類別" chart.PrimaryCategoryAxis.Font.IsBold = True chart.PrimaryCategoryAxis.TitleArea.IsBold = True chart.PrimaryCategoryAxis.TitleArea.TextRotationAngle = 90 # 設置數值軸名稱及樣式 chart.PrimaryValueAxis.Title = "銷售額" chart.PrimaryValueAxis.HasMajorGridLines = False chart.PrimaryValueAxis.MinValue = 1000 chart.PrimaryValueAxis.TitleArea.IsBold = True # 顯示數據標簽 for cs in chart.Series: cs.Format.Options.IsVaryColor = True cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True # 設置圖例位置 chart.Legend.Position = LegendPositionType.Right # 保存結果文件 workbook.SaveToFile("堆疊條形圖.xlsx", ExcelVersion.Version2016) workbook.Dispose()
效果預覽:
程序自動生成的堆疊條形圖
三、總結與拓展
相信大家都已經注意到,以上的所有示例中,示例代碼的樣式都是大體相同的,只有 Worksheet.Chart.Add() 方法的參數不同。 如此看來,我們只需要在創(chuàng)建圖表時,使用不同的 ExcelChartType 枚舉值傳入 Worksheet.Chart.Add() 方法中,就可以實現不同種類的圖表:
- 簇狀柱形圖:ExcelChartType.ColumnClustered
- 堆疊柱形圖:ExcelChartType.ColumnStacked
- 簇狀條形圖:ExcelChartType.BarClustered
- 堆疊條形圖:ExcelChartType.BarStacked
結語
通過本文介紹的四種核心圖表創(chuàng)建方法,我們可以高效解決多種數據可視化需求:
- 簇狀柱形圖:垂直對比不同類別的數據差異
- 堆疊柱形圖:展示部分與整體的構成關系
- 簇狀條形圖:優(yōu)化多類別數據的橫向對比
- 堆疊條形圖:橫向展示部分占比與整體對比
Spire.XLS for Python 的圖表創(chuàng)建功能能顯著提升數據處理效率,特別適用于自動化生成月度/季度銷售報告、批量創(chuàng)建多份數據可視化報表、動態(tài)調整圖表類型滿足不同匯報需求,甚至可以集成到數據分析流程中實現全自動化。
到此這篇關于Python使用Spire.XLS創(chuàng)建柱形圖和條形圖的文章就介紹到這了,更多相關Python創(chuàng)建柱形圖和條形圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Jupyter Notebook的連接密碼 token查詢方式
這篇文章主要介紹了Jupyter Notebook的連接密碼 token查詢方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python的地形三維可視化Matplotlib和gdal使用實例
這篇文章主要介紹了Python的地形三維可視化Matplotlib和gdal使用實例,具有一定借鑒價值,需要的朋友可以了解下。2017-12-12python??UPX?is?not?available問題解決方法
這篇文章主要介紹了python?UPX?is?not?available問題解決,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04