从R函数中生成多个图形

Wil*_*ane 29 r ggplot2 r-faq

我想使用ggplot图形从R中的函数中生成几个图形窗口...

testf <- function(a, b) {
  devAskNewPage(TRUE)
  qplot(a, b);
  # grid.newpage(recording = TRUE)
  dev.new()
  qplot(a, a+a);
  # grid.newpage(recording = TRUE)
  dev.new()
  qplot(b, b+b);
}

library(ggplot2)

x <- rnorm(50)
y <- rnorm(50)
testf(x, y)
Run Code Online (Sandbox Code Playgroud)

但是,dev.new()和grid.newpage()似乎都没有刷新前面的情节.

我知道,在R中,函数通常只生成他们评估的最后一件事,但我想更好地理解这个过程并了解任何可能的解决方法.

思考?

rcs*_*rcs 29

网格为基础的图形功能的晶格和GGPLOT2创建图表对象,但不显示它.print()图形对象的方法产生实际显示,即

print(qplot(x, y))
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.

R FAQ 7.22.

  • +1:这让我难倒了30分钟.这个问题非常重要,值得再现:***"生成实际显示需要图形对象的print()方法.当你在命令行交互使用(ggplot2,grid等)函数时,结果会自动打印,但在source()或您自己的函数内部,您需要一个显式的print()语句."*** (7认同)
  • 您的建议是正确的,但这与网格没有任何关系-这只是编程风格的决定。 (2认同)