在日常数据分析和报告制作中,你是否遇到过这些问题:需要手动为几十份销售报告创建图表,耗时且易出错;客户要求在不同场景下展示不同维度的数据对比,却不知如何选择合适的图表类型;生成的图表样式单调,无法直观展示数据关系?
图表是 excel 中强大的数据可视化工具,能将复杂的数据转化为直观的信息。spire.xls for python 提供了便捷的图表创建功能,让开发者能够仅用几行代码就创建各种专业图表,包括柱形图、条形图、雷达图、折线图等。今天就让我们来看看,怎么使用 spire.xls 创建柱形图和条形图。
前期准备
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 = 5 chart.toprow = 1 chart.rightcolumn = 14 chart.bottomrow = 21 # 设置图表标题 chart.charttitle = "儿童网络书店图书销售情况图" chart.charttitlearea.isbold = true chart.charttitlearea.size = 12 # 设置坐标轴标题 chart.primarycategoryaxis.title = "图书类别" chart.primarycategoryaxis.font.isbold = true chart.primarycategoryaxis.titlearea.isbold = true chart.primaryvalueaxis.title = "销售额" chart.primaryvalueaxis.hasmajorgridlines = false chart.primaryvalueaxis.titlearea.isbold = true chart.primaryvalueaxis.titlearea.textrotationangle = 90 # 设置图表系列的颜色、重叠、间隙宽度和数据标签 series = chart.series for 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 = 5 chart.toprow = 1 chart.rightcolumn = 14 chart.bottomrow = 21 # 设置图表标题 chart.charttitle = "儿童网络书店图书销售情况图" chart.charttitlearea.isbold = true chart.charttitlearea.size = 12 # 设置坐标轴标题 chart.primarycategoryaxis.title = "图书类别" chart.primarycategoryaxis.font.isbold = true chart.primarycategoryaxis.titlearea.isbold = true chart.primaryvalueaxis.title = "销售额" chart.primaryvalueaxis.hasmajorgridlines = false chart.primaryvalueaxis.titlearea.isbold = true chart.primaryvalueaxis.titlearea.textrotationangle = 90 # 设置图表系列的颜色、重叠、间隙宽度和数据标签 series = chart.series for 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 = 1 chart.toprow = 7 chart.rightcolumn = 11 chart.bottomrow = 38 # 设置图表标题及其样式 chart.charttitle = "儿童网络书店图书销售情况图" chart.charttitlearea.isbold = true chart.charttitlearea.size = 20 # 设置分类轴名称及样式 chart.primarycategoryaxis.title = "图书类别" chart.primarycategoryaxis.font.isbold = true chart.primarycategoryaxis.titlearea.isbold = true chart.primarycategoryaxis.titlearea.textrotationangle = 90 # 设置数值轴名称及样式 chart.primaryvalueaxis.title = "销售额" chart.primaryvalueaxis.hasmajorgridlines = false chart.primaryvalueaxis.minvalue = 1000 chart.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 = 1 chart.toprow = 7 chart.rightcolumn = 11 chart.bottomrow = 38 # 设置图表标题及其样式 chart.charttitle = "儿童网络书店图书销售情况图" chart.charttitlearea.isbold = true chart.charttitlearea.size = 20 # 设置分类轴名称及样式 chart.primarycategoryaxis.title = "图书类别" chart.primarycategoryaxis.font.isbold = true chart.primarycategoryaxis.titlearea.isbold = true chart.primarycategoryaxis.titlearea.textrotationangle = 90 # 设置数值轴名称及样式 chart.primaryvalueaxis.title = "销售额" chart.primaryvalueaxis.hasmajorgridlines = false chart.primaryvalueaxis.minvalue = 1000 chart.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 的图表创建功能能显著提升数据处理效率,特别适用于自动化生成月度/季度销售报告、批量创建多份数据可视化报表、动态调整图表类型满足不同汇报需求,甚至可以集成到数据分析流程中实现全自动化。
到此这篇关于python使用spire.xls创建柱形图和条形图的文章就介绍到这了,更多相关python创建柱形图和条形图内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论