在之前使用R语言拼接图片,一般的图形用的是par
函数,ggplot2
的拼接使用的是gridExtra
包里的grid.arrange
函数。不过这两种方式没办法个性化的去拼接排布图形,本篇将总结R语言中常用的图形拼接函数和扩展包。初步介绍R语言的画布拼接函数包。
函数 | 功能介绍 |
---|---|
lay_new | 创建画布 |
lay_show | 查看画布样式 |
lay_bind_col | 按列拼接画布效果类似于cbind |
lay_bind_row | 按行拼接画布效果类似于rbind |
lay_split_field | 嵌套两个画布画布 |
lay_set | 准备画布类似于par |
下面具体讲解上述表格内函数的使用方式,并使用上面函数构建实用简介的图片。
> lay_new
function (mat, widths = NULL, heights = NULL)
参数讲解:
# 创建一个4x2的画布数据
lay1 <- lay_new(
mat = matrix(1:8, ncol = 2),
widths = c(2,1),
heights = c(1,1,1,1)
)
> lay
CustomLayout object:
Specification:
2 1
1 1 5
1 2 6
1 3 7
1 4 8
To print the layout on your graphics device plese use:
lay(x)
> lay_show
function (layout)
这个函数只有一个参数,就是上面第一部分创建的画布数据。输出画布的分布及数字。运行下面代码会得到画布。
lay_show(lay)
lay_bind_col
function (x, y, widths = c(1, 1), addmax = TRUE)
lay_bind_row
的效果效果类似这里主要讲解lay_bind_col
。
参数讲解:
2.3.2
中的画布。lay1 <- lay_bind_col(lay, lay, widths = c(1, 1))
lay_show(lay1)
> lay_split_field
function (lay, newlay, field)
参数讲解:
2.3.2
中的画布嵌套在自己的第4个区域上。lay2 <- lay_split_field(lay, lay, field = 4)
lay_show(lay2)
第一个案例是来子时间序列里的图形,时序图、acf、pacf,残差直方图等。
下面是具体代码和效果:
# 案例一
# 构造时间序列数据
n = 50
TS <- ts(rnorm(n, 2, 4))
第一个例子:
# 准备画布
lay1 <- lay_new(
mat = matrix(1:2, ncol = 1),
heights = c(1,1)
)
lay2 <- lay_new(
mat = matrix(1:2, ncol = 2),
widths = c(1,1)
)
lay3 <- lay_split_field(lay1, lay2, field = 2)
# 开始画图
lay_show(lay3)
acf(TS)
pacf(TS)
# 准备画布
lay1 <- lay_new(
mat = matrix(1:3, ncol = 1),
heights = c(1,1,1)
)
lay2 <- lay_new(
mat = matrix(1:2, ncol = 2),
widths = c(1,1)
)
lay3 <- lay_split_field(lay2, lay1, field = 2)
# 开始画图
lay_show(lay3)
hist(TS)
plot(TS)
acf(TS)
pacf(TS)
# 案例二:回归检验图
x <- 1:50
y <- x + rnorm(50,5,5)
fit <- lm(y ~ x)
lay_show(lay3) # 该画板实用的是案例一的例子2
plot(fit)
更多的R语言画布拼接的技巧会在下期持续更新,欢迎关注。希望大家能够设计出好的画布拼接,更好更高效的展示数据。