簇状柱形图和堆叠柱形图是柱形图的两种常见变体。簇状柱形图可以直接比较不同类别的值,而堆叠柱形图既可以显示每个类别的总数,也可以显示其各个组成部分的比例。 本文将介绍如何使用 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-for-python
pip install plum-dispatch==1.7.4
如果您不清楚如何安装,请参考此教程: 如何在 vs code中安装 spire.xls for python
用 python 在 excel 中创建簇状柱形图
spire.xls for python 提供的 worksheet.charts.add(excelcharttype charttype) 方法支持在工作表中添加图表。其中的 excelcharttype 枚举包含 ms excel 中预定义的各种图表类型。具体步骤如下:
- 创建一个workbook对象。
- 使用 workbook.worksheets[index] 属性获取指定工作表。
- 在指定单元格中写入数据。
- 使用 worksheet.charts.add(excelcharttype.columnclustered) 方法在工作表中添加一个簇状柱形图。
- 使用 chart.datarange 属性设置图表数据范围。
- 使用 chart 对象下的各属性设置图表的位置、标题、样式等。
- 使用 workbook.savetofile() 方法保存结果文件。
- python
from spire.xls import *
from spire.common import *
# 创建 workbook 对象
workbook = workbook()
# 获取第一个工作表
sheet = workbook.worksheets[0]
# 设置图表数据
sheet.range["a1"].value = "产品"
sheet.range["a2"].value = "短裤"
sheet.range["a3"].value = "牛仔裤"
sheet.range["a4"].value = "帽子"
sheet.range["a5"].value = "t恤"
sheet.range["b1"].value = "店铺1"
sheet.range["b2"].numbervalue = 35000
sheet.range["b3"].numbervalue = 46000
sheet.range["b4"].numbervalue = 28000
sheet.range["b5"].numbervalue = 51000
sheet.range["c1"].value = "店铺2"
sheet.range["c2"].numbervalue = 41000
sheet.range["c3"].numbervalue = 32000
sheet.range["c4"].numbervalue = 38000
sheet.range["c5"].numbervalue = 40000
# 设置单元格样式
sheet.range["a1:c1"].rowheight = 15
sheet.range["a1:c1"].style.color = color.get_black()
sheet.range["a1:c1"].style.font.color = color.get_white()
sheet.range["a1:c1"].style.verticalalignment = verticalaligntype.center
sheet.range["a1:c1"].style.horizontalalignment = horizontalaligntype.center
# 添加一个簇状柱形图到工作表
chart = sheet.charts.add(excelcharttype.columnclustered)
# 设置图表数据范围
chart.datarange = sheet.range["a1:c5"]
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.top
# 保存结果文档
workbook.savetofile("簇状柱形图.xlsx", excelversion.version2016)
用 python 在 excel 中创建堆叠柱形图
创建堆叠柱形图的过程与创建簇状柱形图类似。唯一不同的是,你需要将 excel 图表类型从 columnclustered 更改为 columnstacked。具体步骤如下:
- 创建一个workbook对象。
- 使用 workbook.worksheets[index] 属性获取指定工作表。
- 在指定单元格中写入数据。
- 使用 worksheet.charts.add(excelcharttype.columnstacked) 方法在工作表中添加一个堆叠柱形图。
- 使用 chart.datarange 属性设置图表数据范围。
- 使用 chart 对象下的各属性设置图表的位置、标题、样式等。
- 使用 workbook.savetofile() 方法保存结果文件。
- python
from spire.xls import *
from spire.common import *
# 创建 workbook 对象
workbook = workbook()
# 获取第一个工作表
sheet = workbook.worksheets[0]
# 设置图表数据
sheet.range["a1"].value = "产品"
sheet.range["a2"].value = "短裤"
sheet.range["a3"].value = "牛仔裤"
sheet.range["a4"].value = "帽子"
sheet.range["a5"].value = "t恤"
sheet.range["b1"].value = "店铺1"
sheet.range["b2"].numbervalue = 35000
sheet.range["b3"].numbervalue = 46000
sheet.range["b4"].numbervalue = 28000
sheet.range["b5"].numbervalue = 51000
sheet.range["c1"].value = "店铺2"
sheet.range["c2"].numbervalue = 41000
sheet.range["c3"].numbervalue = 32000
sheet.range["c4"].numbervalue = 38000
sheet.range["c5"].numbervalue = 40000
# 设置单元格样式
sheet.range["a1:c1"].rowheight = 15
sheet.range["a1:c1"].style.color = color.get_black()
sheet.range["a1:c1"].style.font.color = color.get_white()
sheet.range["a1:c1"].style.verticalalignment = verticalaligntype.center
sheet.range["a1:c1"].style.horizontalalignment = horizontalaligntype.center
# 添加一个堆叠柱形图到工作表
chart = sheet.charts.add(excelcharttype.columnstacked)
# 设置图表数据范围
chart.datarange = sheet.range["a1:c5"]
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.top
# 保存结果文档
workbook.savetofile("堆叠柱形图.xlsx", excelversion.version2016)
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。