在ggplot barplot上添加标记线

时间:2015-08-02 10:10:06

标签: r ggplot2 bar-chart

如何在ggplot条形图中的每个条上添加一行?

例如,使用内置的ggplot示例:

mm <- ddply(mtcars, "cyl", summarise, mmpg = mean(mpg))
ggplot(mm, aes(x = factor(cyl), y = mmpg)) + geom_bar(stat = "identity")

产生这个

enter image description here

现在我有一个向量y <- c(10, 5, 5),这是我想在每个条上绘制一条线的高度,产生类似这样的东西

enter image description here

我该怎么办?我试过了geom_hline,但这产生的线条却贯穿整个图表。

1 个答案:

答案 0 :(得分:5)

这应该有效:

y <- c(10, 5, 5)

mm <- ddply(mtcars, "cyl", summarise, mmpg = mean(mpg))
mm <- cbind(mm, y) # get vector into data frame

ggplot(mm, aes(x = factor(cyl), y = mmpg)) + 
geom_bar(stat = "identity") +
geom_errorbar(aes(yintercept = y, ymax=y, ymin=y), 
              color = "white", size = 2)

我们使用geom_errorbar()在数据框中绘制线条,然后通过手动将ymaxymin设置为y值来缩小宽度。

上面的代码产生了这个结果:

enter image description here

积分转到this来源。