
折线图是数据可视化中最常用的图表类型之一,特别适合展示数据随时间变化的趋势。在数据分析、财务报告和市场研究中,折线图能够清晰地呈现数据的波动模式和增长趋势。本文介绍如何使用 Python 在 Excel 工作簿中创建折线图,并对其进行各种自定义设置。
环境准备
首先需要安装 Spire.XLS for Python 库:
bash
pip install Spire.XLS
该库提供了完整的 Excel 文件操作 API,支持创建、读取和修改 Excel 文档,包括图表生成功能。
创建基础折线图
创建折线图的基本流程包括:准备数据、添加图表对象、设置数据范围和配置图表属性。
python
from spire.xls import *
from spire.xls.common import *
# 创建工作簿和工作表
workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "Line Chart"
# 准备示例数据
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
# 设置图表数据范围
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
# 显示数据标签
for cs in chart.Series:
cs.Format.Options.IsVaryColor = True
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
# 保存文件
workbook.SaveToFile("Line.xlsx", ExcelVersion.Version2010)
workbook.Dispose()
结果文档预览:

上述代码首先在工作表中填充了四个国家六个月的销售数据,然后通过 Charts.Add() 方法创建图表对象。ChartType 属性设置为 ExcelChartType.Line 指定生成折线图。数据范围通过 DataRange 属性绑定到单元格区域 A1:E5。
添加数据标记
在某些场景下,需要在折线图的每个数据点上添加标记,以便更清晰地标识具体数值位置。可以通过设置 MarkerStyle 属性实现这一效果。
python
# ...
# 将折线图更改为带标记的折线图
chart.ChartType = ExcelChartType.LineMarkers
# ...
# 显示数据标签
for cs in chart.Series:
cs.Format.Options.IsVaryColor = True
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
# 为每个数据系列添加圆形标记
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()
结果文档预览:

通过将 MarkerStyle 设置为 ChartMarkerType.Circle,每个数据点都会显示为圆形标记。除了圆形,还可以选择其他标记样式,如方形、三角形或菱形等。
创建三维折线图
对于需要更强视觉冲击力的演示场景,可以使用三维折线图。三维效果能够增强图表的立体感和层次感。
python
# ...
# 创建三维折线图
chart.ChartType = ExcelChartType.Line3D
# ...
# 设置坐标轴标题旋转角度
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()
结果文档预览:

三维折线图的创建方式与二维类似,只需将 ChartType 设置为 ExcelChartType.Line3D。此外,还可以通过调整 TextRotationAngle 属性旋转坐标轴标题的角度,使图表布局更加合理。
自定义图表样式
折线图的外观可以通过多种方式进行定制,包括颜色、字体、网格线和图例位置等。
python
# 自定义图表样式
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 设置主分类轴
chart.PrimaryCategoryAxis.Title = "Month"
chart.PrimaryCategoryAxis.Font.IsBold = True
chart.PrimaryCategoryAxis.TitleArea.IsBold = True
# 设置主数值轴
chart.PrimaryValueAxis.Title = "Sales(in Dollars)"
chart.PrimaryValueAxis.HasMajorGridLines = False
chart.PrimaryValueAxis.TitleArea.IsBold = True
chart.PrimaryValueAxis.MinValue = 1000
# 隐藏绘图区背景
chart.PlotArea.Fill.Visible = False
# 设置图例位置
chart.Legend.Position = LegendPositionType.Top
结果文档预览:

通过访问 PrimaryCategoryAxis 和 PrimaryValueAxis 对象,可以分别配置横轴和纵轴的标题、字体和网格线。PlotArea.Fill.Visible 属性控制绘图区背景的可见性,设置为 False 可以使图表更加简洁。
实用技巧
在实际应用中,以下技巧能够提升折线图的实用性和可读性:
- 数据标签显示 :通过
DataLabels.HasValue = True在每个数据点旁显示具体数值,便于读者快速获取信息 - 多系列颜色区分 :设置
IsVaryColor = True为不同数据系列分配不同颜色,提高辨识度 - 网格线控制:根据数据密度决定是否显示网格线,避免图表过于杂乱
- 图例位置调整:将图例放置在顶部或底部,为数据区域留出更多空间
总结
本文介绍了使用 Python 在 Excel 中创建折线图的完整流程,包括基础折线图、带标记的折线图和三维折线图的实现方法。通过调整图表类型、数据标记、坐标轴属性和样式设置,可以生成满足各种需求的专业级数据可视化图表。
折线图适用于展示时间序列数据、趋势分析和对比分析等场景。掌握这些技术后,可以将其应用于财务报表生成、销售数据分析和市场趋势研究等实际工作中。