在ggplot中使用ecdf的geom_errorbar

时间:2015-09-03 06:43:01

标签: r ggplot2 ecdf

我想创建一个包含两行的ecdf图,我想将错误栏添加到其中一行。

我正在使用此代码

x <- c(16,16,16,16,34,35,38,42,45,1,12)
xError <- c(0,1,1,1,3,3,3,4,5,1,1)
y <- c(16,1,12)

length(x)
length(xError)
length(y)

df <-  rbind(data.frame(value = x,name='x'),
             data.frame(value = y,name='y'))

ggplot(df, aes(x=value,color=name,linetype=name))+ stat_ecdf()+ geom_errorbar(aes(ymax = x + xError, ymin=x - xError))

错误栏应添加到x值,但它会出现此错误:

  

错误:美学必须是长度为1或与dataProblems相同的长度:x + xError,x - xError

我不明白 - 结果长度相同。

修改

我改为问题,所以它变得更容易了 - 我认为真正的问题与ECDF图和误差线有关。以此代码为例:

x <- c(16,16,16,16,34,35,38,42,45,1,12)
xError <- c(0,1,1,1,3,3,3,4,5,1,1)
y <- c(16,1,12)

df <- data.frame(value = x)

ggplot(df, aes(x=value))+ stat_ecdf()+ geom_errorbar(aes(ymax = x + xError, ymin=x - xError))

它打印错误条,但图完全破坏。

1 个答案:

答案 0 :(得分:0)

这里有一些类似的问题:confidence interval for ecdf

也许这就是你要归档的东西。

修改

我认为这是你想要得到的东西:

dat2 <- data.frame(variable = x)
dat2 <- transform(dat2, lower = x - xError, upper = x + xError)

l <- ecdf(dat2$lower)
u <- ecdf(dat2$upper)
v <- ecdf(dat2$variable)

dat2$lower1 <- l(dat2$variable)
dat2$upper1 <- u(dat2$variable)
dat2$variable1 <- v(dat2$variable)

ggplot(dat2,aes(x = variable)) + 
  geom_step(aes(y = variable1)) + 
  geom_ribbon(aes(ymin = upper1,ymax = lower1),alpha = 0.2)