假设我有一个条形图
ggplot(mtcars, aes(factor(cyl)))+geom_bar()
现在我想分别为 cyl = 4,6,8 在 count = 5,4,6 处覆盖一条水平线。每条线都应该跨越它所覆盖的条的宽度。我该如何做到这一点?
首先,将计数数据放入与 mtcars 中具有相同列名 cyl 的新数据框中。
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")