前言
Immugent最近注意到,生信宝库好久没有更新有关基础绘图的推文了,于是专门去找了最近常常碰到的专注于绘制热图的tidyHeatmap包的教程来学习了一下,现在分享给大家。
其实绘制热图的R包有很多了,从最开始的Pheatmap包,再到后来的ComplexHeatmap包,都是专门用来绘制热图的。事实上,今天介绍的这款tidyHeatmap包是在ComplexHeatmap包的基础上进行优化,简化了很多的操作。但是值得注意的是,tidyHeatmap包需要安装的依赖包较多,也需要最新的版本,最好安装GitHub版本,否则下面的部分功能使用不了。
代码展示
安装tidyHeatmap包,并导入示例数据。。
devtools::install_github("stemangiola/tidyHeatmap")
library(tidyHeatmap)
mtcars_tidy <-
mtcars |>
as_tibble(rownames="Car name") |>
# Scale
mutate_at(vars(-`Car name`, -hp, -vs), scale) |>
# tidyfy
pivot_longer(cols = -c(`Car name`, hp, vs), names_to = "Property", values_to = "Value")
mtcars_tidy
浅画一个热图
mtcars_heatmap <-
mtcars_tidy |>
heatmap(`Car name`, Property, Value, scale = "row" ) |>
add_tile(hp)
mtcars_heatmap
#Saving
mtcars_heatmap |> save_pdf("mtcars_heatmap.pdf")
Grouping and splitting
# Make up more groupings
mtcars_tidy_groupings =
mtcars_tidy |>
mutate(property_group = if_else(Property %in% c("cyl", "disp"), "Engine", "Other"))
mtcars_tidy_groupings |>
group_by(vs, property_group) |>
heatmap(`Car name`, Property, Value, scale = "row" ) |>
add_tile(hp)
provide colour palettes to groupings
mtcars_tidy_groupings |>
group_by(vs, property_group) |>
heatmap(
`Car name`, Property, Value ,
scale = "row",
palette_grouping = list(
# For first grouping (vs)
c("#66C2A5", "#FC8D62"),
# For second grouping (property_group)
c("#b58b4c", "#74a6aa")
)
) |>
add_tile(hp)
Multiple groupings and annotations
tidyHeatmap::pasilla |>
group_by(location, type) |>
heatmap(
.column = sample,
.row = symbol,
.value = `count normalised adjusted`,
scale = "row"
) |>
add_tile(condition) |>
add_tile(activation)
小结
从上面的流程我们可以看出tidyHeatmap的使用非常简单,而且出的图也是很美观的,使用者也可以根据需要选择其它配色。其实它的功能还远远不止于此,Immugent会在下一期推文中介绍有关tidyHeatmap包的其它个性化使用。
好啦,本期分享到这就结束了,我们下期再会~~