日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

作者:Hayley筆記 ? 更新時間: 2022-08-17 編程語言

引言

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'

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

原文鏈接:https://www.jianshu.com/p/e57555d48c91

欄目分類
最近更新