雷达图的实现(R语言及Python)

雷达图的目的

       雷达图在数据挖掘项目中多用于企业分析或者价值分析的环节可视化。雷达图分析法是一种系统分析的有效方法,它是从项目中自身建立的多方面分析企业的经营成果。并将这些方面的有关数据用比率表示出来,填写到一张能表示各自比率关系的等比例图形上,再用彩笔连接各自比率的结点后,恰似一张雷达图表。从图上可以看出企业经营状况的全貌,一目了然地找出了企业经营上的优势和弱势。

注意事项

       就各指标来看,当指标值处于标准线以内时,说明该指标低于平均水平,需要加以改进;若接近最小圆圈或处于其内,说明此指标处于极差状态,是企业需要注意的问题,应重点加以分析改进;若处于标准线外侧,说明该指标处于理想状态,是企业的优势,应采取保持措施。

雷达图的R语言实现

       在R语言中画出群特征分析雷达图,需要加载‘fmsb’的包。用apply簇的apply函数获取每个指标中的最大最小值,并与原数据行合并为新数据。新数据的最大最小值设定为雷达图的最大最小阈值范围。


library(fmsb)
max <- apply(result$centers, 2, max)
min <- apply(result$centers, 2, min)
df <- data.frame(rbind(max, min, result$centers))
radarchart(df = df, seg =5, plty = c(1:5), vlcex = 1, plwd = 2)   

       radarchart(df, axistype, seg, pty, pcol, plty, plwd, pdensity, pangle, pfcol, cglty, cglwd, cglcol, axislabcol, title, maxmin, vlabels, vlcex, caxislabels, calcex, paxislabels, palcex)
       其中df为数据。axistype为轴的类型,由0:3中的任何一个指定。0表示无轴标签。1只表示中心轴标签。2只表示图表标签。3意味着中心和周围的图表(外围)标签。seg为每个轴的段数(默认值4)。pty指定点符号的向量:默认16(闭合圆),如果不绘制数据点,则应该是32。pcol用于绘图数据的颜色代码向量:默认为1:8,重复使用。plty用于绘图数据的线型向量:默认为1:6,重复使用。plwd用于绘图数据的线宽向量:默认1,重复使用。pdensity为多边形填充密度向量:默认NULL,重复使用。pangle用作填充多边形的线的角度向量:默认45,重复使用。pfcol一个用于填充多边形的颜色代码向量:默认NA,它是重复的美元。cglty为雷达栅格线型:默认3,这意味着虚线。cglwd为雷达栅格线宽:默认1,这意味着最薄的线条。cglcol为雷达网格线颜色:默认navy。axislabcol为轴标签和数字的颜色:默认blue。title为标题。maxmin为合乎逻辑的如果为真,则数据帧包括行1的可能最大值和行2的可能最小值。如果FALSE,每个轴的最大值和最小值将被计算为数据的实际最大值和最小值。默认为真。vlabels为变量名称的字符向量,默认为空。vlcex为标签的字体大小放大倍数,默认为空。caxislabels用于中心轴标签的字符向量,覆盖在Axistype选项中指定的值。如果为NULL,则使用Axistype选项指定的值。calcex用于CAXIS标签的字体大小放大,默认为空。paxislabels为围绕图(外围)标签的字符向量,覆盖在Axistype选项中指定的值,默认值为NULL。palcex为字体大小放大倍数,默认为空。

# 给雷达图加图例
L <- 1
for(i in 1:5){
  legend(1.3, L, legend = paste("客户群", i), lty = i, lwd = 3, col = i, bty = "n")
  L <- L - 0.2
}

 

       为雷达图的各个聚类分群的线条加上图例说明。R语言画出的图如下。

雷达图的实现(R语言及Python)_第1张图片

雷达图的Python实现

       在Python中画出群特征分析雷达图。

import matplotlib.pyplot as plt
import numpy as np
N = len(kmeans.cluster_centers_[0])
angles=np.linspace(0, 2*np.pi, N, endpoint=False) # 设置雷达图的角度,用于平分切开一个圆面
angles=np.concatenate((angles, [angles[0]])) # 为了使雷达图一圈封闭起来
fig = plt.figure(figsize=(7,7)) # 设置画布大小
ax = fig.add_subplot(111, polar=True) # 这里一定要设置为极坐标格式
sam = ['r-', 'o-', 'g-', 'b-', 'p-'] # 样式
lab = [] # 图例标签名
for i in range(len(kmeans.cluster_centers_)):
    values = kmeans.cluster_centers_[i]
    feature = ['F','C','R','L','M'] # 设置各指标名称
    # 为了使雷达图一圈封闭起来,需要下面的步骤
    values=np.concatenate((values,[values[0]]))
    ax.plot(angles, values, sam[i], linewidth=2) # 绘制折线图
    ax.fill(angles, values, alpha=0.25) # 填充颜色
    ax.set_thetagrids(angles * 180/np.pi, feature) # 添加每个特征的标签
    ax.set_ylim(-2, 2) # 设置雷达图的范围
    plt.title('客户群特征分布图') # 添加标题
    ax.grid(True) # 添加网格线
    lab.append('客户群'+str(i))
plt.legend(lab)
plt.show() # 显示图形
 

       Python画出的图如下。

 

雷达图的实现(R语言及Python)_第2张图片

 

 

 

文章未经博主同意,禁止转载!

 

你可能感兴趣的:(R语言,Python)