目录
一、概念介绍
雷达图(Radar Chart),或称为戴布拉图、蜘蛛网图。图形以一点为中心,每一变量维度为一极坐标轴,n个维度即形成n轴的由内向外放射状图形,形似蜘蛛网。
图形示例:(图源百度)
分析上图,我们可以得到一家企业或者某个部门在经营管理上的评分分布。
图形的基本构成如下:
雷达图的应用特点:
① 同样是属于比较与分布类型,雷达图与柱状图最明显的差异是,柱状图在实际场景中通常被用于进行单(多)维度定性数据的可视化,比如一次期中考试,绘制柱状图来对比八个班级的语文平均分;而雷达图常常用于单(多)个体的多维度数据对比,进而呈现并帮助分析对象的优劣处,比如在这次考试中,绘制雷达图来观察二班的语文、数学、英语、生物、化学、物理科目平均分的优良分布。
② 如果遇到多总体,我们可以使用多幅雷达图,或者单幅雷达图中多层数据线的形式进行总体间对比。
③ 无论是变量特征还是对象总体都不要太多,前者(>10)会使得图像的轴过多,包含信息量过大而弱化了可读性,一眼看去让人感觉很复杂。后者(>5)要么会使得线条交叉密集,要么就是多重覆盖域因附着不同填充色而导致的信息覆盖问题,当然,如果每个总体都是单维突出类型,信息突出效果还是很好的。
④ 雷达图使用的数据是多特征的,会出现一种很常见的情况,比如年龄和收入的量纲或者说取值范围是不一致的。因为雷达图是维度内的粗略对比,我们并不会去根据图形计算一班和二班的数学平均分差究竟是多少,只需要得到二班在这次期中考试中数学比一班考得好的结论就可以,所以为了将各维度数据在一个取值范围内,我们在绘图前会考虑将数据归一化或者标准化。
⑤ 在应用场景上,通常有财务状况综合评价、用户画像、员工评分、医疗症状自评等等
二、数据导入
在本案例中,我们虚构了某部门五位员工的月度评价数据,希望绘制雷达图以向管理或人事部门反映员工们的亮点与不足之处。
import pandas as pd
data = pd.DataFrame(pd.read_excel('案例数据.xlsx'))
# 生成绘图series
data_radar = []
for row in range(data.shape[0]):
dic = {}
value = []
for col in range(1,data.shape[1]):
value.append(int(data.iloc[row,col]))
dic['name'],dic['value'] = data['员工'][row],value
data_radar.append([dic])
# 各特征维度取值范围
scope = []
for col in range(1,data.shape[1]):
dic = {}
dic['name'] = data.columns[col]
dic['max'],dic['min'] = max(data.iloc[:,c