通过元数据(vegan 包)(phyloseq 包)为 Rarefaction 曲线线着色

萨马·奥鲁埃尔

第一次在这里提问。我无法在其他帖子中找到这个问题的答案(爱 stackexchange,顺便说一句)。

无论如何......我正在通过素食包创建一个稀疏曲线,我得到了一个非常混乱的图,在图的底部有一个非常粗的黑条,它掩盖了一些低多样性的样本线。理想情况下,我想用我的所有线条(169;我可以将其减少到 144)生成一个图,但制作一个复合图,按样本年份着色并为每个池塘制作不同类型的线条(即:2 个样本年份: 2016、2017 和 3 个池塘:1、2、5)。我使用 phyloseq 创建了一个包含我所有数据的对象,然后将我的 OTU 丰度表从我的元数据中分离为不同的对象(jt = OTU 表和 sampledata = 元数据)。我目前的代码:

 jt <- as.data.frame(t(j)) # transform it to make it compatible with the proceeding commands
rarecurve(jt
          , step = 100
          , sample = 6000
          , main = "Alpha Rarefaction Curve"
          , cex = 0.2
          , color = sampledata$PondYear)

# A very small subset of the sample metadata
                  Pond    Year
F16.5.d.1.1.R2     5      2016
F17.1.D.6.1.R1     1      2017
F16.1.D15.1.R3     1      2016
F17.2.D00.1.R2     2      2017

在此处输入图片说明

误用

这是如何使用 ggplot 绘制稀疏曲线的示例。我使用了bioconductor提供phyloseq包中的可用数据。

安装 phyloseq:

source('http://bioconductor.org/biocLite.R')
biocLite('phyloseq')
library(phyloseq)

需要其他库

library(tidyverse)
library(vegan)

数据:

mothlist <- system.file("extdata", "esophagus.fn.list.gz", package = "phyloseq")
mothgroup <- system.file("extdata", "esophagus.good.groups.gz", package = "phyloseq")
mothtree <- system.file("extdata", "esophagus.tree.gz", package = "phyloseq")
cutoff <- "0.10"
esophman <- import_mothur(mothlist, mothgroup, mothtree, cutoff)

提取OTU表,转置并转换为数据帧

otu <- otu_table(esophman)
otu <- as.data.frame(t(otu))
sample_names <- rownames(otu)

out <- rarecurve(otu, step = 5, sample = 6000, label = T)

现在你有一个列表,每个元素对应一个样本:

稍微清理一下列表:

rare <- lapply(out, function(x){
  b <- as.data.frame(x)
  b <- data.frame(OTU = b[,1], raw.read = rownames(b))
  b$raw.read <- as.numeric(gsub("N", "",  b$raw.read))
  return(b)
})

标签列表

names(rare) <- sample_names

转换为数据框:

rare <- map_dfr(rare, function(x){
  z <- data.frame(x)
  return(z)
}, .id = "sample")

让我们看看它的外观:

head(rare)
  sample       OTU raw.read
1      B  1.000000        1
2      B  5.977595        6
3      B 10.919090       11
4      B 15.826125       16
5      B 20.700279       21
6      B 25.543070       26

用 ggplot2 绘图

ggplot(data = rare)+
  geom_line(aes(x = raw.read, y = OTU, color = sample))+
  scale_x_continuous(labels =  scales::scientific_format())

在此处输入图片说明

素食情节:

rarecurve(otu, step = 5, sample = 6000, label = T) #low step size because of low abundance

在此处输入图片说明

可以根据这一点制作额外的分组和颜色列。

这是如何添加另一个分组的示例。让我们假设你有一个表格:

groupings <- data.frame(sample = c("B", "C", "D"),
                       location = c("one", "one", "two"), stringsAsFactors = F)
groupings
  sample location
1      B      one
2      C      one
3      D      two

其中样本根据另一个特征进行分组。您可以使用lapplymap_dfrgroupings$sample标记rare$location

rare <- map_dfr(groupings$sample, function(x){ #loop over samples
  z <- rare[rare$sample == x,] #subset rare according to sample 
  loc <- groupings$location[groupings$sample == x] #subset groupings according to sample, if more than one grouping repeat for all
  z <- data.frame(z, loc) #make a new data frame with the subsets
  return(z)
})

head(rare)
  sample       OTU raw.read loc
1      B  1.000000        1 one
2      B  5.977595        6 one
3      B 10.919090       11 one
4      B 15.826125       16 one
5      B 20.700279       21 one
6      B 25.543070       26 one

让我们用这个做一个像样的情节

