当x轴是因子时,使用ggplot添加垂直线

时间:2012-04-19 21:14:49

标签: r ggplot2

以下代码用于处理ggplot2的预版本.9。这不可能了吗?

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

2 个答案:

答案 0 :(得分:13)

我不知道(不记得)你的原版是否曾经使用旧版本的ggplot,但你可以使用另一种方法,如下所示:

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

希望这有帮助!!!

答案 1 :(得分:2)

对于希望在已分类的x轴的自定义位置添加垂直线的人,此答案是更广泛的讨论。

我有五个小组,每个小组有五个因素。我想在每组的最后一个因素后面添加4条垂直线以分隔5个组(在本例中为'E'位置)。 @dickoa的方法不适用于我的情况。当我使用时:

geom_vline(xintercept=which(df$x == 'm'))

仅在第三组的'm'处添加垂直线。 我发现我可以这样尝试:

geom_vline(xintercept = c(1.5,2.5,3.5,4.5))

至少这对我来说很完美。您可能需要尝试几次才能找到适合您情况的样式。

我一直想知道如何基于x / y轴的比例添加垂直/水平线。例如,xintercept = 0.5表示在x轴的中间添加垂直线,xintercept = 0.25表示第一季度。但是我找不到关于此主题的任何知识。