-2

我有以下形式的基因及其相应的 p 值:

Gene   p-value
gene1  0.01 
gene2  0.02
gene3  0.06
gene4  0.05
gene5  0.09
gene6  0.01
gene7  0.05
gene8  0.09
gene9  0.01
gene10 0.06

我想创建一个箱线图,如下例所示:

在此处输入图像描述

而不是几个月,我希望它是基因的数量(基因的频率)。根据我拥有的庞大数据集,x 轴应该是属于特定 p 值类别(位于 y 轴)下的基因数量。所以 y 轴将是从 0.01 到 1 的 p 值。

我用了

boxplot(gene ~ p-value, col=rainbow(12))

但它不起作用。

4

1 回答 1

1

我使用了函数cutaggregatehere。?cut您可以通过运行和?aggregate在 R 控制台中了解有关它们的更多信息。这个想法是将您的基因和 p 值数据框以及 pcut值放入箱中。如果您想要更多或更少的垃圾箱,您可以更改breaks函数中的参数cut。然后,您可以使用它们的 bin 绘制 p 值的分布boxplot

我添加了xaxt=FALSE参数,boxplot以便我们可以定义我们自己的自定义轴 - 在本例中是落入每个 bin 的基因数量。aggregate我使用with 函数计算了基因的数量length,然后添加了轴。

set.seed(1)
example <- data.frame(gene=sample(paste("gene",1:10),size=500,replace=TRUE),pval=sample(seq(0.01,1,0.01),500,replace=TRUE))
example$bin <- cut(example$pval,breaks=10)
boxplot(example$pval~example$bin,xaxt="n",ylab="p value",xlab="number of genes")
ngenes <- aggregate(example$gene,by=list("bin"=example$bin),length)
axis(side=1,labels=ngenes$x,at=1:10)

在此处输入图像描述

于 2013-08-21T13:18:44.663 回答