雷达图是分析多维度数据的利器,能直观展示不同变量间的对比关系。本文将详解Python创建Excel雷达图的全过程,包括数据准备、图表生成和样式优化技巧。
雷达图具有以下优势:
典型应用场景包括:
首先需要安装 Spire.XLS for Python 库:
pip install Spire.XLS
Spire.XLS 提供了完整的 Excel 文件操作 API,支持创建、读取、修改和转换 Excel 文档,无需安装 Microsoft Excel。
下面我们将创建一个展示不同地区产品销售情况的雷达图。示例数据包含三种产品(自行车、汽车、卡车)在两个城市(巴黎、纽约)的销售数据。
首先创建 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)
这段代码完成了以下任务:
接下来在工作表中添加雷达图并设置其属性:
# 添加新图表到工作表
chart = sheet.Charts.Add()# 设置图表位置
chart.LeftColumn = 1
chart.TopRow = 6
chart.RightColumn = 11
chart.BottomRow = 29# 设置图表数据范围
chart.DataRange = sheet.RRange["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.RRange["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()

填充雷达图与普通雷达图的主要区别在于:
创建基本雷达图后,可以进一步自定义图表的各个元素,以满足特定的展示需求。
可以为不同的数据系列设置不同的颜色,提高图表的可区分度:
# 获取第一个数据系列并设置颜色
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 # 高度(像素)
在实际项目中使用雷达图时,可以考虑以下最佳实践:
数据准备
视觉优化
交互增强
适用场景
本文详细讲解了Python创建Excel雷达图的完整流程,从数据准备到图表美化,帮助您掌握这一强大的数据可视化工具。通过灵活运用Spire.XLS库,您可以轻松生成专业的多维度对比图表,为决策分析提供直观支持。