2016-08-18 69 views
1

我遇到了一个有趣的问题,有关如何/何时在ggplot结构中评估变量 。强制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 如果我给另一个值(在〜10范围为1),并重复 打印(面板)命令则该特定点将被绘出。

如果我去做我< - 接着为印刷(面板)那么所有的十个点会被绘制,就像我已经发布了矢量版本(1:10)

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

在我看来,这里i只有在发出打印(面板)命令时才被评估。

我遇到了一个非常复杂的情节,其中i正在循环列表中的元素,并且矢量化版本不实用。

所以,问题是她: 有没有办法迫使ggplot评估在循环中的每一步?

+0

不要在ggplot2中使用'$'。使用'data'参数... – Roland

回答

5

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)