如何使用 Vegan 在 R 中绘制稀疏曲线?
How to plot rarefaction curves in R using Vegan?
我有一个包含在不同参考基因组中识别的基因的数据集。因此,参考基因组在行中,基因在 table 的列中。 table 被编码为二进制,其中 0
表示基因不存在,1
表示基因存在。我制作了基因积累曲线,这表明每个基因组的基因数量正在接近一个稳定水平。现在,我正在尝试使用 R 包 vegan
绘制稀疏曲线。我使用了以下代码:
b<-read.csv("data.csv", header = T, check.names = F)
S <- specnumber(b) # observed number of species
(raremax <- min(rowSums(b)))
Srare <- rarefy(b, raremax)
plot(Srare, xlab = "Observed No. of genes", ylab = "Rarefied No. of genes")
abline(0, 1)
rarecurve(b, step = 15, sample = raremax, col = "blue", cex = 0.6)
数据集是这样的:
gene1 gene2 gene3
#genome1 0 1 0
#genome2 1 0 1
#genome3 1 0 1
但是,使用这段代码我没有得到任何令人满意的输出。我只得到一条穿过对角线的直线。我附上了下面的输出。
有人可以建议我如何更正输出吗?
谢谢。
rarefy
函数稀疏化数据的各个行:它对每一行中出现的事件(“个人”)进行子抽样。如果所有这些样本个体的值为 1,那么您将得到一个子样本,而这些样本的总和就是样本大小:这就是您得到的。没有有意义的方法来稀疏一个向量:您需要一些计数 > 1 的计数数据。
您可能在对矩阵的 行 进行子采样时寻找整个数据集中的基因积累。这是在 vegan 函数 specaccum
(参数 method = "exact"
)中完成的,它有自己的 plot
等方法。
我有一个包含在不同参考基因组中识别的基因的数据集。因此,参考基因组在行中,基因在 table 的列中。 table 被编码为二进制,其中 0
表示基因不存在,1
表示基因存在。我制作了基因积累曲线,这表明每个基因组的基因数量正在接近一个稳定水平。现在,我正在尝试使用 R 包 vegan
绘制稀疏曲线。我使用了以下代码:
b<-read.csv("data.csv", header = T, check.names = F)
S <- specnumber(b) # observed number of species
(raremax <- min(rowSums(b)))
Srare <- rarefy(b, raremax)
plot(Srare, xlab = "Observed No. of genes", ylab = "Rarefied No. of genes")
abline(0, 1)
rarecurve(b, step = 15, sample = raremax, col = "blue", cex = 0.6)
数据集是这样的:
gene1 gene2 gene3
#genome1 0 1 0
#genome2 1 0 1
#genome3 1 0 1
但是,使用这段代码我没有得到任何令人满意的输出。我只得到一条穿过对角线的直线。我附上了下面的输出。
有人可以建议我如何更正输出吗?
谢谢。
rarefy
函数稀疏化数据的各个行:它对每一行中出现的事件(“个人”)进行子抽样。如果所有这些样本个体的值为 1,那么您将得到一个子样本,而这些样本的总和就是样本大小:这就是您得到的。没有有意义的方法来稀疏一个向量:您需要一些计数 > 1 的计数数据。
您可能在对矩阵的 行 进行子采样时寻找整个数据集中的基因积累。这是在 vegan 函数 specaccum
(参数 method = "exact"
)中完成的,它有自己的 plot
等方法。