我使用以下代码制作了热图:
pheatmap
我想在第5行和第6行之间留一个空隙,以根据行注释分隔热图。
在gaps_row
函数中,参数vector of row indices that show shere to put gaps into heatmap. Used only if the rows are not clustered.
似乎起作用。
{{1}}
我不确定如何实现。有人可以帮我弄这个吗?非常感谢。
答案 0 :(得分:2)
我建议使用ComplexHeatmap
软件包(website; Gu et al, 2016)。您可以使用devtools::install_github("jokergoo/ComplexHeatmap")
安装它。
它具有更多的功能,但是您还必须花费更多的时间(例如,行注释和矩阵缩放)。
library(ComplexHeatmap)
# Create annotation for rows
my_sample_col_ano <- rowAnnotation(sample = my_sample_col$sample,
show_annotation_name = FALSE)
# Scale original matrix row-wise
matS <- t(apply(mat, 1, scale))
# Plot heatmap
Heatmap(matS,
# Remove name from fill legend
name = "",
# Keep original row/col order
row_order = rownames(matS), column_order = colnames(matS),
# Add left annotation (legend with tumor/normal)
left_annotation = my_sample_col_ano,
# ACTUAL SPLIT by sample group
row_split = my_sample_col$sample,
show_row_names = FALSE, show_column_names = FALSE,
show_row_dend = FALSE, show_column_dend = FALSE,
row_title = NULL)
如果您想使用pheatmap
的原始gaps_row
传递参数,该参数等于组的大小(即正常):
pheatmap(mat,
scale='row',
gaps_row = 5,
annotation_row = my_sample_col,
annotation_names_row=F,
cluster_rows = FALSE,
cluster_cols = FALSE,
show_colnames = FALSE,
show_rownames = FALSE)
如果您可以将多于两个的组而不是将数字值硬编码为gaps_row
(即gaps_row = 5
),则可以传递此代码段(head(as.numeric(cumsum(table(my_sample_col$sample))), -1)
)。