使用Python创建Excel雷达图的完整教学
作者:用户835629078051

雷达图(Radar Chart)是一种多维数据可视化工具,特别适合比较多个变量在不同维度上的表现。它在性能评估、能力分析、产品对比等场景中非常实用。本文将介绍如何使用 Python 在 Excel 中创建雷达图和填充雷达图,并对图表进行自定义设置。
为什么使用雷达图
雷达图具有以下优势:
- 多维度对比:可以在同一图表中展示多个维度的数据
- 直观的性能分析:清晰显示各项指标的强弱分布
- 模式识别:通过图形形状快速识别数据模式和异常
- 适用于评估场景:如员工绩效评估、产品特性对比、技能矩阵分析等
典型应用场景包括:
- 员工多维度绩效评估(沟通能力、技术能力、领导力等)
- 产品功能对比(价格、性能、易用性、可靠性等)
- 市场分析(不同地区的销售表现)
- 能力模型可视化(技能掌握程度)
环境准备
首先需要安装 Spire.XLS for Python 库:
pip install Spire.XLS
Spire.XLS 提供了完整的 Excel 文件操作 API,支持创建、读取、修改和转换 Excel 文档,无需安装 Microsoft Excel。
创建基础雷达图
下面我们将创建一个展示不同地区产品销售情况的雷达图。示例数据包含三种产品(自行车、汽车、卡车)在两个城市(巴黎、纽约)的销售数据。
步骤 1:准备数据并创建工作表
首先创建 Excel 工作簿并添加示例数据:
from spire.xls import *
from spire.xls.common import *
def CreateChartData(sheet):
# 设置产品标题
sheet.Range["A1"].Value = "Product"
sheet.Range["A2"].Value = "Bikes"
sheet.Range["A3"].Value = "Cars"
sheet.Range["A4"].Value = "Trucks"
sheet.Range["A5"].Value = "Buses"
# 设置巴黎销售数据
sheet.Range["B1"].Value = "Paris"
sheet.Range["B2"].NumberValue = 4000
sheet.Range["B3"].NumberValue = 23000
sheet.Range["B4"].NumberValue = 4000
sheet.Range["B5"].NumberValue = 30000
# 设置纽约销售数据
sheet.Range["C1"].Value = "New York"
sheet.Range["C2"].NumberValue = 30000
sheet.Range["C3"].NumberValue = 7600
sheet.Range["C4"].NumberValue = 18000
sheet.Range["C5"].NumberValue = 8000
# 设置标题行字体加粗
sheet.Range["A1:C1"].Style.Font.IsBold = True
# 为不同行设置背景色
sheet.Range["A2:C2"].Style.KnownColor = ExcelColors.LightYellow
sheet.Range["A3:C3"].Style.KnownColor = ExcelColors.LightGreen1
sheet.Range["A4:C4"].Style.KnownColor = ExcelColors.LightOrange
sheet.Range["A5:C5"].Style.KnownColor = ExcelColors.LightTurquoise
# 设置边框样式
style = sheet.Range["A1:C5"].Style
borders = style.Borders
# 设置上边框
topborder = borders[BordersLineType.EdgeTop]
topborder.Color = Color.FromRgb(0, 0, 128)
borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin
# 设置下边框
borders[BordersLineType.EdgeBottom].Color = Color.FromRgb(0, 0, 128)
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin
# 设置左边框
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].Color = Color.FromRgb(0, 0, 128)
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin
# 设置右边框
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].Color = Color.FromRgb(0, 0, 128)
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin
# 设置数字格式为货币格式
sheet.Range["B2:C5"].Style.NumberFormat = "\"$\"#,##0"
# 创建工作簿
workbook = Workbook()
workbook.CreateEmptySheets(1)
sheet = workbook.Worksheets[0]
sheet.Name = "Chart data"
sheet.GridLinesVisible = False
# 写入图表数据
CreateChartData(sheet)
这段代码完成了以下任务:
- 创建了包含产品和地区销售数据的表格
- 设置了标题行的粗体样式
- 为不同数据行应用了不同的背景色,提高可读性
- 添加了深蓝色边框,使表格更加美观
- 将数值格式化为美元货币格式
步骤 2:添加雷达图并配置属性
接下来在工作表中添加雷达图并设置其属性:
# 添加新图表到工作表
chart = sheet.Charts.Add()
# 设置图表位置
chart.LeftColumn = 1
chart.TopRow = 6
chart.RightColumn = 11
chart.BottomRow = 29
# 设置图表数据范围
chart.DataRange = sheet.Range["A1:C5"]
chart.SeriesDataFromRange = False
# 设置图表类型为雷达图
chart.ChartType = ExcelChartType.Radar
# 设置图表标题
chart.ChartTitle = "Sale market by region"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 隐藏绘图区背景
chart.PlotArea.Fill.Visible = False
# 设置图例位置
chart.Legend.Position = LegendPositionType.Corner
# 保存文档
workbook.SaveToFile("CreateRadarChart.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
结果预览:

关键 API 说明:
sheet.Charts.Add():向工作表添加新图表对象chart.DataRange:指定图表使用的数据范围,这里使用 A1:C5 区域chart.SeriesDataFromRange = False:表示数据系列不按行组织,而是按列组织ExcelChartType.Radar:设置图表类型为雷达图(线条型)chart.ChartTitle:设置图表标题文本chart.PlotArea.Fill.Visible = False:隐藏绘图区背景,使图表更简洁LegendPositionType.Corner:将图例放置在角落位置
生成的雷达图将以线条形式展示各产品在两个地区的销售数据,便于对比分析。
创建填充雷达图
除了标准雷达图,还可以创建填充雷达图(Radar Filled),这种类型会用颜色填充数据点之间的区域,视觉效果更加突出。
# 创建工作簿
workbook = Workbook()
workbook.CreateEmptySheets(1)
sheet = workbook.Worksheets[0]
sheet.Name = "Chart data"
sheet.GridLinesVisible = False
# 写入图表数据
CreateChartData(sheet)
# 添加新图表到工作表
chart = sheet.Charts.Add()
# 设置图表位置
chart.LeftColumn = 1
chart.TopRow = 6
chart.RightColumn = 11
chart.BottomRow = 29
# 设置图表数据范围
chart.DataRange = sheet.Range["A1:C5"]
chart.SeriesDataFromRange = False
# 设置图表类型为填充雷达图
chart.ChartType = ExcelChartType.RadarFilled
# 设置图表标题
chart.ChartTitle = "Sale market by region"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 隐藏绘图区背景
chart.PlotArea.Fill.Visible = False
# 设置图例位置
chart.Legend.Position = LegendPositionType.Corner
# 保存文档
workbook.SaveToFile("CreateRadarChart_Fill.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
结果预览:

填充雷达图与普通雷达图的主要区别在于:
- ExcelChartType.RadarFilled:使用填充类型,数据点之间的区域会被颜色填充
- 更适合强调数据范围和面积对比
- 视觉上更加醒目,适合演示和报告场景
自定义雷达图样式
创建基本雷达图后,可以进一步自定义图表的各个元素,以满足特定的展示需求。
调整数据系列颜色
可以为不同的数据系列设置不同的颜色,提高图表的可区分度:
# 获取第一个数据系列并设置颜色 series = chart.Series[0] series.Format.LineProperties.Color = Color.FromRgb(255, 0, 0) # 红色 series.Format.LineProperties.Width = 2.5 # 获取第二个数据系列并设置颜色 series2 = chart.Series[1] series2.Format.LineProperties.Color = Color.FromRgb(0, 0, 255) # 蓝色 series2.Format.LineProperties.Width = 2.5
自定义坐标轴
可以调整雷达图的坐标轴属性,包括刻度、标签格式等:
# 获取值轴 valueAxis = chart.PrimaryValueAxis # 设置坐标轴标题 valueAxis.Title = "Sales Amount" valueAxis.TitleArea.IsBold = True valueAxis.TitleArea.Size = 10 # 设置坐标轴数字格式 valueAxis.NumberFormat = "$#,##0" # 设置主要网格线样式 valueAxis.MajorGridLines.LineProperties.Color = Color.FromRgb(200, 200, 200) valueAxis.MajorGridLines.LineProperties.DashStyle = LineDashStyleType.Dash
添加数据标签
为数据点添加标签可以更清晰地显示具体数值:
# 为每个系列添加数据标签
for series in chart.Series:
seriePoints = series.DataPoints
for point in seriePoints:
point.DataLabels.HasValue = True
point.DataLabels.Position = DataLabelPositionType.Above
调整图表大小和位置
可以根据需要调整图表在工作表中的位置和大小:
# 设置图表占据的行列范围 chart.LeftColumn = 1 # 起始列 chart.TopRow = 6 # 起始行 chart.RightColumn = 11 # 结束列 chart.BottomRow = 29 # 结束行 # 或者使用像素级精确控制 chart.Top = 100 # 顶部位置(像素) chart.Left = 50 # 左侧位置(像素) chart.Width = 500 # 宽度(像素) chart.Height = 400 # 高度(像素)
实际应用建议
在实际项目中使用雷达图时,可以考虑以下最佳实践:
数据准备
- 确保所有维度使用相同的度量单位或已标准化
- 数据维度不宜过多,建议控制在 5-8 个维度以内
- 为每个维度提供清晰的标签说明
视觉优化
- 使用对比明显的颜色区分不同数据系列
- 适当调整线条宽度和透明度,避免重叠时难以辨认
- 添加数据标签时注意位置,避免遮挡
交互增强
- 在 Web 应用中,可以结合 JavaScript 库实现交互式雷达图
- 添加悬停提示显示详细数值
- 支持动态切换显示/隐藏特定数据系列
适用场景
- 绩效评估系统:展示员工在多维度考核中的表现
- 产品对比工具:比较不同产品的各项指标
- 技能矩阵:可视化团队成员的技能分布
- 竞争分析:对比企业与竞争对手的各项指标
总结
本文介绍了如何使用 Python 在 Excel 中创建和自定义雷达图。通过 Spire.XLS 库,我们可以:
- 轻松创建标准雷达图和填充雷达图
- 自定义图表的颜色、位置、标题等属性
- 调整坐标轴、图例和数据标签的样式
- 将雷达图应用于各种数据分析和可视化场景
雷达图是多维度数据分析的有力工具,特别适合需要同时比较多个变量的场景。结合 Python 的自动化能力,可以批量生成雷达图报表,大大提高数据分析效率。
通过灵活运用这些 API,您可以根据具体需求创建出专业、美观的雷达图,为数据分析和决策提供有力支持。
以上就是使用Python创建Excel雷达图的完整教学的详细内容,更多关于Python创建Excel雷达图的资料请关注脚本之家其它相关文章!
