首页 > 代码库 > R语言之脸谱图

R语言之脸谱图

脸谱图和星图类似,但它却比星图可以表示更多的数据维度。用脸谱来分析多维度数据,即将P个维度的数据用人脸部位的形状或大小来表征。脸谱图在平面上能够形象的表示多维度数据并给人以直观的印象,可帮助使用者形象记忆分析结果,提高判断能力,加快分析速度。目前已应用于多地域经济战略指标数据分析,空间数据可视化等领域。

       脸谱图一般采用15个指标,各指标代表的面部特征为:

 

1 脸的高度 2脸的宽度3 脸型4嘴巴厚度  5, 嘴巴宽度6 微笑7 眼睛的高度8 眼睛宽度 

9 头发长度 10 头发宽度11头发风格12 鼻子高度13 鼻子宽度14 耳朵宽度15耳朵高度

      在R语言里面有两个包可以绘制脸谱图,一个是aplpack,另外一个是TeachingDemos。

首先我们先用aplpack包来试试:这个扩展包里面有一个faces()函数

 

[plain] view plain copy
 
 技术分享技术分享
  1. faces(xy, which.row, fill = FALSE, face.type = 1, nrow.plot, ncol.plot,   
  2.     scale = TRUE, byrow = FALSE, main, labels, print.info = TRUE,   
  3.     na.rm = FALSE, ncolors = 20, col.nose = rainbow(ncolors),   
  4.     col.eyes = rainbow(ncolors, start = 0.6, end = 0.85),   
  5.     col.hair = terrain.colors(ncolors), col.face = heat.colors(ncolors),   
  6.     col.lips = rainbow(ncolors, start = 0, end = 0.2),   
  7.     col.ears = rainbow(ncolors, start = 0, end = 0.2), plot.faces = TRUE)  


          这个函数里面,参数face.type取值范围为0—2,0表示无颜色,1,表示彩色,2表示时彩色的圣诞老人,不在这个范围则默认为1。

 

 

[plain] view plain copy
 
 技术分享技术分享
  1. data(longley)#加载数据  
  2. faces(longley[1:9,],face.type=1)  

 

lonley数据集有一下变量:

 

技术分享

 

 

绘图结果如下

技术分享

effect of variables:
变量在脸谱图中代表意义说明如下:

 

[plain] view plain copy
 
 技术分享技术分享
  1. effect of variables:  
  2.  modified item       Var             
  3.  "height of face   " "GNP.deflator"  
  4.  "width of face    " "GNP"           
  5.  "structure of face" "Unemployed"    
  6.  "height of mouth  " "Armed.Forces"  
  7.  "width of mouth   " "Population"    
  8.  "smiling          " "Year"          
  9.  "height of eyes   " "Employed"      
  10.  "width of eyes    " "GNP.deflator"  
  11.  "height of hair   " "GNP"           
  12.  "width of hair   "  "Unemployed"    
  13.  "style of hair   "  "Armed.Forces"  
  14.  "height of nose  "  "Population"    
  15.  "width of nose   "  "Year"          
  16.  "width of ear    "  "Employed"      
  17.  "height of ear   "  "GNP.deflator"  


将face.type改为2则可以画出来的脸谱图是圣诞老人。

 

技术分享

这个包里面还有一个plot.faces()函数,他可以帮我们把脸谱图和散点图结合起来。听起来是不是很酷。

 

[plain] view plain copy
 
 技术分享技术分享
  1. data(longley)  
  2. plot(longley[1:16,2:3],bty="n")  
  3. a<-faces(longley[1:16,],plot=FALSE)  
  4. plot.faces(a,longley[1:16,2],longley[1:16,3],width=35,height=30)  

 

技术分享

今天是圣诞节,咱就把这个画成圣诞老人,祝大家圣诞节快乐,只需要把face.type=2就OK了。

技术分享

         是不是如果把散点图画成这样很有个性。把这张图送给大家就当是祝大家圣诞节快乐。

二.TeachingDemos

       至于TeachingDemos包,它的功能就较多,不仅可以绘制脸谱图,他也可以借助rgl扩展包绘制三维动态图。

技术分享

 

        然后剩下的给大家留一个悬念,感兴趣的可以自己去研究一下,也希望有经验的大牛在评论区交流经验。

R语言之脸谱图