R語言可視化——圖片拼接排布(一)

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語言畫布拼接的技巧會在下期持續更新,歡迎關注。希望大家能夠設計出好的畫布拼接,更好更高效的展示數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章