проблема сохранения PDF-файла в R с ggplot2 - PullRequest
11 голосов
/ 11 апреля 2011

У меня странная проблема. Я могу создать и сохранить файл 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 ]

31 голосов
/ 11 апреля 2011

Проблема в том, что вы не закрываете устройство 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")

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

5 голосов
/ 11 апреля 2011

Это в FAQ по R, вам нужно 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() не нужен. Ответ Гэвина имеет больше.

1 голос
/ 18 марта 2017

Следующий график

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» печатается автоматически, но не в функции или при исходном файле.

0 голосов
/ 03 октября 2014

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

a <- ggplot(dat, aes(x = A, y = B)) + geom_point()
ggsave("Structure.pdf",plot=a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...