簇状柱形图和堆叠柱形图是柱形图的两种常见变体。簇状柱形图可以直接比较不同类别的值,而堆叠柱形图既可以显示每个类别的总数,也可以显示其各个组成部分的比例。 本文将介绍如何使用 Spire.XLS for Python 通过代码 在 Excel 中生成簇状或堆叠柱形图。
安装 Spire.XLS for Python
本方案需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它轻松安装到 Windows 中。
pip install Spire.XLS
如果您不清楚如何安装,请参考此教程: 如何在 Windows 中安装 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.xls.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.xls.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 天的临时许可证。