在使用R語言進行數據可視化的時候,常常需要將多張統計圖表繪制在同一張圖上面,從而更高效地傳遞信息,下面我們就來一起看看具體如何實現。
一、使用R語言自帶的函數繪制的圖像
R語言本身就已經內置了許多繪圖函數,能夠滿足較為基本的繪圖需求,例如hist()
、boxplot()
、spineplot()
等等。如果我們想要將使用這些函數繪制的圖像匯總在一張圖中,需要使用split.screen()
和screen()
函數,具體方法如下:
1. 步驟一:分割屏幕split.screen()
顧名思義,split.screen()
函數是用于分割屏幕的,它需要傳入一個形似c(nrow, ncol)
的參數,意為將屏幕分割為nrow
行,ncol
列;分割完成后函數會返回一個整數(integer)型向量,長度等于nrow * ncol
,即為分割之后屏幕的每一個部分對應的“編號”。這些“編號”將用于傳入screen()
函數,進行后續的繪圖工作。
2. 步驟二:指定繪圖位置screen()
分隔完屏幕之后,我們需要首先指定一張子圖的位置,使用screen()
函數,傳入之前分割屏幕時返回的“編號”, 便完成了指定。
3. 步驟三:繪圖
完成指定子圖位置之后,便可以進行正常的繪圖工作,使用hist()
、boxplot()
、spineplot()
等函數進行繪圖,注意每繪制完一張圖就需要使用screen()
來更改繪圖的位置。下面我們來看一個實例:
這里我們使用R語言內置的數據集AirPassengers
和cars
來進行演示:
# 分割屏幕
> split.screen(c(2, 1))
> [1] 1 2# 繪制第一個圖
> screen(1)
> plot(cars)# 繪制第二個圖
> screen(2)
> plot(AirPassengers)# 結束繪圖
> dev.off()

二、使用ggplot2繪制的圖像
ggplot2
是非常流行的R語言可視化包,功能極為強大,能夠繪制眾多復雜的統計圖表。在同一張圖中顯示多張ggplot2
圖像同樣也需要借助第三方的R包——ggpubr
。 ggpubr
包中的ggarrange()
可以方便地將多張圖整合在一張上面。其常用的參數如下:ggarrange(..., ncol = NULL, nrow = NULL)
。
其中...
是按順序依次列出的需要整合的圖表, ncol
是列數,nrow
是行數。可以看出,相比于R語言自帶函數繪制的圖像,在ggarrange()
的幫助下,ggplot2
繪制的圖像整合起來更加方便,下面我們看一個實例,依然使用R語言內置的數據集cars
:
# 繪制第一個圖像
> p1 = ggplot(cars, aes(x = speed, y = dist)) +geom_line(size = 1) +labs(x = "speed", y = 'dist')# 繪制第二個圖像
> p2 = ggplot(cars, mapping = aes(x = speed, y = dist)) +geom_point(size = 1, col = 'darker') + labs(x = "speed", y = 'dist') # 整合兩張圖
> ggarrange(p1, p2, ncol = 2, nrow = 1)
