2012-04-19 133 views
5

以下代码用于处理ggplot2的pre-version .9版本。这不可能了吗?当x轴是一个因子时,用ggplot添加一条垂直线

df = data.frame(x = letters[1:26], y=abs(rnorm(26))) 
ggplot(df, aes(x=x, y=y)) + geom_bar() + geom_vline(xintercept='m') 

我得到以下错误:

Error in get(as.character(FUN), mode = "function", envir = envir) : 
    object 'm' of mode 'function' was not found 

回答

10

我不知道(不记得了),如果你原来使用老版本ggplot的工作,但你可以使用另一种方法像这一个:

ggplot(df, aes(x=x, y=y)) + geom_bar() + geom_vline(xintercept=which(df$x == 'm')) 

希望这个帮助!

+0

非常感谢。这工作完美。对于任何使用此功能的人来说,如果您指定了xlim,这将无法正常工作。例如,我实际上是颠倒了顺序(即从最大到最小)。在那种情况下,它将在倒车前返回位置。虽然容易修复。 – jbryer 2012-04-20 13:51:48