条形图是一种使用矩形条来表示分类数据的图表。它与柱形图较为相似,但其矩形条是从 y 轴开始水平延伸的。每个矩形条的长度与特定类别或组别所代表的值相对应,通过比较条形图的长度可以快速识别数据变化、趋势或排名。本文将介绍如何使用 spire.xls for python 在 excel 中创建簇状条形图或堆叠条形图。
安装 spire.xls for python
此教程需要 spire.xls for python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 vs code 中。
pip install spire.xls
如果您不确定如何安装,请参考: 如何在 vs code 中安装 spire.xls for python
python 在 excel 中创建簇状条形图
spire.xls for python 提供的 worksheet.chart.add(excelcharttype charttype) 方法可用于在工作表中添加图表。要在 excel 中添加簇状条形图,可以将图表类型设置为 barclustered。具体步骤如下:
- 创建一个 workbook 类的对象。
- 使用 workbook.worksheets[index] 属性获取特定工作表。
- 将图表数据添加到指定单元格并设置单元格样式。
- 使用 worksheet.chart.add(excelcharttype.barclustered) 方法在工作表中添加簇状条形图。
- 使用 chart.datarange 属性设置图表的数据范围。
- 设置图表的位置、标题、类别轴和数值轴。
- 使用 workbook.savetofile() 方法保存结果文件。
- python
from spire.xls.common import *
from spire.xls import *
# 创建workbook对象
workbook = workbook()
# 获取第一张工作表并命名
sheet = workbook.worksheets[0]
sheet.name = "clusteredbar"
# 将图表数据添加到指定单元格
sheet.range["a1"].value = "季度"
sheet.range["a2"].value = "q1"
sheet.range["a3"].value = "q2"
sheet.range["a4"].value = "q3"
sheet.range["a5"].value = "q4"
sheet.range["b1"].value = "销售1组"
sheet.range["b2"].numbervalue = 3000
sheet.range["b3"].numbervalue = 8000
sheet.range["b4"].numbervalue = 9000
sheet.range["b5"].numbervalue = 8500
sheet.range["c1"].value = "销售2组"
sheet.range["c2"].numbervalue = 7000
sheet.range["c3"].numbervalue = 2000
sheet.range["c4"].numbervalue = 5000
sheet.range["c5"].numbervalue = 4200
# 设置单元格样式
sheet.range["a1:c1"].rowheight = 18
sheet.range["a1:c1"].style.color = color.get_black()
sheet.range["a1:c1"].style.font.color = color.get_white()
sheet.range["a1:c1"].style.font.isbold = true
sheet.range["a1:c1"].style.verticalalignment = verticalaligntype.center
sheet.range["a1:c1"].style.horizontalalignment = horizontalaligntype.center
sheet.range["a2:a5"].style.horizontalalignment = horizontalaligntype.center
sheet.range["b2:c5"].style.numberformat = "\"$\"#,##0"
# 在工作表中添加簇状条形图
chart = sheet.charts.add(excelcharttype.barclustered)
# 设置图表的数据范围
chart.datarange = sheet.range["a1:c5"]
chart.seriesdatafromrange = false
# 设置图表位置
chart.leftcolumn = 1
chart.toprow = 6
chart.rightcolumn = 11
chart.bottomrow = 29
# 设置图表标题及其样式
chart.charttitle = "每季度团队销售额对比"
chart.charttitlearea.isbold = true
chart.charttitlearea.size = 12
# 设置分类轴名称及样式
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.top
# 保存结果文件
workbook.savetofile("簇状条形图.xlsx", excelversion.version2016)
workbook.dispose()
python 在 excel 中创建堆叠条形图
要创建堆叠条形图,只需将 excel 图表类型更改为 barstacked。具体步骤如下:
- 创建一个 workbook 类的对象。
- 使用 workbook.worksheets[index] 属性获取特定工作表。
- 将图表数据添加到指定单元格并设置单元格样式。
- 使用 worksheet.chart.add(excelcharttype.barstacked) 方法在工作表中添加堆叠条形图。
- 使用 chart.datarange 属性设置图表的数据范围。
- 设置图表的位置、标题、类别轴和数值轴。
- 使用 workbook.savetofile() 方法保存结果文件。
- python
from spire.xls.common import *
from spire.xls import *
# 创建workbook对象
workbook = workbook()
# 获取第一张工作表并命名
sheet = workbook.worksheets[0]
sheet.name = "clusteredbar"
# 将图表数据添加到指定单元格
sheet.range["a1"].value = "季度"
sheet.range["a2"].value = "q1"
sheet.range["a3"].value = "q2"
sheet.range["a4"].value = "q3"
sheet.range["a5"].value = "q4"
sheet.range["b1"].value = "销售1组"
sheet.range["b2"].numbervalue = 3000
sheet.range["b3"].numbervalue = 8000
sheet.range["b4"].numbervalue = 9000
sheet.range["b5"].numbervalue = 8500
sheet.range["c1"].value = "销售2组"
sheet.range["c2"].numbervalue = 7000
sheet.range["c3"].numbervalue = 2000
sheet.range["c4"].numbervalue = 5000
sheet.range["c5"].numbervalue = 4200
# 设置单元格样式
sheet.range["a1:c1"].rowheight = 18
sheet.range["a1:c1"].style.color = color.get_black()
sheet.range["a1:c1"].style.font.color = color.get_white()
sheet.range["a1:c1"].style.font.isbold = true
sheet.range["a1:c1"].style.verticalalignment = verticalaligntype.center
sheet.range["a1:c1"].style.horizontalalignment = horizontalaligntype.center
sheet.range["a2:a5"].style.horizontalalignment = horizontalaligntype.center
sheet.range["b2:c5"].style.numberformat = "\"$\"#,##0"
# 在工作表中添加堆叠条形图
chart = sheet.charts.add(excelcharttype.barstacked)
# 设置图表的数据范围
chart.datarange = sheet.range["a1:c5"]
chart.seriesdatafromrange = false
# 设置图表位置
chart.leftcolumn = 1
chart.toprow = 6
chart.rightcolumn = 11
chart.bottomrow = 29
# 设置图表标题及其样式
chart.charttitle = "每季度团队销售额对比"
chart.charttitlearea.isbold = true
chart.charttitlearea.size = 12
# 设置分类轴名称及样式
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.top
# 保存结果文件
workbook.savetofile("堆叠条形图.xlsx", excelversion.version2016)
workbook.dispose()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。