2016-08-18 73 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)