发布于2026-05-29 阅读(0)
扫一扫,手机访问

雷达图(Radar Chart)是一种很讨喜的多维数据可视化工具。你可以在一个紧凑的图形里同时对比多个变量在不同维度上的表现——不管是做绩效评估、能力分析,还是产品对比,它都能让数据之间的差异一目了然。这篇文章就手把手教你用 Python 在 Excel 里生成雷达图、填充雷达图,顺便还能按自己的喜好调一调样式。
先说说雷达图的几个硬核优点:
现实中它能派上用场的地方太多了:
要干活,得先安好工具。只需要一个库:
pip install Spire.XLS
Spire.XLS 是个挺完整的 Excel 操作库,创建、读取、修改、转换都能干,而且不用装微软 Office。对自动化处理来说非常顺手。
下面我们用一个销售数据场景来演示:假设有四种产品(自行车、汽车、卡车、巴士)在两个城市(巴黎、纽约)的销售数字。雷达图可以帮我们快速比较两种市场策略下的产品表现。
先创建 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.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.Sa veToFile("CreateRadarChart.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
结果预览:

几个关键 API 值得记一下:
sheet.Charts.Add():往工作表里塞一个图表对象chart.DataRange:指定数据来源范围,这里是 A1:C5chart.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.Sa veToFile("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 库,我们可以:
雷达图是多维对比的利器,尤其适合那种“同一个对象在不同维度上的表现”的比较场景。结合 Python 的批量处理能力,你可以一次性生成成百上千张雷达图,从数据到决策的距离一下子就拉近了。掌握了这些 API,下次做分析报告或者展示时,就多了一张王牌。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8