如何在ComplexHeatmap中增加单元格高度?

时间:2016-12-23 17:47:34

标签: r rstudio heatmap

我使用下面的代码使用Heatmap ()库(" ComplexHeatmap" ))为我的DEG基因创建热图。

我的问题是单元格高度非常小而且行名称(88个基因ID)无法清晰观察到。

我增加了行名字体和行dend大小,但它对我不起作用。

注意:我无法使用" cell_fun"功能!

〜提前谢谢

这是我的代码:

library(gplots)
library("ComplexHeatmap")
library(dendextend)
library("RColorBrewer")
filename <- "male-female-88-TMMb.matrix"
my_data <- read.table(filename, sep='\t', quote='', stringsAsFactors=FALSE, header=TRUE)
row.names(my_data) <- my_data$samples
my_data <- my_data[, -1]
my_data <- my_data/rowSums(my_data)

row.scaled.expr <- as.matrix(my_data) 

row.names(my_data) <- my_data$samples
my_matrix <- as.matrix(my_data) 
my_data <- my_data[, -1]

data.prop <- my_data/rowSums(my_data)

mycol <- colorRampPalette(brewer.pal(10, "RdYlBu"))(256)

.hist = anno_histogram(row.scaled.expr, gp = gpar(fill = "olivedrab3"))

.density = anno_density(row.scaled.expr, type = "line", gp = gpar(col = "blue"))

ha_mix_top = HeatmapAnnotation(hist = .hist, density = .density)

.violin = anno_density(row.scaled.expr, type = "violin", 
                           gp = gpar(fill = "darkorchid4"), which = "row")

ha_mix_right = HeatmapAnnotation (violin = .violin,
                                  which = "row", width = unit(4.5, "cm"))

Heatmap (as.matrix(data.prop), km = 2, name = "TMM", col = mycol,
         column_names_gp = gpar(fontsize = 8.5),
         row_names_side = "left",
         row_dend_side = "left",
         clustering_method_columns = "ward.D",
         clustering_method_rows = "ward.D",
         column_dend_side = c("bottom"),
         column_dend_height = unit(6, "mm"),
         row_dend_width = unit(3.6, "cm"),
         row_dend_gp = gpar (15),
         gap = unit(1, "mm"),
         row_title_gp = gpar(col = c("red2", "blue4"), font = 2:2),
         row_names_gp = gpar(col = c("red2", "blue4"), fontsize = c(8.4, 8.6)),
         rect_gp = gpar(col = "gray12", lty = 1, lwd = 0.2),
         top_annotation = ha_mix_top, 
         top_annotation_height = unit(3, "cm")) + ha_mix_right

我的主管&#34; data.prop&#34;档案:

  

头(data.prop)

                          F1         F2        F3         M1          M2
DN107669_c1_g2_i1 0.68965517 0.05627846 0.2540664 0.00000000 0.000000000
DN101742_c5_g1_i2 0.27241615 0.20739220 0.5140315 0.00000000 0.006160164
DN107731_c4_g1_i4 0.17056856 0.56187291 0.2675585 0.00000000 0.000000000
DN108762_c0_g1_i9 0.00000000 0.85127479 0.1487252 0.00000000 0.000000000
DN111305_c2_g4_i1 0.08341354 0.32996471 0.5731473 0.01347449 0.000000000
DN101817_c3_g1_i3 0.11783015 0.51504372 0.2967245 0.01081962 0.050096339
                           M3
DN107669_c1_g2_i1 0.000000000
DN101742_c5_g1_i2 0.000000000
DN107731_c4_g1_i4 0.000000000
DN108762_c0_g1_i9 0.000000000
DN111305_c2_g4_i1 0.000000000
DN101817_c3_g1_i3 0.009485697

enter image description here

2 个答案:

答案 0 :(得分:0)

这是我从ComplexHeatmap(Heatmap())的创建者Zuguang Gu收到的回复:

  

如何将图像保存到文件中?使用n/2 - 1功能或单击   &#34;保存&#34;或&#34;出口&#34;在Rstudio?

     

如果您使用pdf(),则可以按pdf()和{0}设置地块的大小   width论证。

     

如果您直接将图像保存在Rstudio中,则必须有一些位置   你可以调整pdf文件的大小。

我在 Rstudio 中使用了他的指导,它解决了问题; - )

答案 1 :(得分:0)

您可以只使用heatmap_height参数:

  

heatmap_widthheatmap_height控制完整热图的宽度/高度,包括所有热图组件(图例除外)

例如:

Heatmap(mat, ..., heatmap_height = unit(1, "cm")*nrow(mat))