关于如何/何时在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?
的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)