美文网首页
3. 共有特有OTUs/ASVs展示

3. 共有特有OTUs/ASVs展示

作者: 吴十三和小可爱的札记 | 来源:发表于2021-02-03 15:25 被阅读0次

简介

维恩图和UpSet图均可用于集合共有和特有元素信息可视化,如果分组数小于等于5时,推荐用维恩图进行展示;当分组数大于5时,推荐用Upset图进行展示。

维恩图
UpSet图

维恩图

# input OTUs 
otu_table  <-  read.delim("16S-amplicon-analysis/otutab.txt", header=T, sep="\t", row.names=1, stringsAsFactors = FALSE)

metadata <- read.delim("16S-amplicon-analysis/metadata.txt", header=T, sep="\t", stringsAsFactors = FALSE)

# check data
index <- metadata$Sample %in% colnames(otu_table)
metadata <- metadata[index, ]
otu_table <- otu_table[ ,colnames(otu_table)] 

# matrix transpose
transp_otu <- as.data.frame(t(otu_table))
transp_otu$Sample <- rownames(transp_otu)

transp_otu <- merge(metadata, transp_otu, by="Sample")
# transp_otu[c(1:3), c(1:3)]
transp_otu <- transp_otu[,c(-1)]
# transp_otu[c(1:3), c(1:3)]

library(tidyverse)
transp_otu %>% group_by(Group) %>% 
  summarise_all(mean) -> group_otu

# threshold value
## VennDiagram 要求输入每个圆圈的元素名列表,可以先进行筛选然后再可视化。
## 当然,也可以在可视化的时候进行筛选。
venn_otu <- as.data.frame(group_otu)
rownames(venn_otu) <- venn_otu$Group
venn_otu <-as.data.frame(t(venn_otu[,-1]))
# backups 
venn_otu2 <- venn_otu

venn_otu[venn_otu > 0] <- 1

# visualization
library(VennDiagram)
p1 <- venn.diagram(
  x=list(KO=row.names(venn_otu[venn_otu$KO==1, ]),
         OE=row.names(venn_otu[venn_otu$OE==1, ]),
         WT=row.names(venn_otu[venn_otu$WT==1, ])),
 filename = "venn1.png", lwd = 3, alpha = 0.6,
 label.col = "white", cex = 1.5,
 fill = c("dodgerblue", "goldenrod1", "darkorange1"), 
 cat.col = c("dodgerblue", "goldenrod1", "darkorange1"),
 fontfamily = "serif", fontface = "bold",
 cat.fontfamily = "serif",cat.fontface = "bold",
 margin = 0.05)

p2 <- venn.diagram(
  x=list(KO=row.names(venn_otu2[venn_otu2$KO>0, ]),
         OE=row.names(venn_otu2[venn_otu2$OE>0, ]),
         WT=row.names(venn_otu2[venn_otu2$WT>0, ])),
 filename = "venn2.png", lwd = 3, alpha = 0.6,
 label.col = "white", cex = 1.5,
 fill = c("#eb507e", "#2f90b9", "#fba414"), 
 cat.col = c("#eb507e", "#2f90b9", "#fba414"),
 fontfamily = "serif", fontface = "bold",
 cat.fontfamily = "serif",cat.fontface = "bold",
 margin = 0.05)

UPset

当分组多于5个时,整个韦恩图会略显混乱,此时upset图是一个较好的选择。

# judgement 
judge_char <- function(x){
  if_else(x > 0, true = 1, false = 0)}

temp_data  <-  apply(plot_data[,c(2:length(plot_data))], 2, judge_char)

# check NA
temp_data[is.na(temp_data)] <- 0

# setting colnames
library(UpSetR)
col_names <- colnames(venn_otu)
col_names
upset(venn_otu, sets = col_names, 
      order.by = c("freq"),
      main.bar.color = "#009688")

相关文章

  • 3. 共有特有OTUs/ASVs展示

    简介 维恩图和UpSet图均可用于集合共有和特有元素信息可视化,如果分组数小于等于5时,推荐用维恩图进行展示;当分...

  • 曼哈顿图展示差异OTUs

    简介 曼哈顿图(Manhattan Plot)本质上是散点图,一般用于展示大量非零的波动数据,散点在y轴的高度突出...

  • R包VennDiagram的韦恩图绘制及交集元素的提取

    韦恩(Venn)图是常见统计图之一,用于展示各样本(或分组)之间共有(或特有)元素的数量(或比例)。 例如做RNA...

  • 使用tb-RDA中的一点疑问

    想展示OTU和环境或样本的关系,但原始OTUs数目特别多,怎么办?先做差异分析,差异分析完在做RDA,但每个样本差...

  • Defining and interpreting OTUs信息

    Sneath-Sokal OTUs The concept of an Operational Taxonomic...

  • R可视化——Venn图绘制及交集元素导出

    韦恩图(Venn)是一种用于展示各样本之间共有或特有元素数量的图形。今天,小编就结合R语言中的Venn包和Venn...

  • Python 函数的属性

    Python的函数也是对象,所以它也具有对象共有的属性: 除了这些与对象共有的属性之外。函数还具有自己特有的属性:...

  • Android跨进程通信

    总结一下android平台上的跨进程通讯共有: Android 特有的Binder、ASHMEMStart act...

  • IOS gif动态图展示

    在app上展示动态图一共有三种方式1.UIImageView 动画展示2.UIWebView 直接展示链接3.gi...

  • 书籍展示----3.书籍详情

    前言 由于书籍展示这一块的逻辑都是一样的,这里我就不再重复了。这个视图主要分为四块轮播图-标题-内容详情-底部按钮...

网友评论

      本文标题:3. 共有特有OTUs/ASVs展示

      本文链接:https://www.haomeiwen.com/subject/nyyktltx.html