Python Excel 高阶教程:使用 Spire.XLS 创建柱形图和条形图_python 如何画柱状图
在日常数据分析和报告制作中,你是否遇到过这些问题:需要手动为几十份销售报告创建图表,耗时且易出错;客户要求在不同场景下展示不同维度的数据对比,却不知如何选择合适的图表类型;生成的图表样式单调,无法直观展示数据关系?
图表是 Excel 中强大的数据可视化工具,能将复杂的数据转化为直观的信息。Spire.XLS for Python 提供了便捷的图表创建功能,让开发者能够仅用几行代码就创建各种专业图表,包括柱形图、条形图、雷达图、折线图等。今天就让我们来看看,怎么使用 Spire.XLS 创建柱形图和条形图。
目录
前期准备
一、柱形图
Python 创建簇状柱形图
Python 创建堆叠柱形图
二、条形图
Python 创建簇状条形图
Python 创建堆叠条形图
三、总结与拓展
结语
前期准备
Spire.XLS for Python 是本教程的核心工具,它提供了丰富的 Excel API,支持高效完成 Excel 文件的创建、编辑和转换操作,无需 Microsoft Office,并且不依赖于任何第三方工具。
安装它非常简单:
直接在 cmd 窗口中输入 pip install spire.xls
,然后等待进度条结束,即安装完成。
又或者访问 Spire.XLS for Python 下载 压缩包,解压缩后从“lib”文件夹中获取 .whl 文件,再使用 pip 的 install 语句从 .whl 文件安装就好了。
不仅如此,官方提供了详细的 安装指南,它会手把手教你怎么将其安装到自己的环境中。
一、柱形图
Excel 中的簇状柱形图和堆叠柱形图是柱形图的两种常见变体。簇状柱形图可以直接比较不同类别的值,而堆叠柱形图既可以显示每个类别的总数,也可以显示其各个组成部分的比例。本段将介绍如何通过代码在 Excel 中生成簇状或堆叠柱形图。
Python 创建簇状柱形图
当你想要对比几个门店几个季度的营业额时;当你要比较几个班级几次考试成绩的差异时;当你必须分析几类产品几个工厂的次品概率时,簇状柱形图可以帮你分块对比几类数据,一目了然。
Spire.XLS for Python 提供的 Worksheet.Charts.Add(ExcelChartType chartType) 方法支持在工作表中添加图表。其中的 ExcelChartType 枚举包含 MS Excel 中预定义的各种图表类型。
关键步骤如下:
- 创建一个 Workbook 对象。
- 使用 Workbook.LoadFromFile() 方法加载一个待处理的 Excel 文件
- 使用 Workbook.Worksheets[index] 属性获取指定工作表。
- 使用 Worksheet.Charts.Add(ExcelChartType.ColumnClustered) 方法在工作表中添加一个簇状柱形图。
- 使用 Chart.DataRange 属性设置图表数据范围。
- 使用 Chart 对象下的各属性设置图表的位置、标题、样式等。
- 使用 Workbook.SaveToFile() 方法保存结果文件。
from spire.xls import *from spire.xls.common import *# 创建 Workbook 对象workbook = Workbook()# 加载Excel文件workbook.LoadFromFile(\"Microsoft Excel 工作表.xlsx\")# 获取第一个工作表sheet = workbook.Worksheets[0]# 添加一个簇状柱形图到工作表chart = sheet.Charts.Add(ExcelChartType.ColumnClustered)# 设置图表数据范围chart.DataRange = sheet.Range[\"A1:D6\"]chart.SeriesDataFromRange = False# 设置图表位置chart.LeftColumn = 5chart.TopRow = 1chart.RightColumn = 14chart.BottomRow = 21# 设置图表标题chart.ChartTitle = \"儿童网络书店图书销售情况图\"chart.ChartTitleArea.IsBold = Truechart.ChartTitleArea.Size = 12# 设置坐标轴标题chart.PrimaryCategoryAxis.Title = \"图书类别\"chart.PrimaryCategoryAxis.Font.IsBold = Truechart.PrimaryCategoryAxis.TitleArea.IsBold = Truechart.PrimaryValueAxis.Title = \"销售额\"chart.PrimaryValueAxis.HasMajorGridLines = Falsechart.PrimaryValueAxis.TitleArea.IsBold = Truechart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90# 设置图表系列的颜色、重叠、间隙宽度和数据标签series = chart.Seriesfor i in range(len(series)): cs = series[i] cs.Format.Options.IsVaryColor = True cs.Format.Options.Overlap = -50 cs.Format.Options.GapWidth = 350 cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True# 设置图例位置chart.Legend.Position = LegendPositionType.Right# 保存结果文档workbook.SaveToFile(\"簇状柱形图.xlsx\", ExcelVersion.Version2016)
程序自动生成的簇状柱形图
Python 创建堆叠柱形图
现在你要关注于几个门店占各个季度的营业的额比例变化,同时还要注意各个季度的总营业额变化。堆叠柱形图将数据分类堆叠,用直观的面积来比较不同的时间的不同变量的比例关系,同时展现总体的变化趋势,是处理这种复杂需求的最佳解决方案。
创建堆叠柱形图的过程与创建簇状柱形图基本相同。唯一不同的是,你需要将 Excel 图表类型从 ColumnClustered 更改为 ColumnStacked。
关键步骤如下:
- 创建一个 Workbook 对象。
- 使用 Workbook.LoadFromFile() 方法加载一个待处理的 Excel 文件
- 使用 Workbook.Worksheets[index] 属性获取指定工作表。
- 使用 Worksheet.Charts.Add(ExcelChartType.ColumnStacked) 方法在工作表中添加一个堆叠柱形图。
- 使用 Chart.DataRange 属性设置图表数据范围。
- 使用 Chart 对象下的各属性设置图表的位置、标题、样式等。
- 使用 Workbook.SaveToFile() 方法保存结果文件。
from spire.xls import *from spire.xls.common import *# 创建 Workbook 对象workbook = Workbook()# 加载Excel文件workbook.LoadFromFile(\"Microsoft Excel 工作表.xlsx\")# 获取第一个工作表sheet = workbook.Worksheets[0]# 添加一个堆叠柱形图到工作表chart = sheet.Charts.Add(ExcelChartType.ColumnStacked)# 设置图表数据范围chart.DataRange = sheet.Range[\"A1:D6\"]chart.SeriesDataFromRange = False# 设置图表位置chart.LeftColumn = 5chart.TopRow = 1chart.RightColumn = 14chart.BottomRow = 21# 设置图表标题chart.ChartTitle = \"儿童网络书店图书销售情况图\"chart.ChartTitleArea.IsBold = Truechart.ChartTitleArea.Size = 12# 设置坐标轴标题chart.PrimaryCategoryAxis.Title = \"图书类别\"chart.PrimaryCategoryAxis.Font.IsBold = Truechart.PrimaryCategoryAxis.TitleArea.IsBold = Truechart.PrimaryValueAxis.Title = \"销售额\"chart.PrimaryValueAxis.HasMajorGridLines = Falsechart.PrimaryValueAxis.TitleArea.IsBold = Truechart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90# 设置图表系列的颜色、重叠、间隙宽度和数据标签series = chart.Seriesfor i in range(len(series)): cs = series[i] cs.Format.Options.IsVaryColor = True cs.Format.Options.GapWidth = 270 cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True cs.DataPoints.DefaultDataPoint.DataLabels.Position = DataLabelPositionType.Inside# 设置图例位置chart.Legend.Position = LegendPositionType.Right# 保存结果文档workbook.SaveToFile(\"堆叠柱形图.xlsx\", ExcelVersion.Version2016)
程序自动生成的堆叠柱形图
二、条形图
Excel 中的条形图是一种使用矩形条来表示分类数据的图表。它与柱形图相似,但其矩形条是从 Y 轴开始水平延伸的。每个矩形条的长度与特定类别或组别所代表的值相对应,通过比较条形图的长度可以快速识别数据变化、趋势或排名。本段将介绍如何在 Excel 中创建簇状条形图或堆叠条形图。
Python 创建簇状条形图
当类别名称较长或类别数量较多时,传统的柱形图可能导致标签重叠难以阅读。簇状条形图通过横向布局,能更好地展示多类别数据对比。
Spire.XLS for Python 提供的 Worksheet.Chart.Add(ExcelChartType chartType) 方法可用于在工作表中添加图表。要在 Excel 中添加簇状条形图,可以将图表类型设置为 BarClustered。
关键步骤如下:
- 创建一个 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载一个待处理的 Excel 文件
- 使用 Workbook.Worksheets[index] 属性获取特定工作表。
- 使用 Worksheet.Chart.Add(ExcelChartType.BarClustered) 方法在工作表中添加簇状条形图。
- 使用 Chart.DataRange 属性设置图表的数据范围。
- 设置图表的位置、标题、类别轴和数值轴。
- 使用 Workbook.SaveToFile() 方法保存结果文件。
from spire.xls.common import *from spire.xls import *# 创建Workbook对象workbook = Workbook()# 加载Excel文件workbook.LoadFromFile(\"Microsoft Excel 工作表.xlsx\")# 获取第一张工作表sheet = workbook.Worksheets[0]# 在工作表中添加簇状条形图chart = sheet.Charts.Add(ExcelChartType.BarClustered)# 设置图表的数据范围chart.DataRange = sheet.Range[\"A1:D6\"]chart.SeriesDataFromRange = False# 设置图表位置chart.LeftColumn = 1chart.TopRow = 7chart.RightColumn = 11chart.BottomRow = 38# 设置图表标题及其样式chart.ChartTitle = \"儿童网络书店图书销售情况图\"chart.ChartTitleArea.IsBold = Truechart.ChartTitleArea.Size = 20# 设置分类轴名称及样式chart.PrimaryCategoryAxis.Title = \"图书类别\"chart.PrimaryCategoryAxis.Font.IsBold = Truechart.PrimaryCategoryAxis.TitleArea.IsBold = Truechart.PrimaryCategoryAxis.TitleArea.TextRotationAngle = 90# 设置数值轴名称及样式chart.PrimaryValueAxis.Title = \"销售额\"chart.PrimaryValueAxis.HasMajorGridLines = Falsechart.PrimaryValueAxis.MinValue = 1000chart.PrimaryValueAxis.TitleArea.IsBold = True# 显示数据标签for cs in chart.Series: cs.Format.Options.IsVaryColor = True cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True# 设置图例位置chart.Legend.Position = LegendPositionType.Right# 保存结果文件workbook.SaveToFile(\"簇状条形图.xlsx\", ExcelVersion.Version2016)workbook.Dispose()
程序自动生成的簇状条形图
Python 创建堆叠条形图
当需要横向展示各部分占比和整体对比时,堆叠条形图能同时满足这两方面需求,特别适合比较多个类别的构成差异。
与柱形图类似,堆叠条形图和簇状条形图的实现区别非常小,要创建堆叠条形图,只需将 Excel 图表类型更改为 BarStacked 即可。
关键步骤如下:
- 创建一个 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载一个待处理的 Excel 文件
- 使用 Workbook.Worksheets[index] 属性获取特定工作表。
- 使用 Worksheet.Chart.Add(ExcelChartType.BarStacked) 方法在工作表中添加堆叠条形图。
- 使用 Chart.DataRange 属性设置图表的数据范围。
- 设置图表的位置、标题、类别轴和数值轴。
- 使用 Workbook.SaveToFile() 方法保存结果文件。
from spire.xls.common import *from spire.xls import *# 创建Workbook对象workbook = Workbook()# 加载Excel文件workbook.LoadFromFile(\"Microsoft Excel 工作表.xlsx\")# 获取第一张工作表sheet = workbook.Worksheets[0]# 在工作表中添加簇状条形图chart = sheet.Charts.Add(ExcelChartType.BarStacked)# 设置图表的数据范围chart.DataRange = sheet.Range[\"A1:D6\"]chart.SeriesDataFromRange = False# 设置图表位置chart.LeftColumn = 1chart.TopRow = 7chart.RightColumn = 11chart.BottomRow = 38# 设置图表标题及其样式chart.ChartTitle = \"儿童网络书店图书销售情况图\"chart.ChartTitleArea.IsBold = Truechart.ChartTitleArea.Size = 20# 设置分类轴名称及样式chart.PrimaryCategoryAxis.Title = \"图书类别\"chart.PrimaryCategoryAxis.Font.IsBold = Truechart.PrimaryCategoryAxis.TitleArea.IsBold = Truechart.PrimaryCategoryAxis.TitleArea.TextRotationAngle = 90# 设置数值轴名称及样式chart.PrimaryValueAxis.Title = \"销售额\"chart.PrimaryValueAxis.HasMajorGridLines = Falsechart.PrimaryValueAxis.MinValue = 1000chart.PrimaryValueAxis.TitleArea.IsBold = True# 显示数据标签for cs in chart.Series: cs.Format.Options.IsVaryColor = True cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True# 设置图例位置chart.Legend.Position = LegendPositionType.Right# 保存结果文件workbook.SaveToFile(\"堆叠条形图.xlsx\", ExcelVersion.Version2016)workbook.Dispose()
程序自动生成的堆叠条形图
三、总结与拓展
相信大家都已经注意到,以上的所有示例中,示例代码的样式都是大体相同的,只有 Worksheet.Chart.Add() 方法的参数不同。
如此看来,我们只需要在创建图表时,使用不同的 ExcelChartType 枚举值传入 Worksheet.Chart.Add() 方法中,就可以实现不同种类的图表:
- 簇状柱形图:ExcelChartType.ColumnClustered
- 堆叠柱形图:ExcelChartType.ColumnStacked
- 簇状条形图:ExcelChartType.BarClustered
- 堆叠条形图:ExcelChartType.BarStacked
结语
通过本文介绍的四种核心图表创建方法,我们可以高效解决多种数据可视化需求:
- 簇状柱形图:垂直对比不同类别的数据差异
- 堆叠柱形图:展示部分与整体的构成关系
- 簇状条形图:优化多类别数据的横向对比
- 堆叠条形图:横向展示部分占比与整体对比
Spire.XLS for Python 的图表创建功能能显著提升数据处理效率,特别适用于自动化生成月度/季度销售报告、批量创建多份数据可视化报表、动态调整图表类型满足不同汇报需求,甚至可以集成到数据分析流程中实现全自动化。
掌握这些技能后,你可以将更多精力放在数据分析和决策上,而非繁琐的图表制作过程。如需了解更多高级功能或在实际应用中遇到问题,请访问 Spire.XLS for Python 中文教程 获取详细指导和技术支持。
拓展学习
Spire.XLS for Python 中文教程https://www.e-iceblue.cn/xlsforpython/spire-pdf-for-python-program-guide-content.htmlPython Excel数据透视表实战 - 创建/排序/折叠全解析
https://blog.csdn.net/E_ICEBLUE/article/details/149230316Python Excel 转 PDF 指南 - Spire.XLS 高效自动化
https://blog.csdn.net/E_ICEBLUE/article/details/149324581