library(tidyverse)
library(data.table)
library(Biobase)
library(ComplexHeatmap)
library(circlize)
library(ggplotify)
rm(list = ls())
options(stringsAsFactors = F)
options(future.globals.maxSize = 10000 * 1024^2)
grp_names <- c("Early Stage", "Late Stage")
grp_colors <- c("#8AC786", "#B897CA")
grp_shapes <- c(15, 16)
13 差异结果的热图
热图是一种数据可视化工具,用于展示矩阵数据中的数值大小,通过颜色的深浅或色调变化来表示不同的数值。通常用于生物信息学、统计学和数据分析等领域,以便直观地比较和分析大量数据。
13.1 加载R包
使用rm(list = ls())
来清空环境中的所有变量。
13.2 导入数据
13.3 画图函数
调用ComplexHeatmap::Heatmap
函数(Gu, Eils, 和 Schlesner 2016)对差异分析的结果即差异基因进行绘图,采用常见的热图。ComplexHeatmap::Heatmap
的详细用法可以直接查看函数帮助文档。除此之外,还使用circlize::colorRamp2
函数(Gu 等 2014)调用颜色参数。
get_heatmap <- function(
object,
datsignif,
group,
group_names = grp_names,
group_colors = grp_colors) {
metadata <- pData(object) %>%
as.data.frame()
profile <- exprs(object) %>%
as.data.frame()
colnames(metadata)[which(colnames(metadata) == group)] <- "GroupCompvar"
phen <- metadata %>%
dplyr::arrange(GroupCompvar, Tumour_Stage, ProjectID)
phen$GroupCompvar <- factor(phen$GroupCompvar, levels = group_names)
prof <- profile[rownames(profile) %in% datsignif$FeatureID,
pmatch(phen$SampleID, colnames(profile)), ] %>%
as.matrix()
project_id <- unique(phen$ProjectID)
project_colors <- c("#E69F00", "#56B4E9")
names(project_colors) <- project_id
stage_id <- unique(phen$Tumour_Stage)
stage_colors <- c("#D51F26", "#272E6A", "#208A42", "#89288F")
names(stage_colors) <- stage_id
# scale prof
prof_scale <- scale(prof, center = T, scale = T)
pl <- ComplexHeatmap::Heatmap(
mat = prof_scale,
col = circlize::colorRamp2(c(-3, 0, 3), c("blue", "white", "red")),
top_annotation = top_anno,
cluster_columns = FALSE,
cluster_rows = TRUE,
show_row_names = FALSE,
show_column_names = FALSE,
column_split = phen$GroupCompvar,
heatmap_legend_param = list(
legend_direction = "vertical",
legend_width = unit(6, "cm"),
title = "Relative Abundance"))
return(pl)
}
13.4 热图
- 设置对应参数,运行
get_heatmap
DEG_heat <- get_heatmap(
object = ExprSet,
datsignif = da_res_signif,
group = "Group",
group_names = grp_names,
group_colors = grp_colors)
DEG_heat
结果:热图展示了差异基因的表达状态
X轴是样本ID;
Y轴是基因ID;
13.5 输出结果
使用ggplotify::as.ggplot
函数(Yu 2014)转换ComplexHeatmap::Heatmap
函数(Gu, Eils, 和 Schlesner 2016)获得的热图。
13.6 总结
在成功获得差异基因的分析结果后,进一步提取了这些差异基因在每个样本中的表达值。
系统信息
R version 4.3.3 (2024-02-29)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Sonoma 14.2
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: Asia/Shanghai
tzcode source: internal
attached base packages:
[1] grid stats graphics grDevices datasets utils methods
[8] base
other attached packages:
[1] ggplotify_0.1.2 circlize_0.4.16 ComplexHeatmap_2.18.0
[4] Biobase_2.62.0 BiocGenerics_0.48.1 data.table_1.15.4
[7] lubridate_1.9.3 forcats_1.0.0 stringr_1.5.1
[10] dplyr_1.1.4 purrr_1.0.2 readr_2.1.5
[13] tidyr_1.3.1 tibble_3.2.1 ggplot2_3.5.1
[16] tidyverse_2.0.0
loaded via a namespace (and not attached):
[1] gtable_0.3.5 shape_1.4.6.1 rjson_0.2.21
[4] xfun_0.43 htmlwidgets_1.6.4 GlobalOptions_0.1.2
[7] tzdb_0.4.0 yulab.utils_0.1.4 vctrs_0.6.5
[10] tools_4.3.3 generics_0.1.3 stats4_4.3.3
[13] parallel_4.3.3 fansi_1.0.6 cluster_2.1.6
[16] pkgconfig_2.0.3 RColorBrewer_1.1-3 S4Vectors_0.40.2
[19] lifecycle_1.0.4 compiler_4.3.3 munsell_0.5.1
[22] codetools_0.2-19 clue_0.3-65 htmltools_0.5.8.1
[25] yaml_2.3.8 pillar_1.9.0 crayon_1.5.2
[28] cachem_1.0.8 iterators_1.0.14 foreach_1.5.2
[31] tidyselect_1.2.1 digest_0.6.35 stringi_1.8.4
[34] fastmap_1.1.1 colorspace_2.1-0 cli_3.6.2
[37] magrittr_2.0.3 utf8_1.2.4 withr_3.0.0
[40] scales_1.3.0 timechange_0.3.0 rmarkdown_2.26
[43] matrixStats_1.3.0 png_0.1-8 GetoptLong_1.0.5
[46] hms_1.1.3 memoise_2.0.1 evaluate_0.23
[49] knitr_1.46 IRanges_2.36.0 doParallel_1.0.17
[52] gridGraphics_0.5-1 rlang_1.1.3 glue_1.7.0
[55] BiocManager_1.30.23 renv_1.0.0 rstudioapi_0.16.0
[58] jsonlite_1.8.8 R6_2.5.1 fs_1.6.4