<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          「R」ggplot2拼圖包patchwork推薦與使用

          共 822字,需瀏覽 2分鐘

           ·

          2020-08-08 21:44

          生物信息學(xué)習(xí)的正確姿勢

          NGS系列文章包括NGS基礎(chǔ)、轉(zhuǎn)錄組分析?Nature重磅綜述|關(guān)于RNA-seq你想知道的全在這、ChIP-seq分析?ChIP-seq基本分析流程、單細胞測序分析?(重磅綜述:三萬字長文讀懂單細胞RNA測序分析的最佳實踐教程 (原理、代碼和評述))、DNA甲基化分析、重測序分析、GEO數(shù)據(jù)挖掘典型醫(yī)學(xué)設(shè)計實驗GEO數(shù)據(jù)分析 (step-by-step) - Limma差異分析、火山圖、功能富集等內(nèi)容

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

          我關(guān)注這個包蠻久了,現(xiàn)在Github上的Star數(shù)已經(jīng)遠超大部分的R包,但似乎還沒有發(fā)布到CRAN。我的工作看似跟作圖相關(guān),寫的博文大多數(shù)也如此,但實際對圖形的掌控力并不咋的,所以還是要多多學(xué)習(xí)。

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

          安裝

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

          導(dǎo)入:

          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

          我們不用創(chuàng)建對象,也可以像ggplot2本身使用一樣相加。

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

          另外,可以使用布局函數(shù)plot_layout對拼接細節(jié)進行更細致地指定,像每個圖的范圍,圖形的排列。

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

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

          p1?+?plot_spacer()?+?p2

          增加花括號的使用進行嵌套可以布置更復(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

          括號也是可以的:

          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'

          現(xiàn)在p1+p2p3在同一嵌套層。

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

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

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

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

          需要注意*只會應(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)用到所有層面。

          往期精品(點擊圖片直達文字對應(yīng)教程)


          后臺回復(fù)“生信寶典福利第一波”或點擊閱讀原文獲取教程合集

          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本色色图| 黑妞操逼| 欧美夜夜爽| 99久久久久 | 成人网站在线进入 |