使用Python實現(xiàn)自動創(chuàng)建Excel折線圖

折線圖是數(shù)據(jù)可視化中最常用的圖表類型之一,特別適合展示數(shù)據(jù)隨時間變化的趨勢。在數(shù)據(jù)分析、財務報告和市場研究中,折線圖能夠清晰地呈現(xiàn)數(shù)據(jù)的波動模式和增長趨勢。本文介紹如何使用 Python 在 Excel 工作簿中創(chuàng)建折線圖,并對其進行各種自定義設置。
環(huán)境準備
首先需要安裝 Spire.XLS for Python 庫:
pip install Spire.XLS
該庫提供了完整的 Excel 文件操作 API,支持創(chuàng)建、讀取和修改 Excel 文檔,包括圖表生成功能。
創(chuàng)建基礎(chǔ)折線圖
創(chuàng)建折線圖的基本流程包括:準備數(shù)據(jù)、添加圖表對象、設置數(shù)據(jù)范圍和配置圖表屬性。
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建工作簿和工作表
workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "Line Chart"
# 準備示例數(shù)據(jù)
sheet.Range["A1"].Value = "Country"
sheet.Range["A2"].Value = "Cuba"
sheet.Range["A3"].Value = "Mexico"
sheet.Range["A4"].Value = "France"
sheet.Range["A5"].Value = "German"
sheet.Range["B1"].Value = "Jun"
sheet.Range["B2"].NumberValue = 3300
sheet.Range["B3"].NumberValue = 2300
sheet.Range["B4"].NumberValue = 4500
sheet.Range["B5"].NumberValue = 6700
sheet.Range["C1"].Value = "Jul"
sheet.Range["C2"].NumberValue = 7500
sheet.Range["C3"].NumberValue = 2900
sheet.Range["C4"].NumberValue = 2300
sheet.Range["C5"].NumberValue = 4200
sheet.Range["D1"].Value = "Aug"
sheet.Range["D2"].NumberValue = 7400
sheet.Range["D3"].NumberValue = 6900
sheet.Range["D4"].NumberValue = 7800
sheet.Range["D5"].NumberValue = 4200
sheet.Range["E1"].Value = "Sep"
sheet.Range["E2"].NumberValue = 8000
sheet.Range["E3"].NumberValue = 7200
sheet.Range["E4"].NumberValue = 8500
sheet.Range["E5"].NumberValue = 5600
# 設置標題行樣式
sheet.Range["A1:E1"].Style.Color = Color.get_DarkGray()
sheet.Range["A1:E1"].Style.Font.Color = Color.get_White()
sheet.Range["A1:E1"].Style.HorizontalAlignment = HorizontalAlignType.Center
# 添加折線圖
chart = sheet.Charts.Add()
chart.ChartType = ExcelChartType.Line
# 設置圖表數(shù)據(jù)范圍
chart.DataRange = sheet.Range["A1:E5"]
# 設置圖表位置
chart.LeftColumn = 1
chart.TopRow = 6
chart.RightColumn = 11
chart.BottomRow = 29
# 設置圖表標題
chart.ChartTitle = "Sales market by country"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 配置坐標軸
chart.PrimaryCategoryAxis.Title = "Month"
chart.PrimaryCategoryAxis.Font.IsBold = True
chart.PrimaryValueAxis.Title = "Sales(in Dollars)"
chart.PrimaryValueAxis.HasMajorGridLines = False
# 顯示數(shù)據(jù)標簽
for cs in chart.Series:
cs.Format.Options.IsVaryColor = True
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
# 保存文件
workbook.SaveToFile("Line.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
結(jié)果文檔預覽:

上述代碼首先在工作表中填充了四個國家六個月的銷售數(shù)據(jù),然后通過 Charts.Add() 方法創(chuàng)建圖表對象。ChartType 屬性設置為 ExcelChartType.Line 指定生成折線圖。數(shù)據(jù)范圍通過 DataRange 屬性綁定到單元格區(qū)域 A1:E5。
添加數(shù)據(jù)標記
在某些場景下,需要在折線圖的每個數(shù)據(jù)點上添加標記,以便更清晰地標識具體數(shù)值位置??梢酝ㄟ^設置 MarkerStyle 屬性實現(xiàn)這一效果。
# ...
# 將折線圖更改為帶標記的折線圖
chart.ChartType = ExcelChartType.LineMarkers
# ...
# 顯示數(shù)據(jù)標簽
for cs in chart.Series:
cs.Format.Options.IsVaryColor = True
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
# 為每個數(shù)據(jù)系列添加圓形標記
for cs1 in chart.Series:
cs = ChartSerie(cs1)
cs.Format.Options.IsVaryColor = True
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
cs.DataFormat.MarkerStyle = ChartMarkerType.Circle
chart.Legend.Position = LegendPositionType.Top
workbook.SaveToFile("Line_Circle.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
結(jié)果文檔預覽:

通過將 MarkerStyle 設置為 ChartMarkerType.Circle,每個數(shù)據(jù)點都會顯示為圓形標記。除了圓形,還可以選擇其他標記樣式,如方形、三角形或菱形等。
創(chuàng)建三維折線圖
對于需要更強視覺沖擊力的演示場景,可以使用三維折線圖。三維效果能夠增強圖表的立體感和層次感。
# ...
# 創(chuàng)建三維折線圖
chart.ChartType = ExcelChartType.Line3D
# ...
# 設置坐標軸標題旋轉(zhuǎn)角度
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90
chart.PrimaryValueAxis.MinValue = 1000
for cs in chart.Series:
cs.Format.Options.IsVaryColor = True
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
chart.PlotArea.Fill.Visible = False
workbook.SaveToFile("Line_3D.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
結(jié)果文檔預覽:

三維折線圖的創(chuàng)建方式與二維類似,只需將 ChartType 設置為 ExcelChartType.Line3D。此外,還可以通過調(diào)整 TextRotationAngle 屬性旋轉(zhuǎn)坐標軸標題的角度,使圖表布局更加合理。
自定義圖表樣式
折線圖的外觀可以通過多種方式進行定制,包括顏色、字體、網(wǎng)格線和圖例位置等。
# 自定義圖表樣式 chart.ChartTitleArea.IsBold = True chart.ChartTitleArea.Size = 12 # 設置主分類軸 chart.PrimaryCategoryAxis.Title = "Month" chart.PrimaryCategoryAxis.Font.IsBold = True chart.PrimaryCategoryAxis.TitleArea.IsBold = True # 設置主數(shù)值軸 chart.PrimaryValueAxis.Title = "Sales(in Dollars)" chart.PrimaryValueAxis.HasMajorGridLines = False chart.PrimaryValueAxis.TitleArea.IsBold = True chart.PrimaryValueAxis.MinValue = 1000 # 隱藏繪圖區(qū)背景 chart.PlotArea.Fill.Visible = False # 設置圖例位置 chart.Legend.Position = LegendPositionType.Top
結(jié)果文檔預覽:

通過訪問 PrimaryCategoryAxis 和 PrimaryValueAxis 對象,可以分別配置橫軸和縱軸的標題、字體和網(wǎng)格線。PlotArea.Fill.Visible 屬性控制繪圖區(qū)背景的可見性,設置為 False 可以使圖表更加簡潔。
實用技巧
在實際應用中,以下技巧能夠提升折線圖的實用性和可讀性:
- 數(shù)據(jù)標簽顯示:通過
DataLabels.HasValue = True在每個數(shù)據(jù)點旁顯示具體數(shù)值,便于讀者快速獲取信息 - 多系列顏色區(qū)分:設置
IsVaryColor = True為不同數(shù)據(jù)系列分配不同顏色,提高辨識度 - 網(wǎng)格線控制:根據(jù)數(shù)據(jù)密度決定是否顯示網(wǎng)格線,避免圖表過于雜亂
- 圖例位置調(diào)整:將圖例放置在頂部或底部,為數(shù)據(jù)區(qū)域留出更多空間
總結(jié)
本文介紹了使用 Python 在 Excel 中創(chuàng)建折線圖的完整流程,包括基礎(chǔ)折線圖、帶標記的折線圖和三維折線圖的實現(xiàn)方法。通過調(diào)整圖表類型、數(shù)據(jù)標記、坐標軸屬性和樣式設置,可以生成滿足各種需求的專業(yè)級數(shù)據(jù)可視化圖表。
折線圖適用于展示時間序列數(shù)據(jù)、趨勢分析和對比分析等場景。掌握這些技術(shù)后,可以將其應用于財務報表生成、銷售數(shù)據(jù)分析和市場趨勢研究等實際工作中。
以上就是使用Python實現(xiàn)自動創(chuàng)建Excel折線圖的詳細內(nèi)容,更多關(guān)于Python創(chuàng)建Excel折線圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python中l(wèi)ist列表的賦值方法及遇到問題處理
這篇文章主要介紹了Python中l(wèi)ist列表的賦值方法及遇到問題處理,記錄在列表list的賦值過程中遇到的問題,并對列表的拷貝相關(guān)知識進行匯總,需要的朋友可以參考一下2022-03-03
python+Django+pycharm+mysql 搭建首個web項目詳解
這篇文章主要介紹了python+Django+pycharm+mysql 搭建首個web項目,結(jié)合實例形式詳細分析了python+Django+pycharm+mysql搭建web項目的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
Python Flask框架實現(xiàn)簡單加法工具過程解析
這篇文章主要介紹了Python Flask框架實現(xiàn)簡單加法工具過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06
python pandas dataframe 按列或者按行合并的方法
下面小編就為大家分享一篇python pandas dataframe 按列或者按行合并的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04

