美文网首页
tidyHeatmap(二):带你个性化玩转热图

tidyHeatmap(二):带你个性化玩转热图

作者: 生信宝库 | 来源:发表于2022-12-15 13:51 被阅读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包是大家的不二选择,小伙伴们赶紧实操起来吧!

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

    相关文章

      网友评论

          本文标题:tidyHeatmap(二):带你个性化玩转热图

          本文链接:https://www.haomeiwen.com/subject/djsrqdtx.html