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
 
 在CODE上查看代碼片派生到我的代碼片
  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
 
 在CODE上查看代碼片派生到我的代碼片
  1. data(longley)#加載數據  
  2. faces(longley[1:9,],face.type=1)  

 

lonley數據集有一下變量:

 

 

 

繪圖結果如下

effect of variables:
變量在臉譜圖中代表意義說明如下:

 

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  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
 
 在CODE上查看代碼片派生到我的代碼片
  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擴展包繪制三維動態圖。

 

        然后剩下的給大家留一個懸念,感興趣的可以自己去研究一下,也希望有經驗的大牛在評論區交流經驗。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM