这个包封装了赫赫有名的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

保存图像
mtcars_heatmap %>% save_pdf("mtcars_heatmap.pdf")
分组
mtcars_tidy %>%
group_by(vs) %>%
heatmap(`Car name`, Property, Value ) %>%
add_tile(hp)

自定义颜色
mtcars_tidy %>%
heatmap(
`Car name`,
Property,
Value,
palette_value = c("red", "white", "blue")
)

用grid::colorRamp2 函数提供更多变的颜色
mtcars_tidy %>%
heatmap(
`Car name`,
Property,
Value,
palette_value = circlize::colorRamp2(c(-2, -1, 0, 1, 2), viridis::magma(5))
)

多重分组和注释
tidyHeatmap::pasilla %>%
group_by(location, type) %>%
heatmap(
.column = sample,
.row = symbol,
.value = `count normalised adjusted`
) %>%
add_tile(condition) %>%
add_tile(activation)

改变注释的类型
“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)

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