脸谱图由Chernoff (1973)提出,它以一种非常形象有趣的方式来展示多元数据:人的脸部有很多特征,例如眼睛大小、眉毛弧度、脸宽、鼻高等,由于这些特征都可以用数值大小来测量,因此我们也可以反过来将一批数值对应到这些脸部特征上来,如数据的第一列控 制眼睛大小、第二列控制嘴巴大小等,每一行观测数据都可以像这样画出一个人脸来。
脸谱图和星图类似,但它却比星图可以表示更多的数据维度。用脸谱来分析多维度数据,即将P个维度的数据用人脸部位的形状或大小来表征。脸谱图在平面上能够形象的表示多维度数据并给人以直观的印象,可帮助使用者形象记忆分析结果,提高判断能力,加快分析速度。目前已应用于多地域经济战略指标数据分析,空间数据可视化等领域。TeachingDemos包(Snow, 2010)提供了两个脸谱图函数faces()和faces2()
, 两个函数能反映的面部特征不尽相同,各有所长,例如faces()可以画头发和耳朵,但faces2()可以画更多的变量,faces2()的用法如下:
library(TeachingDemos)
faces2(mtcars[, c("hp", "disp", "mpg", "qsec", "wt")],
which = c(14, 9, 11, 6, 5), adj = c(0.5, 0),)
![](https://img.haomeiwen.com/i25274977/948776a91471582e.png)
其中mat是主要参数,它是一个数据矩阵,每一行对应着一张脸谱,脸
谱中各个部位的特征对应着矩阵中的列;which也是一个重要参数,它用来
指定数据矩阵中的每一列分别对应着何种面部特征,它是一个整数向量,
向量的每个元素取值在1到18之间,分别表示:
1额头和脸之间的横线宽度(一张脸谱上半部分为额头,下半部分为脸)2额头和脸的相对高度(取值越大则额头越矮脸越高)3脸高4上半边脸的宽度5 下半边脸的宽度6鼻子长度7嘴巴高度8嘴巴弧度(绝对值应小于9)9嘴巴宽度10眼睛高度11两只眼睛之间的距离(取值0.5~0.9)12眼睛和眉毛的弧度13眼睛圆圈的形状(取值越大越呈椭圆形,越小越圆)14 眼睛大小15眼珠和眉毛的位置(越大越靠左,越小越靠右)16眉毛高度17眉毛弧度18眉毛宽度
在众多统计图形中,脸谱图可算是最有幽默味道的一种,大家不妨在一些轻松的场合使用这种图形,也许能让感觉眼前一亮。
###install.packages("aplpack")
library(aplpack)
data(longley)#加载数据
faces(longley[1:9,],face.type=2)##将face.type改为2则可以画出来的脸谱图是圣诞老人。
![](https://img.haomeiwen.com/i25274977/b9ff761e817fa3af.png)
这个包里面还有一个plot.faces()
函数,他可以帮我们把脸谱图和散点图结合起来。听起来是不是很酷。
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)
![](https://img.haomeiwen.com/i25274977/4470481bf882fc4e.png)
好了,今天的介绍就到这里了。
网友评论