「R」ggplot2拼图包patchwork推荐与使用
生物信息學習的正確姿勢
NGS系列文章包括NGS基礎、轉錄組分析?(Nature重磅綜述|關于RNA-seq你想知道的全在這)、ChIP-seq分析?(ChIP-seq基本分析流程)、單細胞測序分析?(重磅綜述:三萬字長文讀懂單細胞RNA測序分析的最佳實踐教程 (原理、代碼和評述))、DNA甲基化分析、重測序分析、GEO數據挖掘(典型醫學設計實驗GEO數據分析 (step-by-step) - Limma差異分析、火山圖、功能富集)等內容。
patchwork是基于ggplot2的拼圖包,因為ggplot2本身沒有強大的拼圖語法,而一般使用的gridExtra與cowplot的拼ggplot2圖形都存在不少問題。
我關注這個包蠻久了,現在Github上的Star數已經遠超大部分的R包,但似乎還沒有發布到CRAN。我的工作看似跟作圖相關,寫的博文大多數也如此,但實際對圖形的掌控力并不咋的,所以還是要多多學習。
下面進入正題,掌握好ggplot2與patchwork的基本用法,一般的圖形都可以搞定了,并必要搞的很復雜。解決問題是關鍵,認真工作也是關鍵,畫圖看起來是,其實不是。
安裝
#?需要提取安裝好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' image.png括號也是可以的:
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+p2與p3在同一嵌套層。
|與/操作符可以用來水平和垂直布局。
(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推荐与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最后一周 | 微生物组-扩增子16S分析
- 下一篇: 什么?你做的差异基因方法不合适?