雷达图(Radar Chart)也被称为蜘蛛网图、星形图或极坐标图,是一种用于显示多变量数据的图形方法。它以一个中心点为起点,从中心点向外延伸出多条射线,每条射线代表一个特定的变量或指标。每条射线上的点或线段表示该变量在不同维度上的取值或得分。
雷达图常用于比较多个变量在不同维度上的表现,以及展示各个变量之间的相对关系。通过观察雷达图的形状和变化,可以直观地了解各个变量的相对重要性、差异程度和趋势。它被广泛应用于数据分析、数据可视化、商业分析等领域。
适合场景
- 比较类需求:雷达图适用于比较类的需求,主要被应用在与其他数据的比较,公司的优势和广告调查等方面。
- 展示多变量数据:雷达图适用于展示多变量数据,尤其是当需要同时展示多个变量的数据时,例如能力分析、公司竞争力分析、目标值偏差分析等。
- 展示综合水平:雷达图用于显示各衡量指标的综合水平以及指标间的平衡性,常用于企业经营状况和财务分析。
- 显示性能数据:雷达图适用于表示单个或多个数据对象包含多个特征类别的情况,非常适用于展示性能数据。例如手机的综合性能(易用性、续航、功能、跑分、拍照、价格);食品的营养成分(糖、维生素、矿物质、脂肪、水);不同篮球运动员的能力对比(得分能力、篮板能力、抢断能力、助攻能力、盖帽能力)。
- 进行总体数值对比:雷达图还可以在多幅雷达图之间或者雷达图的多层数据线之间进行总体数值情况的对比。例如对甲乙两位员工的技能做对比,可以较明显的比较出两位员工所分别擅长与不擅长的事情。
- 数据分析和决策制定:雷达图提供了一种方便的方式,用于分析数据并帮助决策者进行决策。例如在拟定策略时,可以用于把握数值无法表现的倾向性和印象性,提供良好的信息分析协助。
总之,雷达图是一种强大的可视化工具,可以在多种场合中展示数据的综合特征和差异,帮助用户更好地理解数据和分析问题。
简单示例
import matplotlib.pyplot as plt
import numpy as np
# 数据
labels = np.array(['A', 'B', 'C', 'D', 'E']) # 标签
stats = np.array([0.5, 0.8, 0.6, 0.9, 0.7]) # 数据
# 标签个数
num_vars = len(labels)
# 计算角度
angles = np.linspace(0, 2 * np.pi, num_vars, endpoint=False).tolist()
# 保证闭合
stats=np.concatenate((stats,[stats[0]]))
angles+=angles[:1]
# 绘图
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))
ax.fill(angles, stats, color='red', alpha=0.25)
# 设置标签
ax.set_thetagrids(np.degrees(angles[:-1]), labels)
# 设置标题
plt.title('Radar Chart')
# 显示图形
plt.show()
雷达图优缺点
雷达图的优点主要包括:
- 多维度展示:雷达图可以将多个维度的数据映射到同一张图上,非常适合展示多变量数据,便于比较不同变量之间的关系。
- 直观易懂:雷达图的结构简单,直观易懂,能够快速地传达数据的核心信息。
- 可视化效果好:雷达图通过图形的方式展示数据,能够清晰地呈现数据的分布和变化,使得数据更加易于理解和记忆。
- 可用于探索性数据分析:在数据分析过程中,雷达图可以用于探索性数据分析,帮助分析人员更好地了解数据的结构和特点。
然而,雷达图也存在一些缺点:
- 数据量不宜过多:由于雷达图是将多个维度的数据映射到同一张图上,如果数据量过大,会导致图表过于拥挤和复杂,难以理解和分析。
- 数据需要规范化:为了使雷达图更加直观和易于比较,需要对数据进行规范化处理,将不同量纲的数据转换为统一的无量纲数据。这需要耗费一定的计算和数据处理时间。
- 容易产生视觉上的误导:由于雷达图的结构特点,容易产生视觉上的误导,如射线的角度和长度可能会受到投影角度和坐标轴比例的影响。
- 对于非正交的数据,可能需要其他图表类型:对于非正交的数据,雷达图可能无法很好地展示数据的特性和关系,此时可能需要使用其他图表类型来更好地展示数据。
总之,在使用雷达图时需要根据具体的数据和场景来选择是否适合使用雷达图。