好色之徒

2020-08-11热图绘制包tidyHeatmap

2020-08-11  本文已影响0人  iColors

这个包封装了赫赫有名的ComplexHeatmap。相比于ComplexHeatmap,算是懒人版的热图绘制包,简单易用。
优势是:
——指定列名用于模块化注解;
——提供分组一个分组表就能自定义行的分类。比如用管道函数 df %>% group_by(..);
——按照行或列的总数调整标签的大小;
——用Brewer和Viridis默认调色板;

函数 注解
heatmap 绘制热图
add_tile 为热图添加瓷砖样的注释
add_point 为热图添加点样的注释
add_bar 为热图添加柱状的注释
add_line 为热图添加线状的注释
save_pdf 为热图保存PDF

安装

devtools::install_github("stemangiola/tidyHeatmap")#最新版
install.packages("tidyHeatmap")#稳定版

输入数据

以mtcars为例

library(tidyHeatmap)
library(tidyverse)
mtcars_tidy = 
    mtcars %>% 
    as_tibble(rownames="Car name") %>% 

    # Scale
    mutate_at(vars(-`Car name`, -hp, -vs), scale) %>%

    # tidyfy
    gather(Property, Value, -`Car name`, -hp, -vs)

mtcars_tidy
## # A tibble: 288 x 5
##    `Car name`           hp    vs Property  Value
##    <chr>             <dbl> <dbl> <chr>     <dbl>
##  1 Mazda RX4           110     0 mpg       0.151
##  2 Mazda RX4 Wag       110     0 mpg       0.151
##  3 Datsun 710           93     1 mpg       0.450
##  4 Hornet 4 Drive      110     1 mpg       0.217
##  5 Hornet Sportabout   175     0 mpg      -0.231
##  6 Valiant             105     1 mpg      -0.330
##  7 Duster 360          245     0 mpg      -0.961
##  8 Merc 240D            62     1 mpg       0.715
##  9 Merc 230             95     1 mpg       0.450
## 10 Merc 280            123     1 mpg      -0.148
## # … with 278 more rows

绘图

用管道函数把数据框导入热图:
——指定行列名字
——列名的数值
——列名的注释

mtcars_heatmap = 
    mtcars_tidy %>% 
        heatmap(`Car name`, Property, Value ) %>%
        add_tile(hp)

mtcars_heatmap
image.png

保存图像

mtcars_heatmap %>% save_pdf("mtcars_heatmap.pdf")

分组

mtcars_tidy %>% 
    group_by(vs) %>%
    heatmap(`Car name`, Property, Value ) %>%
    add_tile(hp)
image.png

自定义颜色

mtcars_tidy %>% 
    heatmap(
        `Car name`, 
        Property, 
        Value,
        palette_value = c("red", "white", "blue")
    )
image.png

用grid::colorRamp2 函数提供更多变的颜色

mtcars_tidy %>% 
    heatmap(
        `Car name`, 
        Property, 
        Value,
        palette_value = circlize::colorRamp2(c(-2, -1, 0, 1, 2), viridis::magma(5))
    )
image.png

多重分组和注释

tidyHeatmap::pasilla %>%
    group_by(location, type) %>%
    heatmap(
            .column = sample,
            .row = symbol,
            .value = `count normalised adjusted`
        ) %>%
    add_tile(condition) %>%
    add_tile(activation)
image.png

改变注释的类型

“tile” (默认), 还有三种(“point”, “bar” , “line” )

pasilla_plus = 
    tidyHeatmap::pasilla %>%
        dplyr::mutate(act = activation) %>% 
        tidyr::nest(data = -sample) %>%
        dplyr::mutate(size = rnorm(n(), 4,0.5)) %>%
        dplyr::mutate(age = runif(n(), 50, 200)) %>%
        tidyr::unnest(data) 

pasilla_plus %>%
        heatmap(
            .column = sample,
            .row = symbol,
            .value = `count normalised adjusted`
        ) %>%
    add_tile(condition) %>%
    add_point(activation) %>%
    add_tile(act) %>%
    add_bar(size) %>%
    add_line(age)
image.png

这个包是不是更简单易学!适合只想画美图,不愿深究细探繁复语法的懒人们!!!

上一篇下一篇

猜你喜欢

热点阅读