2012-09-18 77 views
2

我拼命地寻找这个问题的解决方案:ggplot躲过barplot

我想创建从以下数据框中一个barplot:

means <- c(2.4,3,3,3.16,2.5,2.5,3,4.5) 
sds <- c(1.0,1.2,1.0,1.1,2.1,0.7,2.8,0.7) 
teams <- c(1,1,1,1,2,2,2,2) 
scales <- c(1,2,3,4,1,2,3,4) 

datas <- data.frame(teams, scales, means, sds) 

之前,它的工作很好,我有张照片其中蓝色和红色彼此相邻,并具有标准偏差。

graph <- ggplot(data=datas, aes(scales, y=means)) 
graph + 
    geom_bar(aes(fill=teams), stat="identity", position="dodge") + 
    no_margins + 
    geom_errorbar(aes(ymin= means - sds, ymax = means + sds, width=0.2), position=position_dodge(width=0.90)) + 
    coord_flip() 

安装最新版本的R(2.15.1)后,我得到的是一个文件,其中的4条显示为蓝色,而不是回避(对方旁边)

没有人有一个想法,变化(颜色,闪避)从哪里来?

我已经花了数小时的结果,所以非常感谢您的任何建议!

回答

3

我不确定它为什么不能正常工作,但是这里有一个版本。

graph <- 
    ggplot(data=datas, aes(scales, y=means, group=teams)) + 
    geom_bar(aes(fill=teams), stat="identity", 
      position="dodge") + 
    geom_errorbar(aes(ymin= means - sds, ymax = means + sds, width=0.2), 
        position=position_dodge(width=0.90)) + 
    coord_flip() 

我把group=teams纳入美学;它不应该是必要的,因为您的geom_bar中有一个fill=teams

enter image description here

+0

两个较小的变化将给出上述情节。 “团队”是数字。将它改为一个因子将会给出上面描述的红色和蓝色。将'fill = team'移回到全球美学,这应该关注'group = team'的问题。 –

+0

谢谢Brian!最终问题:如何将颜色变成深蓝色和深红色? –

+0

看看'scale_fill_manual' –