假设我有一个像这样的条形图
ggplot(mtcars, aes(factor(cyl)))+geom_bar()
现在我想在 count = 5,4,6 处分别为 cyl = 4,6,8 叠加一条水平线。每条线都应该跨越它所覆盖的条的宽度。我该如何实现?
最佳答案
首先,将您的计数数据放入与 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")
关于r - 如何在条形图的每个条上叠加线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19668375/