2010-02-16 2 views
2

У меня возникла проблема с сохранением dotplot в pdf, когда эта команда выполняется внутри функции.Сохранение dotplot в pdf в R

Он отлично работает при вызове обычно:

df <- data.frame(a = runif(10), b = runif(10), c = runif(10), x = 1:10) 
pdf("test.pdf") 
dotplot(a + b + c ~ x, data = df, type = "l", auto.key=TRUE) 
dev.off() 

Но если этот код внутри функции, он не будет работать, и просто делает пустой или пустой файл:

plotFunc <- function(model) 
{ 
    pdf("test.pdf") 
    dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE) 
    dev.off() 
} 
plotFunc(df) 

Однако, называя функция без команд файла успешно печатает в графическом окне:

plotWinFunc <- function(model) 
{ 
    dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE) 
} 
plotWinFunc(df) 

Это заставляет меня думать, что что-то пойдет не так с dotplot(), когда он должен выводиться в файл. И тип файла не имеет значения, я пробовал как с bmp, так и с pdf, и ни один из методов не работает.

Как я могу успешно записать dotplot в файл? Должен ли я использовать специальную команду из пакета решетки или у меня есть ошибка где-нибудь?

Спасибо за любую помощь.

ответ

8

Просто понял, что я должен обернуть dotplot в печати():

plotFunc <- function(model)  
{  
    pdf("test.pdf")  
    print(dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE))  
    dev.off()  
} 
plotFunc(df) 

Это, кажется, решили.

+1

Yup, это FAQ. –

+0

Я думаю, вы можете также обернуть его в plot() –

+0

Да, я нашел его сразу после того, как я разместил вопрос. Где-то в файле справки либо для точки или решетки. – Jared

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