tidyHeatmap(二):带你个性化玩转热图
2022-12-15 本文已影响0人
生信宝库
前言
在上一期推文:tidyHeatmap(一):带你绘制高端热图中,Immugent简单介绍了一下tidyHeatmap包的基础使用。在本期推文中,Immugent将会进一步对其个性化功能进行讲解。
在跑本期代码之前,Immugent建议最好还是将上一期的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
添加多种信息,绘制多元化热图。
# Create some more data points
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)
# Plot
pasilla_plus |>
heatmap(
.column = sample,
.row = symbol,
.value = `count normalised adjusted`,
scale = "row"
) |>
add_tile(condition) |>
add_point(activation) |>
add_tile(act) |>
add_bar(size) |>
add_line(age)
图片
Add a layer on top of the heatmap
tidyHeatmap::pasilla |>
# filter
filter(symbol %in% head(unique(tidyHeatmap::pasilla$symbol), n = 10)) |>
heatmap(
.column = sample,
.row = symbol,
.value = `count normalised adjusted`,
scale = "row"
) |>
layer_point(
`count normalised adjusted log` > 6 & sample == "untreated3"
)
图片
Adding heatmap side-by-side
p_heatmap = heatmap(mtcars_tidy, `Car name`, Property, Value, scale = "row")
p_heatmap + p_heatmap
图片
External ComplexHeatmap functionalities
heatmap(mtcars_tidy, `Car name`, Property, Value, scale = "row" ) %>% as_ComplexHeatmap() %>% ComplexHeatmap::draw(heatmap_legend_side = "left" )
图片
Using patchwork to integrate heatmaps
library(ggplot2)
library(patchwork)
p_heatmap =
mtcars_tidy |>
heatmap(
`Car name`, Property, Value,
scale = "row",
show_heatmap_legend = FALSE,
row_names_gp = gpar(fontsize = 7)
)
p_ggplot = tibble(value = 1:10) %>% ggplot(aes(value)) + geom_density()
wrap_heatmap(p_heatmap) +
p_ggplot +
wrap_heatmap(p_heatmap) +
plot_layout(width = c(1, 0.3, 1))
图片
小结
想必大家在看高分文献中的热图时都会觉得很美观,能很好的展示要重点突出的信息。而自己绘制的热图却很丑,而且重点不突出,这些其实是可以自我调整进行改善的。
绘制出美观的热图主要依赖于亮点:第一点就是自己的数据,如果数据没有太明显的差异,再怎么美化也不会出很好的热图;第二点就是配色上,除了要选择对比明显的配色,还需要考虑整篇文章中的主题使用颜色,这样才不会太显得太突兀。无论从使用简易程度上还是配色上,tidyHeatmap包是大家的不二选择,小伙伴们赶紧实操起来吧!
好啦,本期分享到这就结束了,欢迎大家有好的绘图软件推荐给我们~~