我需要制作一些稀疏曲线,我希望它们在置信区间条的边缘显示胡须,而默认情况下只显示没有胡须的条纹:
library(vegan)
data("dune")
result <- specaccum(dune)
plot(result, lwd=2)
我尝试使用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)
根据我的搜索结果,最常见的方法是将置信区间转换为阴影区域(通过使用参数ci.type="polygon"
),然后将boxplot
添加到绘制的曲线中。然而,这导致了一个非常繁忙的图像,我宁愿避免。
有没有人有更优雅的解决方案?
答案 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))
我们得到:
你可以忽略警告;绘制的最后一个数据点的标准误差为零
> 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
的误差线上。默认值为零(无水平条)以保留旧行为。