美文网首页科研信息学
[可视化|R包]ComplexHeatmap学习笔记③Makin

[可视化|R包]ComplexHeatmap学习笔记③Makin

作者: 郑宝童 | 来源:发表于2019-07-05 08:35 被阅读0次
    1. ComplexHeatmap学习笔记①Introduction to ComplexHeatmap package
    2. ComplexHeatmap学习笔记②Making A Single Heatmap

    Making A List of Heatmaps 制作一组热图


    A list of heatmaps可以优化多个数据源之间对应关系的可视化。在这个vignette中,我们将讨论making a list of heatmaps 的配置,您可以在[Examples]vignette 以及在ComplexHeatmap paper的[supplementaries]中看到更多真实的例子。

    Heatmap concatenation 合并多个热图

    你可以从左到右排列多个热图。实际上,一个单独的热图只是长度为1的heatmap list的特殊情况。

    heatmap()实际上是一类单个heatmap的构造函数。如果要组合多个heatmap,用户可以通过+运算符将一个heatmap附加到另一个heatmap。

    library(ComplexHeatmap)
    
    mat1 = matrix(rnorm(80, 2), 8, 10)
    mat1 = rbind(mat1, matrix(rnorm(40, -2), 4, 10))
    rownames(mat1) = paste0("R", 1:12)
    colnames(mat1) = paste0("C", 1:10)
    
    mat2 = matrix(rnorm(60, 2), 6, 10)
    mat2 = rbind(mat2, matrix(rnorm(60, -2), 6, 10))
    rownames(mat2) = paste0("R", 1:12)
    colnames(mat2) = paste0("C", 1:10)
    
    ht1 = Heatmap(mat1, name = "ht1")
    ht2 = Heatmap(mat2, name = "ht2")
    class(ht1)
    
    ## [1] "Heatmap"
    ## attr(,"package")
    ## [1] "ComplexHeatmap"
    
    class(ht2)
    
    ## [1] "Heatmap"
    ## attr(,"package")
    ## [1] "ComplexHeatmap"
    
    ht1 + ht2
    
    两图拼接

    在默认模式下,第二个heatmap中的树形图将被删除,行顺序也将与第一个相同.

    两个heatmap相加的返回值是一个heatmaplist对象。直接调用ht_list对象将调用draw()方法的默认设置。通过显式调用draw()方法,您可以拥有更多的控件,例如图例和标题。

    ht_list = ht1 + ht2
    class(ht_list)
    
    ## [1] "HeatmapList"
    ## attr(,"package")
    ## [1] "ComplexHeatmap"
    

    您可以在heatmap list中附加任意数量的heatmap。还可以将heatmap list 附加到heatmap list。

    ht1 + ht1 + ht1
    ht1 + ht_list
    ht_list + ht1
    ht_list + ht_list
    

    NULL 可以被赋值给heatmaplist中。当用户想通过for循环构造一个heatmap list时,它将是很方便的。

    ht_list = NULL
    for(s in sth) {
        ht_list = ht_list + Heatmap(...)
    }
    
    

    Titles 标题

    A heatmap list还具有独立于热图标题的标题。--单个heatmap有单独的标题,组合起来的heatmap list也可以弄个heatmap list标题

    ht1 = Heatmap(mat1, name = "ht1", row_title = "Heatmap 1", column_title = "Heatmap 1")
    ht2 = Heatmap(mat2, name = "ht2", row_title = "Heatmap 2", column_title = "Heatmap 2")
    ht_list = ht1 + ht2
    
    draw(ht_list, row_title = "Two heatmaps, row title", row_title_gp = gpar(col = "red"),
        column_title = "Two heatmaps, column title", column_title_side = "bottom")
    
    
    heatmap list标题

    Gaps between heatmaps 热图间的间隔

    热图间的间隔可以通过 gap 参数配合unit 对象来设置.

    draw(ht_list, gap = unit(1, "cm"))
    
    热图间的间隔距离设置
    draw(ht_list + ht_list, gap = unit(c(3, 6, 9, 0), "mm"))
    
    ## Warning in .local(object, ...): Heatmap/row annotation names are duplicated: ht1, ht2
    
    image.png

    Size of heatmaps 热图的大小设置

    一些(不是所有)热图的宽度可以设置为固定的宽度。

    ht1 = Heatmap(mat1, name = "ht1", column_title = "Heatmap 1")
    ht2 = Heatmap(mat2, name = "ht2", column_title = "Heatmap 2", width = unit(5, "cm"))
    ht1 + ht2
    
    为热图设置固定宽度

    or宽度可以设置为相对值。 Please not in this case, width for all heatmaps should be set (relative width and fixed width can be mixed)

    ht1 = Heatmap(mat1, name = "ht1", column_title = "Heatmap 1", width = 2)
    ht2 = Heatmap(mat2, name = "ht2", column_title = "Heatmap 2", width = 1)
    ht1 + ht2
    
    为热图设置相对宽度

    Auto adjustment 自动调整

    如果绘制了多个热图,则会有一些自动调整。应该有一个主热图,默认情况下是第一个热图。在剩余热图中的一些设置将会被主热图的设置所修改 The adjustment are:

    • 剩余热图的行聚类被移除.
    • 剩余热图的行标题被移除.
    • 如果主热图被按行分隔,其他剩余热图也将被拆分,拆分样式和主热图一样.

    主热图可以通过“main_heatmap”参数指定。它的值可以是 a numeric index或热图的名称(当然,在创建“热图”对象时需要设置热图名称).

    ht1 = Heatmap(mat1, name = "ht1", column_title = "Heatmap 1", km = 2)
    ht2 = Heatmap(mat2, name = "ht2", column_title = "Heatmap 2")
    ht1 + ht2
    
    为热图设置title
    # note we changed the order of `ht1` and `ht2`
    draw(ht2 + ht1)
    
    调换两个热图的顺序
    # here although `ht1` is the second heatmap, we specify `ht1` to be
    # the main heatmap by explicitely setting `main_heatmap` argument
    draw(ht2 + ht1, main_heatmap = "ht1")
    #用main_heatmap参数设定主热图
    
    设置主热图

    如果主热图中没有行聚类,则所有其他热图也没有行聚类

    ht1 = Heatmap(mat1, name = "ht1", column_title = "Heatmap 1", cluster_rows = FALSE)
    ht2 = Heatmap(mat2, name = "ht2", column_title = "Heatmap 2")
    ht1 + ht2
    
    主热图不设行聚类

    Change graphic parameters simultaneously 同时更改图形参数

    ht_global_opt() can set graphic parameters for dimension names and titles as global settings.ht_global_opt()可以为维名称和标题设置图形参数,将其设置为全局设置。

    ht_global_opt(heatmap_row_names_gp = gpar(fontface = "italic"), 
                  heatmap_column_names_gp = gpar(fontsize = 14))
    ht1 = Heatmap(mat1, name = "ht1", column_title = "Heatmap 1")
    ht2 = Heatmap(mat2, name = "ht2", column_title = "Heatmap 2")
    ht1 + ht2
    
    全局设置
    ht_global_opt(RESET = TRUE)
    

    以下是“ht_global_opt()”支持的全局设置。通过这个函数,您还可以控制图例的设置.

    names(ht_global_opt())
    
    ##  [1] "heatmap_row_names_gp"             "heatmap_column_names_gp"         
    ##  [3] "heatmap_row_title_gp"             "heatmap_column_title_gp"         
    ##  [5] "heatmap_legend_title_gp"          "heatmap_legend_title_position"   
    ##  [7] "heatmap_legend_labels_gp"         "heatmap_legend_grid_height"      
    ##  [9] "heatmap_legend_grid_width"        "heatmap_legend_grid_border"      
    ## [11] "annotation_legend_title_gp"       "annotation_legend_title_position"
    ## [13] "annotation_legend_labels_gp"      "annotation_legend_grid_height"   
    ## [15] "annotation_legend_grid_width"     "annotation_legend_grid_border"   
    ## [17] "fast_hclust"
    

    Retrieve orders and dendrograms 检索顺序和树状图

    row_order, column_order, row_dend and column_dend 可以被用作从热图中检索相应的信息. 用法可以直接从下方的例子中学习:

    ht_list = ht1 + ht2
    row_order(ht_list)
    
    ## [[1]]
    ##  [1]  8  3  4  1  5  7  2  6  9 11 10 12
    
    column_order(ht_list)
    
    ## $ht1
    ##  [1]  5  1  3  2  7  9  6 10  8  4
    ## 
    ## $ht2
    ##  [1]  9  4  6  7  8  1  5 10  3  2
    
    
    row_dend(ht_list)
    
    ## [[1]]
    ## 'dendrogram' with 2 branches and 12 members total, at height 16.14288
    
    column_dend(ht_list)
    
    ## $ht1
    ## 'dendrogram' with 2 branches and 10 members total, at height 8.069474 
    ## 
    ## $ht2
    ## 'dendrogram' with 2 branches and 10 members total, at height 6.883646
    

    如果尚未绘制“ht_list”,那么如果矩阵很大,调用这四个函数会有点慢。但是,如果已经绘制了“ht_list”,这意味着已经将聚类应用于矩阵,那么检索这些信息将非常快。

    ht_list = draw(ht1 + ht2)
    row_order(ht_list)
    column_order(ht_list)
    row_dend(ht_list)
    column_dend(ht_list)
    

    Heatmap list with row annotations 带有行注释的热图列表(Heatmap list)

    行注释可以添加到 heatmap list中, 查看 [Heatmap Annotation] 获取更多的解释.

    Modify row orders/clustering in main heatmap 修改主热图中的行顺序/聚类

    从版本1.11.1, 主热图的行顺序/聚类设置可以直接在"draw()"函数中设置。这使得切换主热图非常方便,无需单独修改热图中的设置。实际上,在'draw()'中指定的设置将覆盖主热图中的相应设置。

    split = rep(c("a", "b"), each = 6)
    ht_list = Heatmap(mat1, name = "mat1", cluster_rows = FALSE, column_title = "mat1") + 
              Heatmap(mat2, name = "mat2", cluster_rows = FALSE, column_title = "mat2")
    draw(ht_list, main_heatmap = "mat1", split = split)
    
    image.png
    draw(ht_list, main_heatmap = "mat2", km = 2, cluster_rows = TRUE)
    
    image.png
    draw(ht_list, cluster_rows = TRUE, main_heatmap = "mat1", show_row_dend =TRUE)
    
    image.png
    draw(ht_list, cluster_rows = TRUE, main_heatmap = "mat2", show_row_dend =TRUE)
    
    image.png

    Session info

    sessionInfo()
    
    
    ## R version 3.5.1 Patched (2018-07-24 r75008)
    ## Platform: x86_64-w64-mingw32/x64 (64-bit)
    ## Running under: Windows Server 2012 R2 x64 (build 9600)
    ## 
    ## Matrix products: default
    ## 
    ## locale:
    ## [1] LC_COLLATE=C                           LC_CTYPE=English_United States.1252   
    ## [3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
    ## [5] LC_TIME=English_United States.1252    
    ## 
    ## attached base packages:
    ##  [1] stats4    parallel  grid      stats     graphics  grDevices utils     datasets  methods  
    ## [10] base     
    ## 
    ## other attached packages:
    ##  [1] dendextend_1.9.0      dendsort_0.3.3        cluster_2.0.7-1       IRanges_2.16.0       
    ##  [5] S4Vectors_0.20.0      BiocGenerics_0.28.0   HilbertCurve_1.12.0   circlize_0.4.4       
    ##  [9] ComplexHeatmap_1.20.0 knitr_1.20            markdown_0.8         
    ## 
    ## loaded via a namespace (and not attached):
    ##  [1] mclust_5.4.1           Rcpp_0.12.19           mvtnorm_1.0-8          lattice_0.20-35       
    ##  [5] png_0.1-7              class_7.3-14           assertthat_0.2.0       mime_0.6              
    ##  [9] R6_2.3.0               GenomeInfoDb_1.18.0    plyr_1.8.4             evaluate_0.12         
    ## [13] ggplot2_3.1.0          highr_0.7              pillar_1.3.0           GlobalOptions_0.1.0   
    ## [17] zlibbioc_1.28.0        rlang_0.3.0.1          lazyeval_0.2.1         diptest_0.75-7        
    ## [21] kernlab_0.9-27         whisker_0.3-2          GetoptLong_0.1.7       stringr_1.3.1         
    ## [25] RCurl_1.95-4.11        munsell_0.5.0          compiler_3.5.1         pkgconfig_2.0.2       
    ## [29] shape_1.4.4            nnet_7.3-12            tidyselect_0.2.5       gridExtra_2.3         
    ## [33] tibble_1.4.2           GenomeInfoDbData_1.2.0 viridisLite_0.3.0      crayon_1.3.4          
    ## [37] dplyr_0.7.7            MASS_7.3-51            bitops_1.0-6           gtable_0.2.0          
    ## [41] magrittr_1.5           scales_1.0.0           stringi_1.2.4          XVector_0.22.0        
    ## [45] viridis_0.5.1          flexmix_2.3-14         bindrcpp_0.2.2         robustbase_0.93-3     
    ## [49] fastcluster_1.1.25     HilbertVis_1.40.0      rjson_0.2.20           RColorBrewer_1.1-2    
    ## [53] tools_3.5.1            fpc_2.1-11.1           glue_1.3.0             trimcluster_0.1-2.1   
    ## [57] DEoptimR_1.0-8         purrr_0.2.5            colorspace_1.3-2       GenomicRanges_1.34.0  
    ## [61] prabclus_2.2-6         bindr_0.1.1            modeltools_0.2-22
    

    相关文章

      网友评论

        本文标题:[可视化|R包]ComplexHeatmap学习笔记③Makin

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