Python:雷达图的实现
之前在一些数据分析案例中看到用 Go 语言绘制的雷达图,非常的漂亮,就想着用matlibplot.pyplot也照着画一个,遗憾的是matlibplot.pyplot模块中没有直接绘制雷达图的函数,不过可以基于‘polar’图形特征来改进,下面就记录一下如何绘制雷达图。
雷达图
雷达图在数据挖掘项目中多用于企业分析或者价值分析的环节可视化。雷达图分析法是一种系统分析的有效方法,它是从项目中自身建立的多方面分析企业的经营成果。并将这些方面的有关数据用比率表示出来,填写到一张能表示各自比率关系的等比例图形上,再用彩笔连接各自比率的结点后,恰似一张雷达图表。从图上可以看出企业经营状况的全貌,一目了然地找出了企业经营上的优势和弱势。
分析方法
就各指标来看,当指标值处于标准线以内时,说明该指标低于平均水平,需要加以改进;若接近最小圆圈或处于其内,说明此指标处于极差状态,是企业需要注意的问题,应重点加以分析改进;若处于标准线外侧,说明该指标处于理想状态,是企业的优势,应采取保持措施。
雷达图的分析方法是:如果企业的比率位于标准线以内,则说明企业比率值低于同行业的平均水平,应认真分析原因,提出改进方向;如果企业的比率值接近或低于小圆,则说明企业经营处于非常危险的境地,急需推出改革措施以扭转局面;如果企业的比率值超过了中圆或标准线,甚至接近大圆,则表明企业经营的优势所在,用予以巩固和发扬。如果把雷达图应用于创新战略的评估,就演变成为戴布拉图。实际上戴布拉图与雷达图的绘制与分析方法完全相同,但是,戴布拉图是用企业内部管理责任:协作过程、业绩度量、教育与开发、分布式学习网络和智能市场定位,以及外部关系:知识产品/服务协作市场准入、市场形象活动、领导才能和通信技术等两个基本方面10个具体因素来替代经营雷达图的5个因素。
制作方法
雷达图的绘制方法是:先画3个同心圆,把圆分为5个区域(每个区为72度),分别代表企业的收益性、生产性、流动性、安全性和成长性。同心圆中最小的圆代表同行业平均水平的1/2值或最差的情况;中心圆代表同行业的平均水平或特定比较对象的水平,称为标准线(区);大圆表示同行业平均水平的1.5倍或最佳状态。在5个区域内,以圆心为起点,以放射线的形式画出相应的经营比率线。然后,在相应的比率线上标出本企业决算期的各种经营比率。将本企业的各种比率值用线联结起来后,就形成了一个不规则闭环图。他清楚地表示出本企业的经营态势,并把这种经营态势与标准线相比,就可以清楚地看出本企业的成绩和差距。
python雷达图Demo(完整)
import numpy as np
import matplotlib.pyplot as plt
# 用于正常显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
# 使用ggplot的绘图风格,这个类似于美化了,可以通过plt.style.available查看可选值,你会发现其它的风格真的丑。。。
plt.style.use('ggplot')
# 构造数据
values1 = [2.6,2.1,3.4,3,4.1]
values2 = [1.7,4.1,3.3,2.6,3.8]
feature = ['个人能力','QC知识','解决问题能力','服务质量意识','团队精神']
# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(feature), endpoint=False)
angles=np.concatenate((angles,[angles[0]]))
# 绘图
fig=plt.figure()
for values in [values1, values2]:
# 拼接数据首尾,使图形中线条封闭
values=np.concatenate((values,[values[0]]))
# 设置为极坐标格式
ax = fig.add_subplot(111, polar=True)
# 绘制折线图
ax.plot(angles, values, 'o-', linewidth=2)
# 填充颜色
ax.fill(angles, values, alpha=0.25)
# 设置图标上的角度划分刻度,为每个数据点处添加标签
ax.set_thetagrids(angles * 180/np.pi, feature)
# 设置雷达图的范围
ax.set_ylim(0,5)
# 添加标题
plt.title('活动前后员工状态表现')
# 添加网格线
ax.grid(True)
plt.show()
效果展示: