2013-10-29 146 views
1

假设我有一个柱状图像如何覆盖条形图

ggplot(mtcars, aes(factor(cyl)))+geom_bar() 

enter image description here

现在我想在覆盖数的水平线= 5,4,6的各条线路上对于cyl分别为4,6,8。每条线应该跨越它所覆盖的条的宽度。我该如何做到这一点?

回答

3

冷杉,把你的计数数据在具有与mtcars相同的列名cyl的新数据框中。添加这些行

df2<-data.frame(cyl=c(4,6,8),counts=c(5,4,6)) 

的一种方法是使用geom_crossbar()并设置yyminymax和向的counts相同的值。

ggplot(mtcars, aes(factor(cyl)))+geom_bar()+ 
    geom_crossbar(data=df2,aes(x=factor(cyl), 
        y=counts,ymin=counts,ymax=counts),color="green") 

geom_errorbar()也可以达到同样的效果。

ggplot(mtcars, aes(factor(cyl)))+geom_bar()+ 
    geom_errorbar(data=df2,aes(x=factor(cyl), 
        ymin=counts,ymax=counts),color="green") 

enter image description here