使用 Python 自动创建 Excel 折线图

折线图是数据可视化中最常用的图表类型之一,特别适合展示数据随时间变化的趋势。在数据分析、财务报告和市场研究中,折线图能够清晰地呈现数据的波动模式和增长趋势。本文介绍如何使用 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

结果文档预览:

通过访问 PrimaryCategoryAxisPrimaryValueAxis 对象,可以分别配置横轴和纵轴的标题、字体和网格线。PlotArea.Fill.Visible 属性控制绘图区背景的可见性,设置为 False 可以使图表更加简洁。

实用技巧

在实际应用中,以下技巧能够提升折线图的实用性和可读性:

  • 数据标签显示 :通过 DataLabels.HasValue = True 在每个数据点旁显示具体数值,便于读者快速获取信息
  • 多系列颜色区分 :设置 IsVaryColor = True 为不同数据系列分配不同颜色,提高辨识度
  • 网格线控制:根据数据密度决定是否显示网格线,避免图表过于杂乱
  • 图例位置调整:将图例放置在顶部或底部,为数据区域留出更多空间

总结

本文介绍了使用 Python 在 Excel 中创建折线图的完整流程,包括基础折线图、带标记的折线图和三维折线图的实现方法。通过调整图表类型、数据标记、坐标轴属性和样式设置,可以生成满足各种需求的专业级数据可视化图表。

折线图适用于展示时间序列数据、趋势分析和对比分析等场景。掌握这些技术后,可以将其应用于财务报表生成、销售数据分析和市场趋势研究等实际工作中。

相关推荐
梅兮昂1 小时前
Cloudflare Tunnel 实践教程
后端
倒流时光三十年1 小时前
PostgreSQL VACUUM 清理机制详解
后端
小白学大数据1 小时前
面向大规模爬取:Python 全站链接爬虫优化(过滤 + 断点续爬)
开发语言·爬虫·python
WL_Aurora2 小时前
【每日一题】贪心
python·算法
IT策士2 小时前
Python 中间件系列:redis 深入浅出
redis·python·中间件
折哥的程序人生 · 物流技术专研2 小时前
《Java面试85题图解版(二)》进阶深化中篇:Spring核心 + 数据库进阶
java·后端·spring·面试
TeamDev2 小时前
在 Excel 加载项中嵌入 Web 视图
前端·后端·.net
Mr_愚人派2 小时前
redis_点评详解(02.短信登录-验证码登录注册)
后端
Xidaoapi2 小时前
5分钟让你的Python项目接入GPT-4:从配置到上线的完整指南
后端