目錄
0引言
在之前使用R語言拼接圖片,一般的圖形用的是par
函數,ggplot2
的拼接使用的是gridExtra
包裏的grid.arrange
函數。不過這兩種方式沒辦法個性化的去拼接排布圖形,本篇將總結R語言中常用的圖形拼接函數和擴展包。初步介紹R語言的畫布拼接函數包。
1、customLayout包
1.1 主要函數介紹
函數 | 功能介紹 |
---|---|
lay_new | 創建畫布 |
lay_show | 查看畫布樣式 |
lay_bind_col | 按列拼接畫布效果類似於cbind |
lay_bind_row | 按行拼接畫布效果類似於rbind |
lay_split_field | 嵌套兩個畫布畫布 |
lay_set | 準備畫布類似於par |
下面具體講解上述表格內函數的使用方式,並使用上面函數構建實用簡介的圖片。
1.2主要函數講解
1.2.1 lay_new
> lay_new
function (mat, widths = NULL, heights = NULL)
參數講解:
- mat:輸入矩陣用於切分標號子圖片
- widths:設置寬的比例,長度爲n的向量
- heights:設置長的比例,長度爲n的向量
代碼示例:
# 創建一個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)
1.2.2 lay_show
> lay_show
function (layout)
這個函數只有一個參數,就是上面第一部分創建的畫布數據。輸出畫布的分佈及數字。運行下面代碼會得到畫布。
lay_show(lay)
1.2.3 lay_bind_col
lay_bind_col
function (x, y, widths = c(1, 1), addmax = TRUE)
lay_bind_row
的效果效果類似這裏主要講解lay_bind_col
。
參數講解:
- x:左邊的畫布
- y:右邊的畫布
- width:設置拼接比例
- addmax:沒用過不知
實際案例:一比一拼接2.3.2
中的畫布。
lay1 <- lay_bind_col(lay, lay, widths = c(1, 1))
lay_show(lay1)
1.2.4 lay_split_field
> lay_split_field
function (lay, newlay, field)
參數講解:
- y:原始畫布
- wlay:需要嵌套的畫布
- field:需要替換lay中的那個區域
例子:將2.3.2
中的畫布嵌套在自己的第4個區域上。
lay2 <- lay_split_field(lay, lay, field = 4)
lay_show(lay2)
1.3案例一
第一個案例是來子時間序列裏的圖形,時序圖、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)
1.4案例二
# 案例二:迴歸檢驗圖
x <- 1:50
y <- x + rnorm(50,5,5)
fit <- lm(y ~ x)
lay_show(lay3) # 該畫板實用的是案例一的例子2
plot(fit)
2、總結
更多的R語言畫布拼接的技巧會在下期持續更新,歡迎關注。希望大家能夠設計出好的畫布拼接,更好更高效的展示數據。