我需要做一些稀薄的曲线,我希望它们在置信区间栏的边缘显示晶须,而默认情况是只显示没有胡须的条形:
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)
含sd晶须的稀薄曲线
根据我搜索的内容,最常见的方法是将置信区间转换为阴影区域(使用参数ci.type="polygon"),然后在绘制的曲线中添加一个boxplot。然而,这导致了一个非常繁忙的形象,我宁愿避免。
有没有人有更优雅的解决方案?
发布于 2017-07-28 21:05:12
您忘记了乘法器(参见参数ci in ?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.0000000arrow()只是警告您,它不会绘制长度为0的箭头。
发布于 2017-07-28 19:26:38
您可以尝试添加一个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)我承认这也不是最优雅的选择,但它有效。
发布于 2017-08-03 06:12:07
纯素存储库在github中现在有了一个选项,可以将这些短的水平条绘制到带有参数ci.length的错误条中。缺省值为零(没有水平条)以保留旧行为。
https://stackoverflow.com/questions/45378751
复制相似问题