ggplot(data = rare)+
  geom_line(aes(x = raw.read, y = OTU, group = sample, color = loc))+
  geom_text(data = rare %>% #here we need coordinates of the labels
              group_by(sample) %>% #first group by samples
              summarise(max_OTU = max(OTU), #find max OTU
                        max_raw = max(raw.read)), #find max raw read
              aes(x = max_raw, y = max_OTU, label = sample), check_overlap = T, hjust = 0)+
  scale_x_continuous(labels =  scales::scientific_format())+
  theme_bw()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过Dart lang中的元数据标签执行功能包

来自分类Dev

通过Dart lang中的元数据标签执行功能包

来自分类Dev

通过终端命令为R安装素食包

来自分类Dev

将包数据设置为PyPI python包中命令行参数的默认输入

来自分类Dev

C / PCAP:ARP数据包值全部为0

来自分类Dev

为spring数据mongo指定多个基本包

来自分类Dev

如何在R地图包中为单个国家/地区着色(Worldhires)

来自分类Dev

通过Windows API代码包获取包含Unicode字符的元数据时,应用程序崩溃

来自分类Dev

通过Windows API代码包获取包含Unicode字符的元数据时,应用程序崩溃

来自分类Dev

gem push导致“包元数据丢失”

来自分类Dev

如何注释Java包并反映元数据

来自分类Dev

存储库元数据和本地包

来自分类Dev

ssis 2008获取包执行元数据

来自分类Dev

目的地为同一台计算机的数据包的netem数据包丢失

来自分类Dev

为什么 ffprobe 数据包的大小大于 MTU 并且每个数据包映射为一帧?

来自分类Dev

数据包过滤器日志记录(当前以tcpdump为后台,以root为根)

来自分类Dev

为shapefile创建凸包

来自分类Dev

laravel为包命名路由

来自分类Dev

为 Debain 包使用 Makefile

来自分类Dev

如何通过SSIS包从SAP提取数据?

来自分类Dev

通过ttl Scapy过滤数据包?

来自分类Dev

通过BLE通知接收数据包

来自分类Dev

使用 Intent 通过包传递数据

来自分类Dev

通过 tcp 网络发送数据包

来自分类Dev

通过表达式通过变量将SSIS包中的昨天日期设置为

来自分类Dev

使用“ directlabels”包标记选择曲线

来自分类Dev

在 MySQL 中,blob 数据的长度与其数据包的大小(以字节为单位)有何关联?

来自分类Dev

SSIS包中的昨天日期通过表达式设置为变量

来自分类Dev

如何通过在R中使用mpfr包检查数字是否为完美平方?

Related 相关文章

  1. 1

    通过Dart lang中的元数据标签执行功能包

  2. 2

    通过Dart lang中的元数据标签执行功能包

  3. 3

    通过终端命令为R安装素食包

  4. 4

    将包数据设置为PyPI python包中命令行参数的默认输入

  5. 5

    C / PCAP:ARP数据包值全部为0

  6. 6

    为spring数据mongo指定多个基本包

  7. 7

    如何在R地图包中为单个国家/地区着色(Worldhires)

  8. 8

    通过Windows API代码包获取包含Unicode字符的元数据时,应用程序崩溃

  9. 9

    通过Windows API代码包获取包含Unicode字符的元数据时,应用程序崩溃

  10. 10

    gem push导致“包元数据丢失”

  11. 11

    如何注释Java包并反映元数据

  12. 12

    存储库元数据和本地包

  13. 13

    ssis 2008获取包执行元数据

  14. 14

    目的地为同一台计算机的数据包的netem数据包丢失

  15. 15

    为什么 ffprobe 数据包的大小大于 MTU 并且每个数据包映射为一帧?

  16. 16

    数据包过滤器日志记录(当前以tcpdump为后台,以root为根)

  17. 17

    为shapefile创建凸包

  18. 18

    laravel为包命名路由

  19. 19

    为 Debain 包使用 Makefile

  20. 20

    如何通过SSIS包从SAP提取数据?

  21. 21

    通过ttl Scapy过滤数据包?

  22. 22

    通过BLE通知接收数据包

  23. 23

    使用 Intent 通过包传递数据

  24. 24

    通过 tcp 网络发送数据包

  25. 25

    通过表达式通过变量将SSIS包中的昨天日期设置为

  26. 26

    使用“ directlabels”包标记选择曲线

  27. 27

    在 MySQL 中,blob 数据的长度与其数据包的大小(以字节为单位)有何关联?

  28. 28

    SSIS包中的昨天日期通过表达式设置为变量

  29. 29

    如何通过在R中使用mpfr包检查数字是否为完美平方?

热门标签

归档