12

以下代码用于 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')

我收到以下错误:

获取错误(as.character(FUN),模式=“功能”,环境=环境):找不到模式“功能”的对象“m”

4

2 回答 2

15

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

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

希望这有帮助!

于 2012-04-19T21:25:46.147 回答
4

对于想要在分类 x 轴的自定义位置添加垂直线的人来说,这个答案是一种更广泛的讨论。

我有五个组,每个组有五个因素。我想在每组的最后一个因子后面添加 4 条垂直线来分隔五个组(在这种情况下位于“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 表示第一季度。但是我找不到有关此主题的任何知识。

于 2018-08-31T18:16:17.370 回答