Проблема сохранения 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)