如何在ggplot条形图中的每个条上添加一行?
例如,使用内置的ggplot示例:
mm <- ddply(mtcars, "cyl", summarise, mmpg = mean(mpg))
ggplot(mm, aes(x = factor(cyl), y = mmpg)) + geom_bar(stat = "identity")
产生这个
现在我有一个向量y <- c(10, 5, 5)
,这是我想在每个条上绘制一条线的高度,产生类似这样的东西
我该怎么办?我试过了geom_hline
,但这产生的线条却贯穿整个图表。
答案 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()
在数据框中绘制线条,然后通过手动将ymax
和ymin
设置为y
值来缩小宽度。
上面的代码产生了这个结果:
积分转到this来源。