繁体   English   中英

在ggplot2中的条形图上跨行

[英]Line across groups of bars in ggplot2

我的数据框很小,我想用条形图构建条形图,以显示各个组之间的平均水平。

数据框:

cpcost = c("Coll.Punishment","Coll.Punishment", "Ind.Punishment", 
           "Ind.Punishment")
color = c(0,1,0,1)
mysum = c(0.3408240, 0.2935982, 0.3460490, 0.1267057)
genlevel = c(0.3111111,0.3111111, 0.2181818, 0.2181818)
temp = as.data.frame(cbind(cpcost,color,mysum,genlevel))

所以结果看起来像这样:

在此处输入图片说明

问题在于,现在我的工作方式非常丑陋(请参见下文)。 我基本上首先添加水平误差线。 但是由于每个误差线之间的距离很小,因此:

在此处输入图片说明

我还画了一条水平线以填充误差线之间的小空间。 (如果我绘制唯一的水平条,它将从条的中间开始)。

在此处输入图片说明

我确实相信,有更多更优雅的方法可以达到相同的结果。 我该怎么办?

谢谢!

    ggplot(temp, aes(group=cpcost),
           y = genlevel ) + 
      geom_bar(stat = "identity",aes(x = factor(color),
                                     y = mysum,
                                     group=cpcost,
                                     fill = factor(color))) +
       geom_errorbar(aes(x=factor(color),
                          y=genlevel,
                          ymin=genlevel,
                          ymax=genlevel,
                         group=cpcost
                          )) +
      geom_line( aes(x=factor(color), y=genlevel,group=cpcost)) +
      labs(x = "Round", y = "Share of Emptying") + 
      scale_fill_discrete(name='Crime',                                                          
 labels=c("No", "Yes" )) +
      ggtitle('Whistleblowing')+
      facet_grid(~cpcost)

这会给您带来稍微不同的结果,但是我希望它足以满足您的需求。 更干净,并使用内置的geom_hline

library(ggplot2)

df <- data.frame(cpcost = c("Coll.Punishment", "Coll.Punishment", "Ind.Punishment", "Ind.Punishment"),
                color = c(0,1,0,1),
                mysum = c(0.3408240, 0.2935982, 0.3460490, 0.1267057),
                genlevel = c(0.3111111,0.3111111, 0.2181818, 0.2181818))

ggplot(df) +
    geom_col(aes(factor(color), mysum, fill = factor(color))) +
    geom_hline(aes(yintercept = genlevel)) +
    scale_fill_discrete(name='Crime', labels=c("No", "Yes" )) +        
    facet_wrap( ~ cpcost) +
    labs(x = "Round", y = "Share of Emptying") +
    ggtitle('Whistleblowing')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM