如何将CI晶须添加到稀疏曲线

时间:2017-07-28 16:54:30

标签: r plot vegan

我需要制作一些稀疏曲线,我希望它们在置信区间条的边缘显示胡须,而默认情况下只显示没有胡须的条纹:

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

Default rarefaction curve   默认稀疏曲线

我尝试使用arrows函数添加一些胡须,但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胡须的稀疏曲线

根据我的搜索结果,最常见的方法是将置信区间转换为阴影区域(通过使用参数ci.type="polygon"),然后将boxplot添加到绘制的曲线中。然而,这导致了一个非常繁忙的图像,我宁愿避免。

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

3 个答案:

答案 0 :(得分:1)

您可以尝试添加plotCI-plot:

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)

我承认这也不是最优雅的选择,但它有效。

答案 1 :(得分:0)

您忘记了乘数(请参阅ci中的参数?plot.specaccum)。你画的是~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的箭头。

答案 2 :(得分:0)

github中的素食主义存储库现在可以选择将这些短水平条形图绘制到带有参数ci.length的误差线上。默认值为零(无水平条)以保留旧行为。