【问题标题】:The annotion of row in ComplexHeatmap was not fully displayedComplexHeatmap 中 row 的注释未完全显示
【发布时间】:2023-02-21 00:22:09
【问题描述】:

我正在使用 ComplexHeatmap 来显示跨多个细胞的基因表达。这是一个玩具示例,其中每一行代表一个基因。

library(ComplexHeatmap)
library(circlize)

set.seed(123)
nr1 = 4; nr2 = 14; nr3 = 16; nr = nr1 + nr2 + nr3
nc1 = 2; nc2 = 2; nc3 = 2; nc = nc1 + nc2 + nc3
mat = cbind(rbind(matrix(rnorm(nr1*nc1, mean = 1,   sd = 0.5), nr = nr1),
                  matrix(rnorm(nr2*nc1, mean = 0,   sd = 0.5), nr = nr2),
                  matrix(rnorm(nr3*nc1, mean = 0,   sd = 0.5), nr = nr3)),
            rbind(matrix(rnorm(nr1*nc2, mean = 0,   sd = 0.5), nr = nr1),
                  matrix(rnorm(nr2*nc2, mean = 1,   sd = 0.5), nr = nr2),
                  matrix(rnorm(nr3*nc2, mean = 0,   sd = 0.5), nr = nr3)),
            rbind(matrix(rnorm(nr1*nc3, mean = 0.5, sd = 0.5), nr = nr1),
                  matrix(rnorm(nr2*nc3, mean = 0.5, sd = 0.5), nr = nr2),
                  matrix(rnorm(nr3*nc3, mean = 1,   sd = 0.5), nr = nr3))
)
mat = mat[sample(nr, nr), sample(nc, nc)] # random shuffle rows and columns
colnames(mat) = paste0("col", seq_len(nc))
rownames(mat) = c("MS4A1","BANK1" ,"CD79A","IL7R", "CD40LG","CD8A", "CD8B", "PECAM1","TM4SF1","STC1", 
                  "LUM","COL1A1","COL1A2","KRT18" ,"KRT19","EPCAM","TPSAB1","KIT","C1QB", "LYZ","AIF1", 
                  "GNLY", "KLRD1","CSF3R","FCGR3B","MZB1","IGLL5","SSR4", "RRM2", "HMGN2","CTLA4","FOXP3","TCL1A","IRF7")


col_fun = colorRamp2(c(-2, 0, 2), c("green", "white", "red"))

ht_opt(heatmap_column_names_gp = gpar(fontfamily = "Arial"), 
       heatmap_row_names_gp = gpar(fontfamily = "Arial",fontface = "italic",fontsize = 11), 
       heatmap_column_title_gp = gpar(fontfamily = "Arial"),
       heatmap_row_title_gp = gpar(fontfamily = "Arial"),
       legend_title_gp = gpar(fontfamily = "Arial"),
       legend_labels_gp = gpar(fontfamily = "Arial"))

ht = Heatmap(mat, 
             # Remove name from fill legend
             name = "Expression",
             # Keep original row/col order
             row_order = rownames(mat), column_order = colnames(mat),
             rect_gp = gpar(col = "#7d7b7d", lwd = 1),
             column_gap = unit(1.5, "mm"),
             row_gap = unit(1.5, "mm"),
             col = col_fun,
             heatmap_legend_param = list(color_bar = "continuous", legend_direction = "horizontal",
                                         at = c( -1, 0, 1, 2, 3),legend_width = unit(5, "cm"), 
                                         title_position = "lefttop"),
             show_row_names = TRUE, show_column_names = TRUE,
             show_row_dend = FALSE, show_column_dend = FALSE,
             row_title = NULL)
draw(ht, heatmap_legend_side = "bottom")

如您所见,一些行名(基因名称)未完全显示,例如 FCGR3B(第 25 行)、PECAM1(第 8 行)。我怎么解决这个问题?

【问题讨论】:

    标签: r complexheatmap


    【解决方案1】:

    你可以在draw函数中使用padding参数

    在你的情况下 10 毫米是相当不错的

    draw(ht, heatmap_legend_side = "bottom",padding = unit(c(2, 2, 2, 10), "mm"))
    

    有关更多详细信息,请参见此处Jokergoo CHM book

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      相关资源
      最近更新 更多