无法使用不同长度的数据集添加geom_hline()

时间:2014-12-24 08:08:57

标签: r ggplot2

我想添加一个带有水平线的条形图来分隔填充区域。我使用以下代码,工作正常。

bar1 = ggplot(mtcars, aes(x = factor(1), fill = factor(cyl))) + geom_bar(width = 1)
tbl = cumsum(table(mtcars$cyl))
bar1 + geom_hline(aes(yintercept = tbl[1:2]), color = 'white', size=2) +
  geom_hline(aes(yintercept = tail(tbl, 1)), color = 'white', size = 2 )

但是,如果我将两个geom_hline()方法合并为一个,则会出错。

bar1 + geom_hline(aes(yintercept = tbl), color = 'white', size=2)
# Error in data.frame(yintercept = c(11L, 7L, 14L), PANEL = c(1L, 1L, 1L,  : 
#                             arguments imply differing number of rows: 3, 32

为什么我不能只使用geom_hline在方法调用中绘制3条水平线?

1 个答案:

答案 0 :(得分:1)

尝试

bar1 = ggplot(mtcars, aes(x = factor(1), fill = factor(cyl))) + geom_bar(width = 1)
tbl = cumsum(table(mtcars$cyl))
bar1 + geom_hline(data=data.frame(tbl), aes(yintercept = tbl), color = 'white', size=2)

enter image description here