2

假设我有一个条形图

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

在此处输入图像描述

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

4

1 回答 1

4

首先,将计数数据放入与 mtcars 中具有相同列名 cyl 的新数据框中。

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

添加这些行的一种方法是使用geom_crossbar()并设置y,yminymax的相同值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") 

在此处输入图像描述

于 2013-10-29T20:31:58.117 回答