R可视化:微生物相对丰度或富集热图可视化

2024-06-14 09:25:37 浏览数 (2)

欢迎大家关注全网生信学习者系列:

  • WX公zhong号:生信学习者
  • Xiao hong书:生信学习者
  • 知hu:生信学习者
  • CDSN:生信学习者2

介绍

热图(Heatmap)是一种数据可视化方法,它通过颜色的深浅或色调的变化来展示数据的分布和密度。在微生物学领域,热图常用于表示微生物在不同分组(如不同的环境、时间点、处理条件等)中的表达水平或出现率状态。这种可视化方式能够直观地揭示微生物群落在不同条件下的分布规律和变化趋势。以已发表文章的热图代码为例,通过运行这些代码,研究者可以将微生物测序数据或丰度数据转换为热图,从而更好地理解和解释微生物群落的变化。在热图中,不同的颜色通常代表不同的数值大小,比如颜色越深可能代表某种微生物的表达水平或出现率越高。通过比较不同分组间的颜色变化,研究者可以快速地识别出哪些微生物在特定条件下更为活跃或更为丰富。在制作热图时,研究者还需要注意一些技术细节,比如颜色的选择、颜色的梯度设置、数据的归一化处理等,以确保最终的热图能够准确地反映数据的特点和规律。

加载R包

代码语言:javascript复制
library(tidyverse)
library(ComplexHeatmap)
library(viridis)
library(circlize)
library(grid)
​
# rm(list = ls())
options(stringsAsFactors = F)
options(future.globals.maxSize = 10000 * 1024^2)

导入数据

输入数据的路径即可,它们分别是丰度数据或富集数据、行名或列名的注释数据。

  • prevotellaceae_mat:相对丰度矩阵
  • prevotellaceae_row_groups:行名species的分类信息
  • prevotellaceae_col_groups:列名样本samples的分组信息

大家通过以下链接下载输入数据:

  • 百度网盘链接:https://pan.baidu.com/s/1zY9UPVCQTal9f_w726rV3w
  • 提取码: WX公zhong号生信学习者后台发送 微生物热图 获取提取码
代码语言:javascript复制
prevotellaceae_mat <- "28-1-prevotellaceae_matrix_4ComplexHeatmap.tsv"
prevotellaceae_row_groups <- "28-2-prevotellaceae_matrix_4ComplexHeatmap_species_md.txt"
prevotellaceae_col_groups <- "28-3-prevotellaceae_matrix_4ComplexHeatmap_sample_md.txt"
​
global_mat <- "28-4-global_enrichment_matrix.tsv"
global_row_md <- "28-5-global_enrichment_matrix_rownames.tsv"
global_col_md <- "28-6-global_enrichment_matrix_colnames.tsv"

数据预处理

准备画图需要的颜色代码

代码语言:javascript复制
col_func <- viridis::viridis(100)
​
col_func2 <- circlize::colorRamp2(c(0, 1), hcl_palette = "Blues", reverse = T)

画图函数

提供一个完整的画图 plot_complex_heatmap函数(它使用ComplexHeatmap包),通过指定参数,可以定制热图。下列是它的参数说明:

  • mat_file: Metaphlan风格的相对丰度文件,[tsv文件]。
  • column_md: 列分组文件,其中每一行与mat_file的列相匹配,[txt文件]。
  • row_md: 行分组文件,其中每一行与mat_file的行相匹配,[txt文件]。
  • color_bar_name: 颜色条刻度的标题,[字符串],默认:[NULL]。
  • transformation: 对mat_file中的值进行转换的函数,包括log10([log10])、平方根反正弦([sqrt_asin])和二值化([binary]),默认:[NULL]。
  • font_style: 图中所有标签的字体样式,[字符串],默认:["serif"]。
  • font_size: 图中所有标签的字体大小,[整数],默认:[11]。
  • show_col_names: 显示列名,[TRUE/FALSE],默认:[TRUE]。
  • show_row_names: 显示行名,[TRUE/FALSE],默认:[TRUE]。
  • row_names_side: 指定您希望放置行名的位置,[字符串],默认:[left]。
  • column_names_side: 指定您希望放置列名的位置,[字符串],默认:[bottom]。
  • cluster_columns: 对值相似的列进行聚类,[TRUE/FALSE],默认:[FALSE]。
  • cluster_rows: 对值相似的行进行聚类,[TRUE/FALSE],默认:[FALSE]。
  • cluster_row_slices: 对值相似的行切片(也可以称为批次)进行重新排序,[TRUE/FALSE],默认:[FALSE]。
  • cluster_column_slices: 对值相似的列切片(也可以称为批次)进行重新排序,[TRUE/FALSE],默认:[FALSE]。
  • color_func: 定义自定义颜色函数以显示值,默认:[NULL]。
  • border: 在图上添加边框,[TRUE/FALSE],默认:[FALSE]。
  • row_gap: 如果您使用了row_md参数,则控制行切片之间的间距,[浮点数],默认:[1]。
  • column_gap: 如果您使用了column_md参数,则控制列切片之间的间距,[浮点数],默认:[1]。
  • width: 控制整个复杂热图的宽度,[浮点数],默认:[1]。
  • height: 控制整个复杂热图的高度,[浮点数],默认:[1]。

微生物相对丰度

代码语言:javascript复制
plot_complex_heatmap(
  prevotellaceae_mat,
  color_bar_name = "relative abundance (log10)",
  row_md = prevotellaceae_row_groups,
  column_md = prevotellaceae_col_groups,
  show_col_names = FALSE,
  show_row_names = TRUE,
  width = 2,
  height = 4,
  row_names_side = "left",
  cluster_columns = TRUE,
  cluster_column_slices = FALSE,
  cluster_rows = FALSE,
  cluster_row_slices = FALSE,
  border = FALSE,
  row_gap = 2,
  column_gap = 2,
  color_func = col_func,
  transformation = "log10")

微生物富集方向

代码语言:javascript复制
plot_complex_heatmap(
  global_mat,
  row_md = global_row_md,
  column_md = global_col_md,
  show_col_names = F,
  show_row_names = TRUE,
  width = 0.2,
  height = 3,
  row_names_side = "left",
  column_names_side = "top",
  cluster_columns = F,
  cluster_column_slices = F,
  cluster_rows = F,
  cluster_row_slices = F,
  border = T,
  row_gap = 2,
  column_gap = 2,
  color_func = col_func2,
  transformation = "binary")

0 人点赞