臉譜圖和星圖類似,但它卻比星圖可以表示更多的數據維度。用臉譜來分析多維度數據,即將P個維度的數據用人臉部位的形狀或大小來表征。臉譜圖在平面上能夠形象的表示多維度數據並給人以直觀的印象,可幫助使用者形象記憶分析結果,提高判斷能力,加快分析速度。目前已應用於多地域經濟戰略指標數據分析,空間數據可視化等領域。
臉譜圖一般采用15個指標,各指標代表的面部特征為:
1 臉的高度 2臉的寬度3 臉型4嘴巴厚度 5, 嘴巴寬度6 微笑7 眼睛的高度8 眼睛寬度
9 頭發長度 10 頭發寬度11頭發風格12 鼻子高度13 鼻子寬度14 耳朵寬度15耳朵高度
在R語言里面有兩個包可以繪制臉譜圖,一個是aplpack,另外一個是TeachingDemos。
首先我們先用aplpack包來試試:這個擴展包里面有一個faces()函數
- faces(xy, which.row, fill = FALSE, face.type = 1, nrow.plot, ncol.plot,
- scale = TRUE, byrow = FALSE, main, labels, print.info = TRUE,
- na.rm = FALSE, ncolors = 20, col.nose = rainbow(ncolors),
- col.eyes = rainbow(ncolors, start = 0.6, end = 0.85),
- col.hair = terrain.colors(ncolors), col.face = heat.colors(ncolors),
- col.lips = rainbow(ncolors, start = 0, end = 0.2),
- col.ears = rainbow(ncolors, start = 0, end = 0.2), plot.faces = TRUE)
這個函數里面,參數face.type取值范圍為0—2,0表示無顏色,1,表示彩色,2表示時彩色的聖誕老人,不在這個范圍則默認為1。
- data(longley)#加載數據
- faces(longley[1:9,],face.type=1)
lonley數據集有一下變量:

繪圖結果如下

effect of variables:
變量在臉譜圖中代表意義說明如下:
- effect of variables:
- modified item Var
- "height of face " "GNP.deflator"
- "width of face " "GNP"
- "structure of face" "Unemployed"
- "height of mouth " "Armed.Forces"
- "width of mouth " "Population"
- "smiling " "Year"
- "height of eyes " "Employed"
- "width of eyes " "GNP.deflator"
- "height of hair " "GNP"
- "width of hair " "Unemployed"
- "style of hair " "Armed.Forces"
- "height of nose " "Population"
- "width of nose " "Year"
- "width of ear " "Employed"
- "height of ear " "GNP.deflator"
將face.type改為2則可以畫出來的臉譜圖是聖誕老人。

這個包里面還有一個plot.faces()函數,他可以幫我們把臉譜圖和散點圖結合起來。聽起來是不是很酷。
- data(longley)
- plot(longley[1:16,2:3],bty="n")
- a<-faces(longley[1:16,],plot=FALSE)
- plot.faces(a,longley[1:16,2],longley[1:16,3],width=35,height=30)

今天是聖誕節,咱就把這個畫成聖誕老人,祝大家聖誕節快樂,只需要把face.type=2就OK了。

是不是如果把散點圖畫成這樣很有個性。把這張圖送給大家就當是祝大家聖誕節快樂。
二.TeachingDemos
至於TeachingDemos包,它的功能就較多,不僅可以繪制臉譜圖,他也可以借助rgl擴展包繪制三維動態圖。

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