插播消息:最初建的交流群已经无法使用了,新建群的加入方式见次条推送。

本篇是“基础绘图系统”系列推文的最后一篇,我们来介绍三种不常见的图形,对应的绘图函数分别如下:

  • stars()

  • fourfoldplot()

  • mosaicplot()

stars()

该函数主要用于绘制星形图,具体见下面例子。语法结构如下:

stars(x, full = TRUE, scale = TRUE,radius = TRUE, labels = dimnames(x)[[1]],locations = NULL, nrow = NULL, ncol = NULL,len = 1, key.loc = NULL,key.labels = dimnames(x)[[2]], key.xpd = TRUE,xlim = NULL, ylim = NULL, flip.labels = NULL,draw.segments = FALSE, col.segments = 1:n.seg,col.stars = NA, col.lines = NA,axes = FALSE, frame.plot = axes,main = NULL, sub = NULL,xlab = "", ylab = "",cex = 0.8, lwd = 0.25, lty = par("lty"), xpd = FALSE,mar = pmin(par("mar"),1.1+ c(2*axes+ (xlab != ""),2*axes+ (ylab != ""), 1, 0)),add = FALSE, plot = TRUE, ...)

基础

参数x为矩阵或数据框,为了展示该函数的绘制效果,这里使用mtcars作为输入对象:

par(plt = c(0,1,0,1))
stars(mtcars, ncol = 8)

  • 上图中,一个星形表示一个样本,文本为对应的样本名(即mtcars的行名);

  • 在每个星形中,一个扇形表示一个变量,扇形的半径表示该样本此变量在全体样本的相对大小;

  • ncol参数表示图形排列的列数;nrow为排列行数。

其他一些基础参数的含义:

  • full:默认值为TRUE,表示星形包含的所有扇形组成一个圆;FALSE表示组成半圆;

  • radius:默认值为TRUE,表示扇形半径的线条被绘制出来;FALSE表示不绘制;

  • scale:默认值为TRUE,表示各变量被分别标准化至0-1之间;FALSE表示假设数据已经被标准化至0-1之间了;

  • flip.labels:控制星形标签的书写位置是否上下交替,默认值会根据情况进行选择;在本例中标签就进行了上下交替放置,以防止重叠。

修饰

  • key.loc:图例的位置;

  • draw.segments:是否对扇形区域进行填充,默认值为FALSE;

  • col.segments:仅在draw.segments为TRUE时生效,对扇形区域进行着色;向量结构,元素个数应与变量个数(即每个星形包含的扇形个数)相同;

  • col.stars:仅在draw.segments为FALSE时生效,对星形整体的内部进行着色;向量结构,元素个数应与样本个数(即星形个数)相同;

  • col.lines:仅在draw.segments为FALSE时生效,对星形整体的外轮廓进行着色;向量结构,元素个数应与样本个数(即星形个数)相同。

下面例子通过key.loc参数增加了图例,通过col.segments参数区分各变量:

par(plt = c(0,1,0,1))
stars(mtcars, ncol = 9, key.loc = c(16,1),draw.segments = TRUE,col.segments = rainbow(11, s = 0.6, v = 0.75))

fourfoldplot()

该函数绘制的图形可称为四瓣图。语法结构如下:

fourfoldplot(x, color = c("#99CCFF", "#6699CC"),conf.level = 0.95,std = c("margins", "ind.max", "all.max"),margin = c(1, 2), space = 0.2,main = NULL,mfrow = NULL, mfcol = NULL)
  • 参数x为2*2*k列联表;数组结构。

我们使用以下例子来说明四瓣图的含义。

首先生成列联表:

x <- aperm(UCBAdmissions, c(2, 1, 3))
dimnames(x)[[2]] <- c("Yes", "No")
names(dimnames(x)) <- c("Sex", "Admit", "Department")ftable(x)
##               Department   A   B   C   D   E   F
## Sex    Admit?
## Male   Yes               512 353 120 138  53  22
##        No                313 207 205 279 138 351
## Female Yes                89  17 202 131  94  24
##        No                 19   8 391 244 299 317
  • aperm函数的功能是调整数组的元素顺序,如上面的代码aperm(UCBAdmissions, c(2, 1, 3))表示将该数组的第1、2个元素位置互换;

  • ftable函数的功能是将列联表转换成更“短平”(flat)的样式,以便于展示;每个大写字母对应加州大学伯克利分校的一个系。

