假设我有一个像这样的条形图
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") 

| 归档时间: | 
 | 
| 查看次数: | 984 次 | 
| 最近记录: |