如何使用geom_errorbar在堆叠条形图中堆叠误差条? [英] How to stack error bars in a stacked bar plot using geom_errorbar?

查看:38
本文介绍了如何使用geom_errorbar在堆叠条形图中堆叠误差条?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用 geom_errorbar/ggplot 在堆积的直方图中堆积误差线.

I want to stack the error bars in a stacked histogram using geom_errorbar / ggplot.

在我的 ggplot 语句中,我尝试同时使用 position="stack"position="identity".他们都没有工作.

In my ggplot statement, I have tried to used both position="stack" and position="identity". None of them worked.

这是我的 ggplot 声明:

Here is my ggplot statement:

ggplot(DF, aes(x=factor(year), y=proportion, fill=response)) +
        facet_grid(. ~ sex) +
        theme(legend.position="none")
        geom_bar(position="stack", stat="identity") +
        geom_errorbar(aes(ymin=ci_l, ymax=ci_u),
                      width=.2,                    # Width of the error bars
                      position="identity") +

这是我得到的结果,您可能会注意到右侧的误差条不遵循条形值.

Here is the result I'm getting, and you may notice that the error bars on the right hand-side do not follow the bar values.

这是我在此示例中使用的数据框:

Here is the Data Frame I've used in this example:

DF <- data.frame(sex=c("men","women","men","women","men","women"),
                  proportion=c(0.33,0.32,0.24,0.29,0.12,0.16),
                  ci_l=c(0.325,0.322,0.230,0.284,0.114,0.155),
                  ci_u=c(0.339,0.316,0.252,0.311,0.130,0.176),
                  year=c(2008,2008,2013,2013,2013,2013),
                  response=c("Yes","Yes","Yes, entire the journey","Yes, entire the journey","Yes, part of the journey","Yes, part of the journey")
                  )

推荐答案

这里发生的事情是 ggplot 没有堆叠误差条(它们必须相加)所以你必须手工做(似乎哈德利认为这不是一个好主意,不会添加这个功能).

What is happening here is that ggplot is not stacking the error bars (they would have to be summed) so you will have to do that by hand (and it seems that Hadley thinks that this is not a good idea and wil not add this functionality).

手工制作:

DF$ci_l[DF$response == "Yes, part of the journey"] <- with(DF,ci_l[response == "Yes, part of the journey"] +
         ci_l[response == "Yes, entire the journey"])

DF$ci_u[DF$response == "Yes, part of the journey"] <- with(DF,ci_u[response == "Yes, part of the journey"] +
                                                             ci_u[response == "Yes, entire the journey"])

现在:

ggplot(DF, aes(x=factor(year), y=proportion)) +
  facet_grid(. ~ sex) +
  geom_bar(stat="identity",aes(fill=response)) +
  geom_errorbar(aes(ymin= ci_l, 
                    ymax= ci_u),
                width=.2,                    # Width of the error bars
                position="identity")

这篇关于如何使用geom_errorbar在堆叠条形图中堆叠误差条?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