ggplot在for循环中无法工作,尽管它在循环外可以正常工作。

164

我正在使用一个简单的ggplot函数,在循环外它可以正常工作,但在循环内却不行,即使迭代值不会影响ggplot函数。为什么会这样?

这是我的代码:

x=1:7
y=1:7
df = data.frame(x=x,y=y)
ggplot(df,aes(x,y))+geom_point()

它有效!但如果ggplot在for循环内部...

for (i in 1:5) {
   ggplot(df,aes(x,y))+geom_point()
}

它不再工作了,我错过了什么?

1个回答

303

for 循环中,你必须明确地调用 print 函数来打印生成的 ggplot 对象 :

for (i in 1:5) { 
    print(ggplot(df,aes(x,y))+geom_point()) 
}

7
请问您能详细说明为什么会出现这种情况吗? - Syd Kerckhove
3
如果您仍然感兴趣,这里有一篇关于ggplot的优秀文章:http://www.data-imaginist.com/2017/Beneath-the-canvas/。 - roarkz
2
你如何在 ggsave 中使用它? - John
3
@John myPlot = ggplot()..... 然后 ggsave("filename", plot = myPlot) 可以翻译为:先定义一个变量名为 myPlotggplot() 对象,然后使用 ggsave("filename", plot = myPlot) 将其保存为文件。 - Glubbdrubb
6
这可能与主题无关,但我不确定独立发布我的困惑是否有任何价值:建议的 print(ggplot(df,aes(x,y))+geom_point()) 能够正常运行,但 ggplot(df,aes(x,y))+geom_point() %>% print() 却不能。然而,(ggplot(df,aes(x,y))+geom_point()) %>% print() 可以。这可能与 ggplot 的 "+" 不是管道符的性质有关,可以在此处了解更多信息:https://dev59.com/c1oT5IYBdhLWcg3wxx7g - Josh
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接