2016-01-26 1 views
1

Я хотел бы отправить сюжет в файл с помощью pdf(), но plot.MCMCglmm() пытается действовать интерактивно, что мешает dev.off().отключить интерактивное построение графика в R

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

И файл не закрыт. Добавление другого dev.off() закрывает файл. Есть ли способ подавить интерактивный график?

EDIT пример:

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() 
+0

Хотя я в Rstudio, я не хочу ударять . – noname

ответ

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) 
+0

Мне было интересно, почему par (ask = FALSE) ничего не делал. Я не знал, что это устарело. – noname

0

Другой вариант заключается в том, чтобы отображать все на одной странице. Без воспроизводимым примера я не могу проверить это, но это должно работать:

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

Так что, если это генерироваться четыре участка, они будут размещены на одной странице 2 x2 сетки.

+0

Вы все равно получите приглашение в консоли, чтобы нажать , что вам нужно будет сделать в интерактивном режиме перед запуском 'dev.off()'. – eipi10

+0

О, хорошо. Это хороший момент. Проблема с попыткой ответить на вопрос без воспроизводимого примера. – boshek

Смежные вопросы