【问题标题】:ggplot barchart with grouped confidence interval具有分组置信区间的ggplot条形图
【发布时间】:2012-11-17 15:43:54
【问题描述】:

a <- structure(list(
  X1 = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L), 
                  .Label = c("V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8"), class = "factor"), 
   X2 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,  2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), 
                    .Label = c("A", "B", "C"), class = "factor"), 
  value = c(0.03508924, 0.03054929, 0.03820896, 0.18207091, 0.25985142, 0.03909991, 0.03079736, 
            0.41436334, 0.02957787, 0.03113289, 0.03239794, 0.1691519, 0.16368845, 0.0287741, 0.02443448, 
            0.33474091, 0.03283068, 0.02668754, 0.03597605, 0.17098721, 0.23048966, 0.0385765, 0.02597068, 0.36917749), 
   se = c(0.003064016, 0.003189752, 0.003301929, 0.006415592, 0.00825635, 0.003479607, 
          0.003195332, 0.008754099, 0.005594554, 0.006840959, 0.006098068, 0.012790908, 0.014176414, 
          0.006249045, 0.005659445, 0.018284739, 0.005051873, 0.004719352, 0.005487301, 0.011454206, 
          0.01290797, 0.005884275, 0.004738851, 0.014075813)), 
  .Names = c("X1", "X2", "value", "se"), class = "data.frame", row.names = c(NA, -24L)) 

我正在绘制上述数据(保存在数据集“a”中),但我无法让置信区间位于组图的中间。到目前为止,我的尝试只能在每个条的一侧,而不是像 geom_errorbar 帮助文件中的中间。我试图操纵闪避参数,但它只会让它变得更糟。 图表需要保持翻转,在下面的代码中我使用了 geom_linerange 但 geom_errorbar 会更好。 我还没有完全做到的另一件事是将比例更改为整数(不与原始表格相乘)。

我在 a

limits <- aes(ymax = value + se, ymin=value - se)
 p<-ggplot(data = a, aes(x = X1, y =value))+   
    geom_bar(aes(fill=X2),position = "dodge") +    
    scale_x_discrete(name="")+
    scale_fill_manual(values=c("grey80","black","red"))+
    scale_y_continuous(name="%")+   
    theme(axis.text.y = element_text(face='bold'),
          legend.position ="top",
          legend.title=element_blank())+   
     coord_flip()
p + geom_linerange(limits)

【问题讨论】:

  • 您想加入限制吗?如果我了解您想在每个条形上添加一行?
  • Agstudy,谢谢。我已经修改了代码

标签: r ggplot2


【解决方案1】:

试试这个,

p<-ggplot(data = df, aes(x = X1, y =value,fill= X2))+   
    geom_bar(position=position_dodge()) +
    geom_errorbar(aes(ymax = value + 2* se, ymin=value,colour = X2),position=position_dodge(.9))



p <- p + scale_x_discrete(name="")+
   scale_fill_manual(values=c("grey80","black","red"))+
   scale_y_continuous(name="%")+   
   theme(axis.text.y = element_text(face='bold'),
         legend.position ="top",
         legend.title=element_blank())+   
   coord_flip()

【讨论】:

  • Agstudy,我真的很抱歉。我发布的太快了。在我尝试匿名数据时,我实际上错误地标记了变量!我现在修改了数据集并重新运行代码。你应该能看到我现在的问题了。如果浪费了您的时间,我真的很抱歉。
  • 要提供可重现的数据样本,请使用 dput ,输入 dput(a) 并修正您的问题。
  • 再次感谢您是明星。
  • 非常感谢。并且 scale_y_continuous(name="%",labels=function(x)x*100) 应该修改我提到的比例(参见stackoverflow.com/questions/4646020/…
猜你喜欢
  • 2018-12-03
  • 2021-02-05
  • 2018-08-06
  • 2012-12-04
  • 2020-02-27
  • 2013-08-12
  • 2015-09-14
  • 2021-08-29
相关资源
最近更新 更多