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

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

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

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

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

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

  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。

  1. data(longley)#加载数据
  2. faces(longley[1:9,],face.type=1)

lonley数据集有一下变量:

绘图结果如下

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

  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()函数,他可以帮我们把脸谱图和散点图结合起来。听起来是不是很酷。

  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语言之脸谱图的更多相关文章

  1. R语言绘制QQ图

    无论是直方图还是经验分布图,要从比较上鉴别样本是否处近似于某种类型的分布是困难的 QQ图可以帮我们鉴别样本的分布是否近似于某种类型的分布 R语言,代码如下: > qqnorm(w);qqline ...

  2. R语言画棒状图(bar chart)和误差棒(error bar)

    假设我们现在有CC,CG,GG三种基因型及三种基因型对应的表型,我们现在想要画出不同的基因型对应表型的棒状图及误差棒.整个命令最重要的就是最后一句了,用arrows函数画误差棒.用到的R语言如下: d ...

  3. R语言-画线图

    R语言分高水平作图函数和低水平作图函数 高水平作图函数:可以独立绘图,例如plot() 低水平作图函数:必须先运行高水平作图函数绘图,然后再加画在已有的图上面 第一种方法:plot()函数 > ...

  4. R语言绘制花瓣图flower plot

    R语言中有很多现成的R包,可以绘制venn图,但是最多支持5组,当组别数大于5时,venn图即使能够画出来,看上去也非常复杂,不够直观: 在实际的数据分析中,组别大于5的情况还是经常遇到的,这是就可以 ...

  5. R语言-简单线性回归图-方法

    目标:利用R语言统计描绘50组实验对比结果 第一步:导入.csv文件 X <- read.table("D:abc11.csv",header = TRUE, sep = & ...

  6. R语言学习 - 热图简化

    绘制热图除了使用ggplot2,还可以有其它的包或函数,比如pheatmap::pheatmap (pheatmap包中的pheatmap函数).gplots::heatmap.2等.   相比于gg ...

  7. R语言学习 - 热图绘制heatmap

    生成测试数据 绘图首先需要数据.通过生成一堆的向量,转换为矩阵,得到想要的数据. data <- c(1:6, 6:1, 6:1, 1:6, (6:1)/10, (1:6)/10, (1:6)/ ...

  8. R语言绘制茎叶图

    与直方图相比,茎叶图更能细致的看出数据分布情况! 代码: > x<-c(25, 45, 50, 54, 55, 61, 64, 68, 72, 75, 75,+ 78, 79, 81, 8 ...

  9. R语言-箱型图&热力图

    1.箱型图 boxplot()函数 > metals<-read.csv("metals.csv",header=TRUE) #读取文件和列名 > boxplot ...

随机推荐

  1. 【Django】ajax(多对多表单)

    1.前后端交互 <div class="shade hide"></div> <!--遮罩层,全屏--> <div class=" ...

  2. C语言入门-数组

    今天十月一日,上午看阅兵激情澎湃,但是下午还是要继续写C语言,前面的这块很简单 int number[100]; scanf("%d" , &number[i]); 一.定 ...

  3. Python IAQ中文版 - Python中少有人回答的问题

    Python中少有人回答的问题 The Python IAQ: Infrequently Answered Questions 1 Q: 什么是"少有人回答的问题(Infrequently ...

  4. Linux下beego及beego相关插件安装

    Linux下beego及beego相关插件安装 1.下载及配置go环境看见链接: http://golang.org/dl/ 网盘:链接: https://pan.baidu.com/s/1MveUM ...

  5. 异步处理ServletRequest引发的血案

    我们的APP生产上出了一次比较严重的事故,许多用户投诉登录后能看到别人的信息,收到投诉后我们就开始查找问题,一般这样的问题都是线程安全引起的,所以查找原因的思路也是按线程安全的思路去查. 业务场景是这 ...

  6. Spring Boot 2.x基础教程:Swagger静态文档的生成

    前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了.如果您还不熟悉这块,可以先阅读: Spring Boo ...

  7. Python 元组(Tuple)操作详解

    Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号, 列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可 一.创建元组 代码如下: tup1 = (' ...

  8. 【TencentOS tiny】深度源码分析(7)——事件

    引言 大家在裸机编程中很可能经常用到flag这种变量,用来标志一下某个事件的发生,然后在循环中判断这些标志是否发生,如果是等待多个事件的话,还可能会if((xxx_flag)&&(xx ...

  9. web 前端优化-戈多编程

    大家好,我是戈多,从事web开发工作接近三年了,今天来归纳下web前端优化的解决方案(码农搬砖工,来自各网络汇总) 1.减少Http请求 http请求越多,那么消耗的时间越多,如果在加上网络很糟糕,那 ...

  10. Proving Equivalences UVA - 12167

    题文:https://vjudge.net/problem/UVA-12167 题解: 很明显,先要缩点.然后画一下图就会发现是入度为0的点和出度为0的点取max. 代码: #include < ...