首頁 > 軟體

R語言ggplot2拼圖包patchwork安裝使用

2022-06-24 14:01:50

引言

patchwork是基於ggplot2的拼圖包,因為ggplot2本身沒有強大的拼圖語法,而一般使用的gridExtracowplot的拼ggplot2圖形都存在不少問題。

我關注這個包蠻久了,現在Github上的Star數已經遠超大部分的R包,但似乎還沒有釋出到CRAN。我的工作看似跟作圖相關,寫的博文大多數也如此,但實際對圖形的掌控力並不咋的,所以還是要多多學習。

下面進入正題,掌握好ggplot2patchwork的基本用法,一般的圖形都可以搞定了,並必要搞的很複雜。解決問題是關鍵,認真工作也是關鍵,畫圖看起來是,其實不是。

安裝

# 需要提取安裝好devtools包,
# 如果你解決安裝和載入包很麻煩,可以試試pacman包,我在簡書寫了介紹和簡單使用
devtools::install_github("thomasp85/patchwork")

匯入:

p_load(patchwork)
# 或
# library(patchwork)

例子

patchwork的使用灰常簡單,使用+把要拼的圖加在一起就可以了。

library(ggplot2)
library(patchwork)
p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp))
p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear))
p1 + p2

我們不用建立物件,也可以像ggplot2本身使用一樣相加。

ggplot(mtcars) +
  geom_point(aes(mpg, disp)) +
  ggplot(mtcars) + 
  geom_boxplot(aes(gear, disp, group = gear))

另外,可以使用佈局函數plot_layout對拼接細節進行更細緻地指定,像每個圖的範圍,圖形的排列。

p1 + p2 + plot_layout(ncol = 1, heights = c(3, 1))

如果你想要在圖形之間新增一些空間,可以使用plot_spacer()填充一個空白格。

p1 + plot_spacer() + p2

增加花括號的使用進行巢狀可以佈置更復雜的圖形:

p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec))
p4 <- ggplot(mtcars) + geom_bar(aes(carb))
p4 + {
  p1 + {
    p2 +
      p3 +
      plot_layout(ncol = 1)
  }
} +
  plot_layout(ncol = 1)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

括號也是可以的:

p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec))
p4 <- ggplot(mtcars) + geom_bar(aes(carb))
p4 + (
  p1 + (
    p2 +
      p3 +
      plot_layout(ncol = 1)
  )
) +
  plot_layout(ncol = 1)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

高階特性

除了將圖形新增到一起,patchwork定義了一些有意思的操作符,,簡化了上面的巢狀語法。-操作符將左右兩邊的物件放在同一個巢狀層,而不是像+號把右邊放入左邊的巢狀層。

p1 + p2 + p3 + plot_layout(ncol = 1)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

p1 + p2 - p3 + plot_layout(ncol = 1)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

現在p1+p2p3在同一巢狀層。

|/操作符可以用來水平和垂直佈局。

(p1 | p2 | p3) /
      p4
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

子圖多的時候同時修改圖形比較麻煩,patchwork提供了*&用來簡化程式碼,它們都可以將同一個操作應用到所有圖形。

(p1 + (p2 + p3) + p4 + plot_layout(ncol = 1)) * theme_bw()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

需要注意*只會應用到當前巢狀層。

p1 + (p2 + p3) + p4 + plot_layout(ncol = 1) & theme_bw()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

&可以用遞迴的方式應用到所有層面。

以上就是R語言ggplot2拼圖包patchwork安裝使用的詳細內容,更多關於R語言ggplot2拼圖包patchwork的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com