本篇文章同步發布於 如何使用 Python 的 openpyxl 建立 Excel 圖表?【Python 處理 Excel #25】
說到用 Excel 做報告,少不了提供圖表吧。Python 的 openpyxl 套件不僅可以寫入 Excel 資料、調整 Excel 儲存格內容與格式,它也可以在 Excel 檔案中建立圖表。這篇文章介紹如何使用 openpyxl 建立 Excel 圖表,文章聚焦於建立長條圖、折線圖和圓餅圖等三種圖表。
使用 openpyxl 建立 Excel 圖表的過程大致可以分為以下 6 個步驟:
BarChart
、LineChart
、PieChart
。Reference
定義圖表數據範圍 。add_data
方法增加數據到圖表。set_categories
方法設置類別 (如果適用)。add_chart
方法將圖表增加到工作表。接下來先呈現三段比較長的程式碼,分別用於建立長條圖 (bar chart)、折線圖 (line chart) 以及圓餅圖 (pie chart),再分段落講解程式碼細節。
首先 openpyxl 可以透過 BarChart
類別產生長條圖。
import openpyxl
from openpyxl.chart import BarChart, Reference
# 建立一個新的活頁簿
wb = openpyxl.Workbook()
ws = wb.active
# 增加數據到工作表
data = [
['product_name', 'sales_volume'],
['S7000', 5000],
['A5000', 3000],
['A3000', 1000]
]
for row in data:
ws.append(row)
# 建立長條圖物件
bar_chart = BarChart()
# 定義數據範圍
data_ref = Reference(ws, min_row=1, min_col=2, max_row=4)
# 增加數據到圖表
bar_chart.add_data(data_ref, titles_from_data=True)
# 定義類別名稱
cats_ref = Reference(ws, min_row=2, min_col=1, max_row=4)
bar_chart.set_categories(cats_ref)
# 將圖表增加到工作表
ws.add_chart(bar_chart, "E5")
# 儲存檔案
wb.save("bar_chart_example.xlsx")
以下是建立折線圖的程式碼:
from openpyxl.chart import LineChart
# 建立折線圖物件
line_chart = LineChart()
# 使用相同數據範圍
line_chart.add_data(data_ref, titles_from_data=True)
line_chart.set_categories(cats_ref)
# 將折線圖增加到工作表
ws.add_chart(line_chart, "E20")
wb.save("line_chart_example.xlsx")
最後是建立圓餅圖的程式碼:
from openpyxl.chart import PieChart
# 建立圓餅圖
pie_chart = PieChart()
# 使用相同數據範圍
pie_chart.add_data(data_ref, titles_from_data=True)
pie_chart.set_categories(cats_ref)
# 將圓餅圖增加到工作表
ws.add_chart(pie_chart, "E35")
wb.save("pie_chart_example.xlsx")
前面的程式碼透過 Reference
類別的物件 data_ref
定義數據範圍。Reference
允許使用者指定工作表中的某個區域作為圖表的數據來源。
Reference(worksheet, min_row, min_col, max_row, max_col)
例如:
# 定義數據範圍:選擇 B 欄的第 1 列到第 4 列
data_ref = Reference(ws, min_row=1, min_col=2, max_row=4)
如果需要動態計算範圍以適應數據變動,可以使用類似 ws.max_row
的方式計算最後一列。
add_data()
方法可以將定義好的數據範圍添加到圖表中。該方法的 titles_from_data
參數用於指定數據範圍中是否包含標題。
# 增加數據到圖表
bar_chart.add_data(data_ref, titles_from_data=True)
另外,set_categories()
方法可以指定圖表的類別標籤 (通常是 X 軸的標籤)。
# 定義類別標籤的範圍
cats_ref = Reference(ws, min_row=2, min_col=1, max_row=4)
bar_chart.set_categories(cats_ref)
除了基本圖表,openpyxl 提供自定義圖表樣式的功能,例如設定圖表標題、軸標題、樣式顏色等等。
# 設定圖表標題
bar_chart.title = "銷售數據"
# 設定 X 軸標題
bar_chart.x_axis.title = "產品"
# 設定 Y 軸標題
bar_chart.y_axis.title = "銷售量"
# 更改圖表樣式
bar_chart.style = 10
目前 openpyxl 官方文件沒有明確指出所有圖表類型的具體樣式數量,但使用者通常能有 48 種樣式選擇,也就是參數 style
的範圍會從 1 到 48。實際的樣式數量取決於所使用的 Excel 版本以及特定的圖表類型。
add_chart()
方法可以將圖表增加到工作表的指定位置。例如這裡將圖表放置在儲存格 E5
位置:
# 將圖表增加到工作表
ws.add_chart(bar_chart, "E5")
Reference
、add_data()
、set_categories()
和 add_chart()
這四個類別與方法是使用 openpyxl 建立 Excel 圖表的關鍵。Reference
用於定義圖表的數據範圍,add_data()
和 set_categories()
用於增加數據和類別標籤。add_chart()
可以將圖表增加到 Excel 工作表中。本篇文章同步發布於 如何使用 Python 的 openpyxl 建立 Excel 圖表?【Python 處理 Excel #25】