上面的列联表x的大小为2*2*5,将各系的数据合并,可得到一个2*2的列联表x

x1 <- margin.table(x, c(1, 2))x1
##         Admit
## Sex       Yes   No
##   Male   1198 1493
##   Female  557 1278
  • Sex表示性别,Admit表示是否被该系录取;数字表示对应情景下的频数;

  • margin.table函数的功能是计算列联表的边缘频数。

以上述数据为例,四瓣图可以用来判别录取是否与性别相互独立。先以2*2的x1为例:

fourfoldplot(x1)

  • 图中,每个象限代表一个2*2列联表对应位置的频数;

  • 每个象限包含3个四分之一圆,其中中间圆的半径表示列联表此位置的数学期望,其余两个表示置信区间的两个端点;默认为95%置信区间,由conf.level参数控制;

  • 当相邻象限的置信区间存在交叉时,则认为零假设成立(即列联表对应的两个事件相互独立);由于上图中不交叉,因此不能否认该系录取与性别相互之间不独立。

下列例子中的列联表的尺寸为2*2*k,其中k = 6:

fourfoldplot(x, mfrow = c(2,3))

  • 每个四瓣图对应一个系(即大写字母)。

mosaicplot()

该函数用于绘制马赛克图。它有两种语法结构,如下:

mosaicplot(x, main = deparse(substitute(x)),sub = NULL, xlab = NULL, ylab = NULL,sort = NULL, off = NULL, dir = NULL,color = NULL, shade = FALSE,margin = NULL, cex.axis = 0.66,las = par("las"), border = NULL,type = c("pearson", "deviance", "FT"), ...)mosaicplot(formula, data = NULL, ...,main = deparse(substitute(data)),subset,na.action = stats::na.omit)

fourfoldplot函数一样,该函数的输入对象x也是列联表,但对其大小没有要求。

先以上面已经使用过的x为例:

mosaicplot(x, main = "UCBAdmissions")

  • 每个矩形块的面积与对应位置的频数成正比。

数据集Titanic的大小为4*2*2*2:

ftable(Titanic)
##                    Survived  No Yes
## Class Sex    Age
## 1st   Male   Child            0   5
##              Adult          118  57
##       Female Child            0   1
##              Adult            4 140
## 2nd   Male   Child            0  11
##              Adult          154  14
##       Female Child            0  13
##              Adult           13  80
## 3rd   Male   Child           35  13
##              Adult          387  75
##       Female Child           17  14
##              Adult           89  76
## Crew  Male   Child            0   0
##              Adult          670 192
##       Female Child            0   0
##              Adult            3  20

绘制效果如下:

par(plt = c(0.08,1,0.08,1))
mosaicplot(Titanic, shade = TRUE)

  • 参数shade可以为矩形块上色,颜色与残差相关,具体见上图右侧图例。

