如何在条形图的每个条上叠加线条

时间:2013-10-29 20:25:03

标签: r ggplot2

假设我有一个像

这样的条形图
ggplot(mtcars, aes(factor(cyl)))+geom_bar()

enter image description here

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

1 个答案:

答案 0 :(得分:3)

首先,将您的计数数据放在新数据框中,该数据框与mtcars中的列名相同。

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