强制ggplot来评估计数器变量

时间:2016-08-18 14:36:16

标签: r ggplot2

我遇到了一个关于如何/何时变量的有趣问题 在ggplot结构中进行评估。

我能想到的最简单的例子是重现这个 跟随(应该将点1到10放在图上):

df=data.frame(x=1:10,y=1:10)
panel=ggplot() + xlim(-1,11) + ylim(-1,11)
for (i in c(1:10)) {
    panel=panel+geom_point(aes(x=df$x[i],y=df$y[i]))
}
print(panel)

这将产生一个点的图,即 i = 10 的图 如果我给 i 另一个值(在1到10的范围内)并重复 打印(面板)命令然后将绘制该特定点。

如果我 i< - c(1:10),然后是打印(面板),则会绘制所有十个点,就像我发布了矢量化版本:

ggplot(aes(x=x,y=x),data=df)+geom_point()

在我看来, i 仅在发出打印(面板)命令时进行评估。

我在一个非常复杂的情节中遇到了这个问题,其中 i 循环遍历列表的元素,而矢量化版本则不实用。

所以,她的问题是: 有没有办法强制ggplot为循环中的每个步骤评估 i

1 个答案:

答案 0 :(得分:7)

aes()特别阻止了驱逐。如果您想要评估,可以使用标准评估版aes_()

panel=ggplot() + xlim(-1,11) + ylim(-1,11)
for (i in c(1:10)) {
    panel=panel+geom_point(aes_(x=df$x[i],y=df$y[i]))
}
print(panel)