条形图是一种使用矩形条来表示分类数据的图表。它与柱形图较为相似,但其矩形条是从 Y 轴开始水平延伸的。每个矩形条的长度与特定类别或组别所代表的值相对应,通过比较条形图的长度可以快速识别数据变化、趋势或排名。本文将介绍如何使用 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.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 天的临时许可证。