使用Python在Excel中创建组合图的完整指南
作者:大丸子
本文详细介绍了如何使用Python和FreeSpire.XLSforPython创建组合图表,包括柱状图和折线图的设置,以及如何实现双Y轴展示,组合图适用于两个量级差异较大的指标展示,通过双轴机制避免数值比例冲突,便于同时分析趋势和规模,需要的朋友可以参考下
在实际业务报表中,我们经常会遇到这样一种场景:
两个指标存在关联,但量级差异较大。
例如:
- 销售额(金额)
- 销量(件数)
如果将它们放在同一个纵轴上展示,要么销量几乎贴地不可见,要么销售额被压缩失真。这时,组合图(Combo Chart)就是更专业的选择。
组合图允许:
- 一个数据系列使用柱状图展示
- 另一个数据系列使用折线图展示
- 同时支持双 Y 轴
本文将完整演示如何使用 Python 创建组合图表,如“柱状图 + 折线图”,并实现双 Y 轴展示。
示例基于 Free Spire.XLS for Python,可通过 pip 安装:
pip install spire.xls.free
1. 初始化工作簿与销售数据
首先创建工作簿,并准备示例数据结构。
from spire.xls import *
# 创建工作簿
workbook = Workbook()
# 获取工作表
sheet = workbook.Worksheets.get_Item(0)
sheet.Name = "销售图表演示"
# 设置表头
sheet.Range["A1"].Text = "月份"
sheet.Range["B1"].Text = "销售额"
sheet.Range["C1"].Text = "销量"
# 示例数据
data = [
("1月", 12000, 300),
("2月", 18500, 420),
("3月", 15000, 360),
("4月", 21000, 500),
("5月", 19500, 460),
]
row = 2
for item in data:
sheet.Range[f"A{row}"].Text = item[0]
sheet.Range[f"B{row}"].NumberValue = item[1]
sheet.Range[f"C{row}"].NumberValue = item[2]
row += 1注意事项:
- 销售额与销量必须使用
NumberValue - 否则图表无法识别为数值型数据
2. 创建组合图对象
# 添加图表 chart = sheet.Charts.Add() # 设置数据范围 chart.DataRange = sheet.AllocatedRange chart.SeriesDataFromRange = False # 设置组合图类型 chart.ChartType = ExcelChartType.CombinationChart
关键点说明:
CombinationChart表示组合图模式SeriesDataFromRange = False表示按列拆分数据系列
3. 设置柱状图系列(销售额)
sales_series = chart.Series.get_Item(0) sales_series.SerieType = ExcelChartType.ColumnStacked sales_series.Name = "销售额($)" sales_series.UsePrimaryAxis = True
说明:
SerieType控制该数据系列的图表类型UsePrimaryAxis = True表示使用主 Y 轴(左侧)
销售额通常数值较大,适合使用柱状图进行视觉强调。
4. 设置折线图系列(销量)
amount_series = chart.Series.get_Item(1) amount_series.SerieType = ExcelChartType.LineMarkers amount_series.Name = "销量(个)" amount_series.UsePrimaryAxis = False
关键逻辑:
- 折线图更适合展示趋势变化
UsePrimaryAxis = False表示使用副 Y 轴(右侧)
通过双轴机制,可以避免数值比例冲突。
5. 设置图表位置与样式
# 设置图表位置 chart.LeftColumn = 4 chart.TopRow = 1 chart.RightColumn = 12 chart.BottomRow = 20 chart.ChartTitle = "2024年销售趋势" chart.Legend.Position = LegendPositionType.Bottom
图表位置通过单元格坐标控制,这种方式比像素定位更稳定。
6. 自动调整列宽并保存文件
sheet.AllocatedRange.AutoFitColumns()
workbook.SaveToFile("CreateCombinationChart.xlsx", FileFormat.Version2016)
workbook.Dispose()生成的 Excel 文件将包含:
- 销售数据表
- 柱状图(销售额)
- 折线图(销量)
- 双 Y 轴结构
无需手动修改即可直接使用。
生成结果预览:

常见组合图注意事项
| 项目 | 说明 |
|---|---|
| 必须使用 CombinationChart | 否则无法混合图表类型 |
| 单独设置每个 SerieType | 控制不同图形类型 |
| UsePrimaryAxis 控制双轴 | True 为左轴,False 为右轴 |
| 数据必须为数值类型 | 使用 NumberValue |
总结
组合图并不是简单的“两个图叠加”,它是一种表达结构关系的工具。
在自动化报表系统中,如果仅生成单一图表,往往难以满足管理层对趋势与规模同时分析的需求。而通过 Python 自动创建组合图,我们可以:
- 构建更专业的分析报表
- 自动生成双轴结构
- 提高数据表达的层次感
- 在服务器端直接输出完整可视化文件
借助 Python,我们无需打开 Excel 界面,即可构建具备企业级视觉表达能力的分析报表。
当自动化系统开始承担经营分析任务时,组合图能力将成为报表系统的重要组成部分。掌握这一能力,意味着你不仅在生成数据文件,而是在输出真正具备决策价值的业务图形。
以上就是使用Python在Excel中创建组合图的完整指南的详细内容,更多关于Python Excel创建组合图的资料请关注脚本之家其它相关文章!
