
1. 引言在数据可视化的世界里我们常常需要比较多个维度的数据。雷达图又称蜘蛛网图Spider Chart或星图Star Chart它像一张蜘蛛网将多个维度的数据轴从中心向外辐射用多边形连接各轴上的数据点从而形成一个个形状各异的“网”。今天我们就来一起探索这个既美观又实用的图形。2. 什么是雷达图雷达图是一种用于显示多变量数据的二维图表。它的基本构造如下中心点所有数据轴的起点。数据轴半径轴从中心向外延伸的射线每一根轴代表一个维度或指标。刻度环连接各轴等距点的同心多边形用于表示数值大小。数据多边形将同一对象在各轴上的取值点连接起来形成的封闭多边形。通过观察多边形的形状、面积和顶点位置我们可以快速比较不同对象的优劣。例如一个“全能型”选手的雷达图会非常饱满而一个“偏科型”选手的雷达图则会凹凸不平。3. 雷达图的应用场景雷达图在很多领域都有广泛的应用体育竞技比较运动员在速度、力量、耐力、技巧、敏捷性等维度的综合能力。产品对比评估不同手机在性能、续航、拍照、屏幕、价格等方面的表现。个人能力评估展示一个人在沟通、协作、领导力、专业技能等维度的自我评价。游戏角色展示游戏角色的攻击、防御、速度、魔法等属性。4. 用 Python 绘制雷达图下面我们使用 Python 的matplotlib库来绘制一个简单的雷达图。假设我们要比较三位同学在数学、语文、英语、物理、化学五门科目上的成绩。importnumpyasnpimportmatplotlib.pyplotasplt# 设置中文字体避免乱码plt.rcParams[font.sans-serif][SimHei]# 用于显示中文plt.rcParams[axes.unicode_minus]False# 用于显示负号# 数据准备subjects[数学,语文,英语,物理,化学]scores{小明:[85,78,90,82,88],小红:[92,88,75,90,85],小刚:[70,95,80,65,92],}# 设置角度anglesnp.linspace(0,2*np.pi,len(subjects),endpointFalse).tolist()anglesangles[:1]# 闭合图形# 创建画布fig,axplt.subplots(figsize(6,6),subplot_kwdict(polarTrue))# 绘制每个学生的雷达图forname,valuesinscores.items():valuesvalues[:1]# 闭合数据ax.plot(angles,values,labelname)ax.fill(angles,values,alpha0.15)# 设置刻度标签ax.set_xticks(angles[:-1])ax.set_xticklabels(subjects)# 设置 y 轴范围ax.set_ylim(0,100)# 添加图例和标题ax.legend(locupper right,bbox_to_anchor(1.2,1.0))plt.title(三位同学的成绩对比雷达图,pad20)plt.show()运行这段代码你就能看到一张清晰的雷达图直观地展示三位同学在各科上的优势与短板。5. 雷达图的优缺点优点直观性强多边形的形状和面积让人一目了然。适合对比可以同时展示多个对象的综合表现。视觉美观图形具有对称美感容易吸引观众注意。缺点维度不宜过多超过 6-8 个维度时图形会变得拥挤难读。面积比较有误导性不同维度数值范围差异大时面积大小不能直接反映优劣。不适合精确比较难以从图中读出精确的数值差异。6. 总结雷达图是一种极具表现力的可视化工具特别适合用于多维度的综合对比分析。在课堂上我们可以用它来展示运动员能力、产品评测、学生成绩等场景既生动又有说服力。希望今天的分享能给大家带来启发下次遇到多维度对比的问题时不妨试试雷达图