「R」ggplot2拼图包patchwork推荐与使用
生物信息學(xué)習(xí)的正確姿勢(shì)
NGS系列文章包括NGS基礎(chǔ)、轉(zhuǎn)錄組分析?(Nature重磅綜述|關(guān)于RNA-seq你想知道的全在這)、ChIP-seq分析?(ChIP-seq基本分析流程)、單細(xì)胞測(cè)序分析?(重磅綜述:三萬(wàn)字長(zhǎng)文讀懂單細(xì)胞RNA測(cè)序分析的最佳實(shí)踐教程 (原理、代碼和評(píng)述))、DNA甲基化分析、重測(cè)序分析、GEO數(shù)據(jù)挖掘(典型醫(yī)學(xué)設(shè)計(jì)實(shí)驗(yàn)GEO數(shù)據(jù)分析 (step-by-step) - Limma差異分析、火山圖、功能富集)等內(nèi)容。
patchwork是基于ggplot2的拼圖包,因?yàn)間gplot2本身沒(méi)有強(qiáng)大的拼圖語(yǔ)法,而一般使用的gridExtra與cowplot的拼ggplot2圖形都存在不少問(wèn)題。
我關(guān)注這個(gè)包蠻久了,現(xiàn)在Github上的Star數(shù)已經(jīng)遠(yuǎn)超大部分的R包,但似乎還沒(méi)有發(fā)布到CRAN。我的工作看似跟作圖相關(guān),寫(xiě)的博文大多數(shù)也如此,但實(shí)際對(duì)圖形的掌控力并不咋的,所以還是要多多學(xué)習(xí)。
下面進(jìn)入正題,掌握好ggplot2與patchwork的基本用法,一般的圖形都可以搞定了,并必要搞的很復(fù)雜。解決問(wèn)題是關(guān)鍵,認(rèn)真工作也是關(guān)鍵,畫(huà)圖看起來(lái)是,其實(shí)不是。
安裝
#?需要提取安裝好devtools包, #?如果你解決安裝和載入包很麻煩,可以試試pacman包,我在簡(jiǎn)書(shū)寫(xiě)了介紹和簡(jiǎn)單使用 devtools::install_github("thomasp85/patchwork")導(dǎo)入:
p_load(patchwork) #?或 #?library(patchwork)例子
patchwork的使用灰常簡(jiǎn)單,使用+把要拼的圖加在一起就可以了。
library(ggplot2) library(patchwork)p1?<-?ggplot(mtcars)?+?geom_point(aes(mpg,?disp)) p2?<-?ggplot(mtcars)?+?geom_boxplot(aes(gear,?disp,?group?=?gear))p1?+?p2我們不用創(chuàng)建對(duì)象,也可以像ggplot2本身使用一樣相加。
ggplot(mtcars)?+geom_point(aes(mpg,?disp))?+ggplot(mtcars)?+?geom_boxplot(aes(gear,?disp,?group?=?gear))另外,可以使用布局函數(shù)plot_layout對(duì)拼接細(xì)節(jié)進(jìn)行更細(xì)致地指定,像每個(gè)圖的范圍,圖形的排列。
p1?+?p2?+?plot_layout(ncol?=?1,?heights?=?c(3,?1))如果你想要在圖形之間添加一些空間,可以使用plot_spacer()填充一個(gè)空白格。
p1?+?plot_spacer()?+?p2增加花括號(hào)的使用進(jìn)行嵌套可以布置更復(fù)雜的圖形:
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括號(hào)也是可以的:
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'高級(jí)特性
除了將圖形添加到一起,patchwork定義了一些有意思的操作符,,簡(jiǎn)化了上面的嵌套語(yǔ)法。-操作符將左右兩邊的對(duì)象放在同一個(gè)嵌套層,而不是像+號(hào)把右邊放入左邊的嵌套層。
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'現(xiàn)在p1+p2與p3在同一嵌套層。
|與/操作符可以用來(lái)水平和垂直布局。
(p1?|?p2?|?p3)?/p4 ##?`geom_smooth()`?using?method?=?'loess'?and?formula?'y?~?x'子圖多的時(shí)候同時(shí)修改圖形比較麻煩,patchwork提供了*與&用來(lái)簡(jiǎn)化代碼,它們都可以將同一個(gè)操作應(yīng)用到所有圖形。
(p1?+?(p2?+?p3)?+?p4?+?plot_layout(ncol?=?1))?*?theme_bw() ##?`geom_smooth()`?using?method?=?'loess'?and?formula?'y?~?x'需要注意*只會(huì)應(yīng)用到當(dāng)前嵌套層。
p1?+?(p2?+?p3)?+?p4?+?plot_layout(ncol?=?1)?&?theme_bw() ##?`geom_smooth()`?using?method?=?'loess'?and?formula?'y?~?x'&可以用遞歸的方式應(yīng)用到所有層面。
往期精品(點(diǎn)擊圖片直達(dá)文字對(duì)應(yīng)教程)
后臺(tái)回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集
總結(jié)
以上是生活随笔為你收集整理的「R」ggplot2拼图包patchwork推荐与使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 最后一周 | 微生物组-扩增子16S分析
- 下一篇: 什么?你做的差异基因方法不合适?