【问题标题】:ComplexHeatmap: How to place heatmap legend and annotation legend differently?ComplexHeatmap:如何以不同的方式放置热图图例和注释图例?
【发布时间】:2021-09-29 15:56:42
【问题描述】:

我用library(ComplexHeatmap)制作了这个情节

我希望Z-score 位于底部位置,而类别变量显示在右侧。 This post 接近了,但我无法使用 rowAnnotation 使其工作,如下面的脚本所示。

预期输出

有了这些数据:

set.seed(123)
library(ComplexHeatmap)
mat = matrix(rnorm(96, 2), 8, 12)
mat = rbind(mat, matrix(rnorm(48, -2), 4, 12))
hmap <- as.data.frame(t(mat))

hmap$type <- rep(c("Ctrl", "Cell_type1", "Cell_type2"), 4)
hmap$malig <- ifelse(hmap$type == "Ctrl", "Ctrl", "Tumor")

hmap_bt <- scale(as.matrix(hmap[, -c(13:14)]))

使用这个脚本

draw(Heatmap(hmap_bt, 
             name = "Z-score",    
             col = colorRamp2(c(-2, 0, 2), c("#6DBCC3", "white", "#8B3A62")),

             show_column_names = FALSE,
             show_column_dend = FALSE,
             column_km = 3,
             
             left_annotation = rowAnnotation(Case = hmap[, c(13:14)]$malig,
                                             Type = hmap[, c(13:14)]$type,
                                             col = list(Case = c("Ctrl" = "#D1B551", "Tumor" = "#678F53"),
                                                        Type = c("Ctrl" = "#D1B551", "Cell_type1" = "green", "Cell_type2" = "blue")),
                                             annotation_legend_param = list(
                                               Case = list( 
                                                 title_gp = gpar(fontsize = 16, 
                                                                 fontface = "bold"), 
                                                 labels_gp = gpar(fontsize = 16)),
                                               Type = list( 
                                                 title_gp = gpar(fontsize = 16,
                                                                 fontface = "bold"), 
                                                 labels_gp = gpar(fontsize = 16)))),
             heatmap_legend_param = list(
               legend_direction = "horizontal", 
               legend_width = unit(6, "cm")), 
    ),

  heatmap_legend_side = "bottom"
)

【问题讨论】:

    标签: r plot legend heatmap complexheatmap


    【解决方案1】:

    尝试使用draw命令的选项legend_grouping = "original"

    library(ComplexHeatmap)
    library(circlize)
    
    set.seed(123)
    mat = matrix(rnorm(96, 2), 8, 12)
    mat = rbind(mat, matrix(rnorm(48, -2), 4, 12))
    hmap <- as.data.frame(t(mat))
    
    hmap$type <- rep(c("Ctrl", "Cell_type1", "Cell_type2"), 4)
    hmap$malig <- ifelse(hmap$type == "Ctrl", "Ctrl", "Tumor")
    
    hmap_bt <- scale(as.matrix(hmap[, -c(13:14)]))
    And using this script
    
    df <- data.frame(Case = hmap[, c(13:14)]$malig,
                     Type = hmap[, c(13:14)]$type)
    
    annot <-  rowAnnotation(
      df = data.frame(Case = hmap[, c(13:14)]$malig,
                      Type = hmap[, c(13:14)]$type),
      col = list(Case = c("Ctrl" = "#D1B551", "Tumor" = "#678F53"),
                 Type = c("Ctrl" = "#D1B551", "Cell_type1" = "green", 
                          "Cell_type2" = "blue")),
      annotation_legend_param = list(
        Case = list( 
          title_gp = gpar(fontsize = 16, 
                          fontface = "bold"), 
          labels_gp = gpar(fontsize = 16)),
        Type = list( 
          title_gp = gpar(fontsize = 16,
                          fontface = "bold"), 
          labels_gp = gpar(fontsize = 16)))
    )
    
    htmp <- Heatmap(
      hmap_bt, 
      name = "Z-score",    
      col = colorRamp2(c(-2, 0, 2), c("#6DBCC3", "white", "#8B3A62")),
      
      show_column_names = FALSE,
      show_column_dend = FALSE,
      column_km = 3,
      
      left_annotation = annot,
      heatmap_legend_param = list(
        legend_direction = "horizontal", 
        legend_width = unit(6, "cm")), 
    )
    
    draw(htmp, heatmap_legend_side="bottom", annotation_legend_side="right",
               legend_grouping = "original")
    

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 2021-12-08
      • 2013-06-28
      • 1970-01-01
      • 2021-07-26
      • 2017-04-05
      • 2018-05-04
      • 2017-12-07
      • 2021-07-18
      相关资源
      最近更新 更多