首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在稀疏曲线中加入CI晶须

如何在稀疏曲线中加入CI晶须
EN

Stack Overflow用户
提问于 2017-07-28 16:54:30
回答 3查看 1.3K关注 0票数 1

我需要做一些稀薄的曲线,我希望它们在置信区间栏的边缘显示晶须,而默认情况是只显示没有胡须的条形:

代码语言:javascript
复制
library(vegan) 
data("dune")
result <- specaccum(dune)
plot(result, lwd=2)

默认稀疏曲线

我尝试使用arrows函数添加一些晶须,但是来自specaccum函数的结果只包含标准差。所以我完成了一半的工作:

代码语言:javascript
复制
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。然而,这导致了一个非常繁忙的形象,我宁愿避免。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-28 21:05:12

您忘记了乘法器(参见参数ci in ?plot.specaccum)。你画的是68%的置信区间。乘以2 (ci = 2)得到的置信区间约为95%,这是plot.specaccum默认绘制的。

在您使用的代码的修改中包括(默认)乘数

代码语言:javascript
复制
plot(result)
with(result, arrows(sites, richness - (2 * sd), sites, richness + (2 * sd),
                    angle = 90, code = 3, length = 0.05))

我们得到:

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

代码语言:javascript
复制
> 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
EN

Stack Overflow用户

发布于 2017-07-28 19:26:38

您可以尝试添加一个plotCI-图:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-08-03 06:12:07

纯素存储库在github中现在有了一个选项,可以将这些短的水平条绘制到带有参数ci.length的错误条中。缺省值为零(没有水平条)以保留旧行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45378751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档