Проблема сохранения PDF-файла в R с ggplot2

Я столкнулся со странной проблемой. Я могу создать и сохранить файл PDF с помощью R / ggplot2 и просматривать их во время работы консоли R. Как только я выйду из консоли R, в Preview в Mac OS X файл PDF больше не будет отображаться. Я смог сохранить файлы.png без проблем, но по независящим от меня причинам мне нужно сохранить файлы в формате pdf. Код, который я использую для сохранения, выглядит следующим образом:

  pdfFile <-c("/Users/adam/mock/dir/structure.pdf")
  pdf(pdfFile)
  ggplot(y=count,data=allCombined, aes(x=sequenceName, fill=factor(subClass))) + geom_bar()
  ggsave(pdfFile)  

Кто-нибудь сталкивался с подобной проблемой? Если так, что мне нужно сделать, чтобы это исправить? Большое спасибо за уделенное время.

4 ответа

Решение

Проблема в том, что вы не закрываете pdf() устройство с dev.off()

dat <- data.frame(A = 1:10, B = runif(10))
require(ggplot2)

pdf("ggplot1.pdf")
ggplot(dat, aes(x = A, y = B)) + geom_point()
dev.off()

Это работает, как и:

ggplot(dat, aes(x = A, y = B)) + geom_point()
ggsave("ggplot1.pdf")

Но не смешивайте два.

Это в R FAQ, вам нужно print() вокруг вашего звонка ggplot() - и вам нужно закрыть графическое устройство с dev.off() а то есть попробуй

pdfFile <-c("/Users/adam/mock/dir/structure.pdf")
pdf(pdfFile)
ggplot(y=count,data=allCombined,aes(x=sequenceName,fill=factor(subClass)))
      + geom_bar()
dev.off()

Редактировать: я был наполовину прав на dev.off()по-видимому print() не требуется. Ответ Гэвина имеет больше.

Следующий сюжет

pdf("test.pdf")  
p <- qplot(hp, mpg, data=mtcars, color=am,   
         xlab="Horsepower", ylab="Miles per Gallon", geom="point")   
p  
dev.off()

работает в консоли, но не в функции или когда вы исходите из файла.

myfunc <- function() {  
  p <- qplot(hp, mpg, data=mtcars, color=am,   
           xlab="Horsepower", ylab="Miles per Gallon", geom="point")  
  p 
}  
pdf("test.pdf")  
myfunc()  
dev.off()  

Будет ли поврежден файл PDF и как его исправить мы используем

print(p) 

в функции.

В консоли. "p" печатается автоматически, но не в функции или при исходном файле.

Вы также можете изменить имя файла вашего pdf-графика в ggsave, если вы хотите назвать его как-то иначе, чем "ggplot1" или любое другое краткое имя объекта, которое вы выбрали; просто сначала укажите имя файла, а затем скажите, к какому сюжету вы обращаетесь, например:

a <- ggplot(dat, aes(x = A, y = B)) + geom_point()
ggsave("Structure.pdf",plot=a)
Другие вопросы по тегам