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包是大家的不二选择,小伙伴们赶紧实操起来吧!

好啦,本期分享到这就结束了,欢迎大家有好的绘图软件推荐给我们~~

上一篇下一篇

猜你喜欢

热点阅读