R语言的基础绘图参数可通过
par()
函数设置或者查询。关于拼图相关主要为mfcol
或mfrow
,此外layout()
函数可以实现更精细的布局调整。
0 绘图基本流程(4步)
# (1) 保存原始的默认参数
opar <- par(no.readonly=TRUE)
# (2) 声明拼图方案
par(mfcol=c(2,1))
# or
# layout(matrix(c(1,1,2,3),2,2,byrow=TRUE))
# (3) 基础绘图函数绘制图形
data(mtcars)
plot(mtcars$wt, mtcars$mpg)
barplot(mtcars$mpg)
# (4) 恢复默认布局参数:一个面板一张图
par(opar)
1、mfcol
或mfrow
参数
-
mfcol=c(x,y)
与mfrow=c(x,y)
将初始绘图面板分割为x行,y列; - 二者区别在于前者按列的顺序依次填充、布局;而后者为按行依次填充、布局
opar <- par(no.readonly=TRUE)
par(mfcol=c(2,1)) #2行1列
#par(mfrow=c(2,1))
data(mtcars)
plot(mtcars$wt, mtcars$mpg)
barplot(mtcars$mpg)
par(opar)
opar <- par(no.readonly=TRUE)
par(mfrow=c(2,2)) #2行2列(按行填充)
plot(mtcars$wt, mtcars$mpg)
barplot(mtcars$mpg)
plot(density(mtcars$wt))
hist(mtcars$qsec)
par(opar)
上述的拼图方法是比较
规矩
的,即把图平均分为几行几列。下面介绍的方法会实现更灵活的布局方案。
2、layout()
布局
(1)首先通过矩阵设置排版方案
如下矩阵表示将三张图拼在一起:第一张图在第一行,第二、三张图在第二行
mt = matrix(c(1,1,2,3),
nrow = 2, byrow=TRUE)
mt
# [,1] [,2]
# [1,] 1 1
# [2,] 2 3
如下矩阵表示将四张图拼在一起:第一张图在第一列,第二、三张图在第二列,第四张图在第三列
mt = matrix(c(1,1,2,3,4,4),
nrow = 2, byrow=FALSE)
mt
# [,1] [,2] [,3]
# [1,] 1 2 4
# [2,] 1 3 4
(2) 然后设置长宽比
- 主要通过
widths
参数、heights
参数设调整,默认子图为等宽等高;可结合下面示例体会用法
(3) 示例
opar <- par(no.readonly=TRUE)
#布局设置
mt = matrix(c(1,1,2,3),
nrow = 2,byrow=TRUE)
layout(mt,
widths=c(3,1), #高度比为 3:1
heights=c(1,2)) #宽度比为 1:2
#绘图
plot(mtcars$wt, mtcars$mpg)
barplot(mtcars$mpg)
plot(density(mtcars$wt))
par(opar)
opar <- par(no.readonly=TRUE)
mt = matrix(c(1,1,2,3,4,4),
nrow = 2, byrow=FALSE)
layout(mt,
widths = c(2,2,1),
heights = c(1,2))
plot(mtcars$wt, mtcars$mpg)
barplot(mtcars$mpg)
plot(density(mtcars$wt))
hist(mtcars$qsec)
par(opar)
网友评论