graphics | 基础绘图系统(十)——星形图、四瓣图、马赛克图相关推荐

  1. graphics | 基础绘图系统(七)——各式各样的散点图/折线图

    前面已经用了六篇推文系统地介绍了R语言的基础绘图系统的主要函数用法,以及柱状图.直方图.箱形图.扇形图等常见图形的绘制方法,接下来将计划用四篇推文介绍使用基础绘图系统能够绘制的其他各类图形. 本篇介绍 ...

  2. graphics | 基础绘图系统(五)——plot函数功能再探和低级绘图函数

    plot函数虽然主要用于绘制散点图和折线图,但它实际上是一个比较全能的函数.本篇就介绍如何使用plot函数绘制其他类型的图形.另外,上篇介绍的高级绘图函数如boxplot.barplot等都有参数ad ...

  3. graphics | 基础绘图系统(九)——栅格图、点密度图、等高线(填充)图、三维图...

    先插播一则消息:刚建的交流群莫名其妙地被判违规,不仅无法加新人,而且群内的消息可能只能自己看到.先看看过几天能不能解封,不行再另想办法. 本篇是"基础绘图系统"系列的第九篇推文,也 ...

  4. graphics | 基础绘图系统(八)——棘状图、符号图、多边形(路径)图、Cohen-Friendly关联图、条件密度图...

    本篇继续介绍基础绘图系统中的几个绘图函数. spineplot() 该函数用于绘制棘状图,有以下两种语法结构: spineplot(x, y = NULL,breaks = NULL, tol.yla ...

  5. graphics | 基础绘图系统(一)——主函数plot及其参数

    R语言的基础绘图系统主要由基础包graphics提供,它包含了各式的图形绘制函数,如折线图.直方图.箱形图等.本篇主要介绍plot()函数的用法,它主要用于绘制散点图和折线图. plot()函数的语法 ...

  6. graphics | 基础绘图系统的拼图方法之三:使用mfrow、mfcol参数和layout函数

    R的基础绘图功能是个自成体系的系统,尽管有许多工具包可以"一行代码绘制一幅图",但是小编仍然认为系统地学习基础功能非常重要. 本篇推文是为了补全关于基础绘图系统的拼图功能的介绍,前 ...

  7. graphics | 基础绘图系统(三)——添加文本标注、坐标轴线和图例

    前面介绍了使用使用高级绘图函数plot()绘制基本图形和使用参数函数par()美化要素.设置布局等.但有时为了表达更丰富的内容,我们还需要添加文本标注以及必要的图例,这些可以使用text().mtex ...

  8. graphics | 基础绘图系统(四)——柱状图、直方图、扇形图、箱形图和函数图象...

    前面介绍的主函数plot()主要用于绘制散点图和折线图,绘制其他常见的图形如柱状图.直方图.扇形图和箱形图等可以调用专门的函数. 1 柱状图 绘制基础柱状图的函数是barplot(),其语法结构如下: ...

  9. graphics | R语言的基础绘图系统(二)—— 绘图参数及par函数

    前篇(graphics | 基础绘图系统(一)--主函数plot及其参数)介绍了基础系统的绘图主函数plot()及其参数.实际上,plot()函数的参数主要由par()提供.不同于plot()函数,p ...

最新文章

  1. Typesetting Engine_ Presto
  2. win10 下载 linux系统安装教程,Win10安装Linux子系统图文教程
  3. 完美解决Informix的中文乱码问题
  4. vi/vim使用教程
  5. python不能创建字典的是_用Python创建带有重复键的字典
  6. 捷信达温泉管理软件员工卡SQL查询
  7. Linux数码管和点阵程序,随笔:python turtle绘制八段数码管和共阳极8x8led点阵
  8. [delphi]极域学生端解除键盘鼠标锁定退出全屏广播-强制窗口化-源代码
  9. Redis读写分离技术解析
  10. 详细的ico图标制作与Qt修改exe图标方法
  11. Ubuntu和windows共享文件,Windows和windows共享文件
  12. D. Pythagorean Triples (math、暴力)
  13. 计算机视觉论文-2021-06-08
  14. 如何开发自己的通用Mapper
  15. Teradata金融业仓库逻辑模型(FS-LDM)
  16. ArcGIS for AutoCAD 下载安装使用
  17. 无向图最小环——Floyd解法
  18. 网易邮箱账号OAuth2.0认证文档
  19. 2012浙大计算机考研分数线,浙江大学2012年考研复试分数线公布
  20. QLocale::Language相关枚举结果

热门文章

  1. vCenter Events
  2. Linux学习总结(57)——生产环境用户权限管理规范
  3. Java基础学习总结(34)——HTTP协议详解
  4. echarts地图动画和java_echarts 实现中国地图
  5. shell脚本样本_Shell脚本
  6. java 动态树_使用dtree构建动态树型菜单
  7. 五分钟彻底学会iptables防火墙--技术流ken
  8. linux stat 命令查看文件信息
  9. Linux理论05:Linux的目录结构
  10. 鬼谷子72术,完整收藏