抑制R中的交互式绘图

时间:2016-01-26 18:51:50

标签: r

我想使用pdf()将图表发送到文件,但plot.MCMCglmm()正试图以交互方式行事,这会干扰dev.off()

pdf(file="model.pdf")
plot(model, random=FALSE)
Hit <Return> to see next plot: dev.off()

文件未关闭。添加另一个dev.off()将关闭该文件。有没有办法抑制交互式绘图?

编辑示例:

require(MCMCglmm)

mod_dat <- data.frame( Name = rep(letters[1:3], each=10),
                 Group = rep(letters[1:3], 10),
                 Age = rep(letters[1:5], each=6),
                 Happy = rep(letters[1:2], 15),
                 x = rnorm(30),
                 y = rnorm(30) )

mod_out <- MCMCglmm( y~x, random=~Name+Group+Age+Happy, 
  data=mod_dat, verbose=FALSE )

pdf( file="model out.pdf" )
plot(mod_out)
dev.off()
dev.off()

2 个答案:

答案 0 :(得分:1)

您可以修改plot.MCMCglmm的绘图功能以关闭新的页面提示。您可以通过在控制台中键入plot.MCMCglmm来获取该功能的代码。

myPlotGLMM = function (x, random = FALSE, ...) 
{
  nF <- x$Fixed$nfl
  #devAskNewPage.orig <- devAskNewPage()
  if (random) {
    nF <- sum(rep(x$Random$nrl, x$Random$nfl)) + nF
    if (nF != dim(x$Sol)[2]) {
      stop("random effects not saved and cannot be plotted")
    }
  }
  plot(x$Sol[, 1:nF, drop = FALSE], ...)
  #devAskNewPage(TRUE)
  if (is.null(x$Lambda) == FALSE) {
    plot(x$Lambda, ...)
    #devAskNewPage(TRUE)
  }
  plot(x$VCV, ...)
  #devAskNewPage(devAskNewPage.orig)
}

myPlotGLMM(model)

答案 1 :(得分:0)

另一个选择是将所有内容绘制到一个页面上。没有可重复的例子,我无法测试这个,但这应该有效:

pdf(file="model.pdf")
par(mfrow=c(2,2))
plot(model, random=FALSE)
dev.off()

因此,如果生成了四个图,它们将以2 x2网格排列在一页上。