2017-07-28 23 views
1

我需要制作一些稀疏曲线,并希望它们在置信区间条的边缘显示晶须,而默认情况下仅显示没有晶须的条纹:如何将CI晶须添加到稀疏曲线

library(vegan) 
data("dune") 
result <- specaccum(dune) 
plot(result, lwd=2) 

Default rarefaction curve 默认稀疏曲线

我试着使用arrows FUNC添加一些晶须但specaccum函数的结果只包含标准偏差。所以我结束了一半的工作:

samples <- result$sites 
error <- result$sd 
richness <- result$richness 
arrows(samples, richness-error, samples, richness+error, angle=90, code=3, length=0.05) 

Rarefaction curve with sd whiskers 与SD晶须

从我所搜索的内容,负压曲线,最常见的方法是转换将置信区间放入阴影区域(使用参数),然后将boxplot添加到绘制曲线。但是,这导致了我宁愿避免的非常繁忙的图像。

有没有人有更优雅的解决方案?

回答

0

您忘记了乘数(请参阅?plot.specaccum中的参数ci)。你画的是〜68%的置信区间。乘以2(ci = 2)给出了大约95%的置信区间,这是默认绘制的plot.specaccum

包括你使用

plot(result) 
with(result, arrows(sites, richness - (2 * sd), sites, richness + (2 * sd), 
        angle = 90, code = 3, length = 0.05)) 

代码的修改(默认)乘数我们得到:

enter image description here

可以忽略警告;最后绘制的数据点的标准误差为零

> result$sd 
[1] 2.3510636 1.8763851 1.5722711 1.4469584 1.3901594 1.3530349 1.3164796 
[8] 1.2749034 1.2282010 1.1763410 1.1193437 1.0564537 0.9874094 0.9115998 
[15] 0.8286890 0.7380921 0.6333903 0.5139710 0.3570714 0.0000000 

arrow()只是警告你,它不会画一个长度为0的箭头。

+0

很高兴看到我接近达成解决方案。 干杯! –

+0

目前我们使用'segments'来绘制误差线。我们可以切换到箭头(...,code = 3,angle = 90)',但这需要添加参数'ci.len'来设置垂直结束条的长度(默认'ci.len = 0')。这会是可取的吗? –

1

你可以尝试添加plotCI积:

library(vegan) 
library(plotrix) 
data("dune") 
result <- specaccum(dune) 

plot(result) 
plotCI(result$sites,result$richness,result$sd*2,err="y", lwd=2,add=TRUE, pch=NA) 

我承认这也不是最优雅的选项,以及,但它的工作原理。

+0

不是最优雅的,但它做到了! 非常感谢! –

0

素食主义者库中github现已绘制的短横条的误差条与参数ci.length的选项。默认值为零(无横条)以保留旧的行为。