<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>

          使用ComplexHeatmap繪制3D熱圖

          共 2772字,需瀏覽 6分鐘

           ·

          2021-03-30 22:23

          起因

          ComplexHeatmap包有一個(gè)densityHeatmap()函數(shù)用來(lái)對(duì)一組分布進(jìn)行可視化。例如下面的例子:

          library(ComplexHeatmap)
          set.seed(123)
          mat = matrix(rnorm(500), ncol = 10)
          colnames(mat) = letters[1:10]
          densityHeatmap(mat)

          在R圖形系統(tǒng)中,我們也可以使用histogram來(lái)可視化分布,因此從ComplexHeatmap版本2.7.9開(kāi)始,我新加了一個(gè)函數(shù)frequencyHeatmap(),就像是一個(gè)histogram版本的density heatmap。其用法和densityHeatmap()非常類(lèi)似:

          frequencyHeatmap(mat)

          在這里,區(qū)間中的頻度使用熱圖進(jìn)行可視化。

          那么現(xiàn)在,頻度熱圖被稱(chēng)作是密度熱圖的histogram版本,但這看起來(lái)一點(diǎn)都不像histogram。那么可能一個(gè)3D的熱圖在這里更加適合。這可以通過(guò)在frequencyHeatmap()中設(shè)置參數(shù)use_3d = TRUE來(lái)將2D熱圖轉(zhuǎn)換為3D熱圖:

          frequencyHeatmap(mat, use_3d = TRUE)

          這看起來(lái)好多了!下面一節(jié)我將會(huì)介紹如何在ComplexHeatmap包中集成3D熱圖功能的。


          3D熱圖的實(shí)現(xiàn)

          首先,我們要能畫(huà)3D的柱子,這可以通過(guò)新函數(shù)bar3D()實(shí)現(xiàn)。用法如下:

          bar3D(x = 0.5, y = 0.5, w = 0.2
              h = 0.2, l = unit(1"cm"), theta = 60)

          其中各個(gè)參數(shù)的意義不言而喻,見(jiàn)下圖:

          bar3D()中,fill參數(shù)控制柱子的顏色。為了增強(qiáng)3D效果,柱子的三個(gè)面的顏色有略微輕微不同的明亮度。

          bar3D(x = seq(0.20.8, length = 4), y = 0.5
              w = unit(5"mm"), h = unit(5"mm"), 
              l = unit(1"cm"), fill = c("red""green""blue""purple"))

          參數(shù)theta控制投影的角度,見(jiàn)下例:

          bar3D(x = seq(0.20.8, length = 4), y = 0.5
              w = unit(5"mm"), h = unit(5"mm"), 
              l = unit(1"cm"), theta = c(20406080))

          好了,現(xiàn)在既然我們已經(jīng)能夠畫(huà)3D的柱子了,為了實(shí)現(xiàn)3D的熱圖,我們可以通過(guò)cell_fun或者layer_fun提供的自定義函數(shù)來(lái)將每一個(gè)3D柱子放置在熱圖的格子上,其中柱子的高度和熱圖中相應(yīng)的值對(duì)應(yīng)。這里我寫(xiě)了一個(gè)新函數(shù)Heatmap3D()可以直接拿來(lái)使用。其用法和Heatmap()幾乎完全相同。見(jiàn)下面的例子:

          set.seed(7)
          mat = matrix(runif(100), 10)
          rownames(mat) = LETTERS[1:10]
          colnames(mat) = letters[1:10]
          Heatmap3D(mat, name = "mat", column_title = "This is a 3D heatmap")

          當(dāng)位于熱圖邊緣的柱子太高時(shí),可能會(huì)和熱圖中其他元件重疊,那么這時(shí)候需要進(jìn)行手動(dòng)的微調(diào)。在上面的例子中,標(biāo)題和legend和3D柱子有重疊,這可以通過(guò)手動(dòng)設(shè)置ht_opt$HEATMAP_LEGEND_PADDINGht_opt$TITLE_PADDING來(lái)進(jìn)行調(diào)整:

          ht_opt$HEATMAP_LEGEND_PADDING = unit(5"mm")
          ht_opt$TITLE_PADDING = unit(c(92), "mm"# bottom and top padding
          Heatmap3D(mat, name = "mat", column_title = "This is a 3D heatmap")

          看,現(xiàn)在看起來(lái)好多了。

          下面一個(gè)例子是對(duì)一個(gè)麻疹疫苗數(shù)據(jù)集的可視化,第一張圖是2D熱圖,第二張圖是3D熱圖。源代碼可以通過(guò)點(diǎn)擊“閱讀全文”獲得。

          最后,InteractiveComplexHeatmap包可以將任何通過(guò)ComplexHeatmap生成的熱圖轉(zhuǎn)變?yōu)橐粋€(gè)Shiny app,那么Heatmap3D()生成的熱圖也同樣可以。只需要在熱圖生成后運(yùn)行htShiny()即可:


          往期精品(點(diǎn)擊圖片直達(dá)文字對(duì)應(yīng)教程)

          機(jī)器學(xué)習(xí)

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



          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  久久网国产 | 伊人久久大香线蕉久久婷婷 | 成人午夜人妻一区二区三区视频 | 黄色片网站免费在线观看 | 污视频网站在线观看国产 |