假设我有一个像
这样的条形图ggplot(mtcars, aes(factor(cyl)))+geom_bar()
现在我想在count = 5,4,6处覆盖水平线,分别为cyl = 4,6,8。每条线应该跨越它所覆盖的条的宽度。我该如何做到这一点?
答案 0 :(得分:3)
首先,将您的计数数据放在新数据框中,该数据框与mtcars中的列名相同。
df2<-data.frame(cyl=c(4,6,8),counts=c(5,4,6))
添加这些行的一种方法是使用geom_crossbar()
并将y
,ymin
和ymax
设置为相同的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")