首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言进阶之图形的合并

R语言进阶之图形的合并

作者头像
生信与临床
发布2020-08-05 16:55:14
发布2020-08-05 16:55:14
4.1K00
代码可运行
举报
运行总次数:0
代码可运行

为了节省版面,我们通常会将多张图片合成一张图,在R语言中我们可以使用par( )或者layout( )函数来轻松实现这个功能。

1. 函数par( )的使用

在使用函数par( )时, 你需要添加参数mfrow=c(n, m) 去创建一个n行 x m列 的画布,画布中的每一格可以放一张图片,此时图片是按照行排列的。如果你想按照列排列,则需要改用参数mfcol=c(n, m)

代码语言:javascript
代码运行次数:0
运行
复制
# 创建一个2行2列的画布
# 使用mtcars数据集作为示例
attach(mtcars) # 固定数据集
par(mfrow=c(2,2)) # 2行2列的画布,按行排列
plot(wt,mpg, main="Scatterplot of wt vs.mpg") # 绘制变量wt和 mpg之间的散点图
plot(wt,disp, main="Scatterplot of wt vsdisp") # 绘制变量wt和disp之间的散点图
hist(wt, main="Histogram of wt") # 绘制变量wt的直方图
boxplot(wt, main="Boxplot of wt") # 绘制变量wt的箱线图
代码语言:javascript
代码运行次数:0
运行
复制
# 创建3行1列的画布
attach(mtcars) # 固定数据集
par(mfrow=c(3,1)) # 3行1列画布,按行排列
hist(wt) # 绘制变量wt的直方图
hist(mpg) # 绘制变量mpg的直方图
hist(disp) # 绘制变量disp的直方图

2. 函数layout( )的使用

使用函数layout(mat)合并图片时需要注意其参数mat是一个矩阵,主要是用于指定单个图片的位置:

代码语言:javascript
代码运行次数:0
运行
复制
#画布第一行包含一张图片,而第二行包含两张图片
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
hist(wt)
hist(mpg)
hist(disp)

另外,我们可以通过参数widths=heights= 来更精准地控制每张图片的尺寸,其中widths= 代表的是每一列的宽度heights= 代表的是每一行的高度:

代码语言:javascript
代码运行次数:0
运行
复制
# 画布第一行包含一张图片,而第二行包含两张图片
# 第一行的高度是第二行的1/3
# 第二列的宽度是第一列的1/4
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE), widths=c(3,1),heights=c(1,2))
hist(wt)
hist(mpg)
hist(disp)

3. 图片高级合并

在接下来的例子里,我们将学会如何将两张箱线图添加到散点图上:

代码语言:javascript
代码运行次数:0
运行
复制
# 给散点图添加上箱线图
par(fig=c(0,0.8,0,0.8),new=TRUE)
plot(mtcars$wt, mtcars$mpg, xlab="CarWeight",
ylab="Miles Per Gallon")
par(fig=c(0,0.8,0.55,1), new=TRUE)
boxplot(mtcars$wt, horizontal=TRUE, axes=FALSE)
par(fig=c(0.65,1,0,0.8),new=TRUE)
boxplot(mtcars$mpg, axes=FALSE)
mtext("Enhanced Scatterplot", side=3,outer=TRUE, line=-3)

为了明白上述绘图原理,我们可以将整个画布理解成一个从左下角坐标点(0,0)到右上角坐标点(1,1)的平面坐标系,函数par( )里的参数fig=代表的就是图片左下角和右上角的坐标。

以第1个par( )函数的fig= c(0,0.8,0,0.8)为例,它实际上是指该图的横坐标从0到0.8,纵坐标也是从0到0.8,而第2个fig=c(0,0.8,0.55,1)则是指箱线图的横坐标从0到0.8,纵坐标从0.55到1,也即在上方的那个箱线图。

关于图形的合并就讲到这里,在后续的内容中我会简单和大家介绍一下如何使用“cowplot”包来对ggplot的对象进行合并,敬请期待!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信与临床 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3. 图片高级合并
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档