R的基础绘图功能是个自成体系的系统,尽管有许多工具包可以“一行代码绘制一幅图”,但是小编仍然认为系统地学习基础功能非常重要。

本篇推文是为了补全关于基础绘图系统的拼图功能的介绍,前面已经介绍了两种方法:

  • 使用fig、new参数

  • 使用add参数

在阅读本篇推文之后,相信读者可以总结出不同方法的使用情境,进而迁移到ggplot2绘图系统的相关功能上。

mfrow/mfcol

这两个参数只能在par()函数中使用,对之后的绘图函数起作用。参数赋值形式如下:

par(mfrow = c(m, n))
par(mfcol = c(m, n))

以上代码表示,在一个绘图页面中绘制m行、n列个尺寸相同的图形;当图形铺满页面后(即图形数目达到m*n个)再新建绘图页面,并重复上述操作。

  • 在排列图形顺序时,mfrow参数是先从左到右、再从上到下,即按行排列;mcol参数是先从上到下、再从左到右,即按列排列;

  • 默认情况下,m和n的取值都是1,因此是一幅图形占据一个绘图页面;若想停止拼图,则要么将m和n重新设置为1,要么重启R。

x <- seq(-1, 0, 0.01)
y <- sqrt(1 - x^2)
par(mfrow = c(2,2))
plot(x, y)
plot(-x, y)
plot(x, -y)
plot(-x, -y)

将上述代码中的mfrow参数替换成mfcol参数,其他不变,效果如下:

x <- seq(-1, 0, 0.01)
y <- sqrt(1 - x^2)
par(mfcol = c(2,2))
plot(x, y)
plot(-x, y)
plot(x, -y)
plot(-x, -y)

x <- seq(-1, 0, 0.01)
y <- sqrt(1 - x^2)
par(mfrow = c(2,2), plt = c(0,1,0,1),xaxs = "i", yaxs = "i")
plot(x, y, ann = F)
plot(-x, y, ann = F)
plot(x, -y, ann = F)
plot(-x, -y, ann = F)

layout()

layout()函数是mfrowmfcol参数功能的拓展版。它在排列图形时不再局限于尺寸大小必须相同、页面必须铺满。

语法结构如下:

layout(mat, widths = rep.int(1, ncol(mat)),heights = rep.int(1, nrow(mat)),respect = FALSE)
  • mat:矩阵;元素表示该位置的图形编号,其中0表示该位置不绘制图形;

  • widths、heights:各列的宽和各行的高(可以为绝对值,也可以为相对值)。

对于如下矩阵:

mat <- matrix(c(3,3,1,2), 2, 2,byrow = T)
mat
##      [,1] [,2]
## [1,]    3    3
## [2,]    1    2

默认尺寸是等宽等高的,它对应的图形布局如下:

layout.show(layout(mat))

通过widthsheights参数修改各子图的尺寸:

layout.show(layout(mat, widths = c(2,1),heights = c(2,3)))

上述图中的数字即图形的编号,边框内为相应图形的绘制范围:

layout(mat, widths = c(2,1), heights = c(2,3))
set.seed(123)
opar <- par(no.readonly = TRUE)
x <- factor(rep(c(1,2), 50))
y <- rnorm(100)
hist(y)
plot(x, y)
par(plt = c(0.10, 0.96, 0.17, 0.95), mgp = c(2,1,0))
plot(1:100, y, ann = F)
par(opar)

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

  1. 技巧 | 如何使用R语言的基础绘图系统的拼图功能

    我们知道ggplot2工具包有很多方便的拼图拓展包,如cowplot.patchwork等,而本篇就来介绍在使用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 | 基础绘图系统(七)——各式各样的散点图/折线图

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

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

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

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

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

  8. graphics | 基础绘图系统(十)——星形图、四瓣图、马赛克图

    插播消息:最初建的交流群已经无法使用了,新建群的加入方式见次条推送. 本篇是"基础绘图系统"系列推文的最后一篇,我们来介绍三种不常见的图形,对应的绘图函数分别如下: stars() ...

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

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

最新文章

  1. LeetCode-Unique Binary Search Trees
  2. ClickHouse到底是什么?凭啥这么牛逼!
  3. 阿捷外传之Git代码统计:DotNetCore + PowerBI 实现Git仓库日志分析
  4. Log4j 2使用教程二 【详解】
  5. win7系统怎么拷贝到u盘_Win7系统电脑无法识别U盘启动盘怎么办?
  6. Linux(debian)操作基础(二)之ASPM(活动状态电源管理)
  7. 医学生可以跨专业考计算机的专业,可以跨考医学研究生:2016跨专业考研需谨慎的专业解读:临床医学...
  8. 拓端tecdat|R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
  9. 针对Sql Server中进行查询操作时提示“对象名无效”
  10. 帆软按钮控件变查询_JS使用填报页面的控件查询
  11. winscp使用教程 linux,WinSCP使用方法教程
  12. 结构体内数组arr[0]或者arr[1]变量的作用及使用方法
  13. Unity3D游戏开发初探
  14. 张飞老师硬件第十六部视频整理——硬件基础2
  15. 程序员2019可以看的书单
  16. mysql 执行错误1395_主义 - 常规错误:1395无法删除连接视图
  17. DO DIFFERENT TRACKING TASKS REQUIRE DIFFERENT APPEARANCE MODELS?——阅读笔记
  18. 50首最好听的英文歌
  19. Datatable 插件出现DataTable is not a function 错误
  20. DS串应用—最长重复子串

热门文章

  1. 等级保护2.0常见问题集
  2. 马化腾说它千年实现李彦宏说新瓶装旧酒,只有马云看好阿里笑了
  3. 超详细的MySQL工作原理 体系结构
  4. Kubernetes学习总结(18)—— Kubernetes 容器网络
  5. Docker学习总结(10)——10分钟玩转Docker
  6. Java基础学习总结(34)——HTTP协议详解
  7. kali怎么开启php服务器,kali开启端口、关闭防火墙方法
  8. android 视频编码vfr cfr,[转载]VFR的源转换CRF输出 批处理
  9. centos7登陆mysql_Centos7安装Myql8.0并授权登录
  10. Wget 命令用法详解