强制ggplot来评估计数器变量

stu*_*ngr 4 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)
Run Code Online (Sandbox Code Playgroud)

这将生成一个曲线图与一个点,即,一个用于I = 10 如果我给我的另一值(在〜10范围为1),并重复该 打印(面板)命令则该特定点将被绘出.

如果我按< - c(1:10),然后是print(面板),那么所有十个点都将被绘制,就像我发布了矢量化版本一样:

ggplot(aes(x=x,y=x),data=df)+geom_point()
Run Code Online (Sandbox Code Playgroud)

在我看来,这里我只在发出print(panel)命令时进行评估.

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

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

MrF*_*ick 8

的aes()具体防止evulation.如果您想要评估,可以使用标准评估版本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)
Run Code Online (Sandbox Code Playgroud)