大数跨境
0
0

R中轻松绘制树状热图的若干方法

R中轻松绘制树状热图的若干方法 R语言数据分析指南
2023-06-02
1

欢迎关注R语言数据分析指南

本节来介绍如何在R中绘制树状热图,通过「sourmashconsumr」 & 「metacoder」两个R包的案例来进行介绍,更多详细的内容请参考作者官方文档。

官方文档

https://arcadia-science.github.io/sourmashconsumr/articles/sourmashconsumr.html

https://grunwaldlab.github.io/metacoder_documentation/

关注下方公众号下回更新不迷路

载入所需包

# install.packages("remotes")
remotes::install_github("Arcadia-Science/sourmashconsumr")
library(sourmashconsumr)  # 用于处理sourmash文件
library(tidyverse)        # 用于数据处理和可视化
library(RColorBrewer)     # 用于颜色调色板

# 载入数据
data(gut_compare_df)            # 载入对比数据
data(gut_signatures_df)         # 载入signature数据
data(gut_gather_df)             # 载入gather数据
data(gut_taxonomy_annotate_df)  # 载入taxonomy注释数据
run_accessions <- c("SRR5936131""SRR5947006""SRR5935765",
                    "SRR5936197""SRR5946923""SRR5946920")
groups <- c("cd""cd""cd""nonibd""nonibd""nonibd")
metadata <- data.frame(run_accessions = run_accessions, groups = groups) 

将taxonomy注释数据转换为metacoder格式

gut_metacoder <- from_taxonomy_annotate_to_metacoder(taxonomy_annotate_df = gut_taxonomy_annotate_df, 
                                                     intersect_bp_threshold = 50000, 
                                                     tax_glom_level = "order",
                                                     groups = metadata)

设置随机种子

set.seed(1) 

绘制树状图热图

metacoder::heat_tree(gut_metacoder, 
                     node_label = taxon_names,
                     node_size = n_obs,
                     node_size_axis_label = "k-mer abundance",
                     layout = "davidson-harel"
                     initial_layout = "reingold-tilford"

进行组间比较,并绘制树状热图

gut_metacoder$data$diff_table <- metacoder::compare_groups(gut_metacoder, data = "tax_abund",
                                                           cols = metadata$run_accessions,
                                                           groups = metadata$groups)
metacoder::heat_tree_matrix(gut_metacoder,
                            data = "diff_table",
                            node_size = n_obs,
                            node_label = taxon_names,
                            node_color = log2_median_ratio,
                            node_color_range = metacoder::diverging_palette(),
                            node_color_trans = "linear",
                            node_color_interval = c(-33),
                            edge_color_interval = c(-33),
                            node_size_axis_label = "Abund of taxonomic lineage",
                            node_color_axis_label = "Log2 ratio median proportions")

sourmashconsumr所提供的函数为封装metacoder后的结果,其对代码做了简化;下面来通过一个案例来介绍「metacoder」

载入metacoder包

library(metacoder)

解析分类数据

obj <- parse_tax_data(hmp_otus,
                      class_cols = "lineage"
                      class_sep = ";",
                      class_regex = "^(.+)__(.+)$"
                      class_key = c(tax_rank = "info",tax_name = "taxon_name"))

对tax_data进行处理

obj$data$tax_data <- zero_low_counts(obj, dataset = "tax_data", min_count = 5)

检查没有reads的行

no_reads <- rowSums(obj$data$tax_data[, hmp_samples$sample_id]) == 0

计算观测比例

obj$data$tax_data <- calc_obs_props(obj, "tax_data")

计算taxon丰度

obj$data$tax_abund <- calc_taxon_abund(obj, "tax_data",
                                       cols = hmp_samples$sample_id)

计算taxon出现次数

obj$data$tax_occ <- calc_n_samples(obj, "tax_abund", groups = hmp_samples$body_site, cols = hmp_samples$sample_id)

绘制树状图热图

# 设置随机种子
set.seed(1)

heat_tree(obj, 
          node_label = taxon_names,
          node_size = n_obs,
          node_color = Nose, 
          node_size_axis_label = "OTU count",
          node_color_axis_label = "Samples with reads",
          layout = "davidson-harel",
          initial_layout = "reingold-tilford")

有需要学习个性化数据可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」购买「2023年度会员」 初始价格99元,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码;按照往年数据小编年产出约在150+以上

购买后微信发小编订单截图即邀请进新的会员交流群,小编的文档为按年售卖,只包含当年度的「除系列课程外」的文档,有需要往年文档的朋友也可下单购买,需要了解更多信息的朋友欢迎交流咨询。

淘宝扫一扫

2023会员群精彩内容


【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读551
粉丝0
内容1.2k