Проблема сохранения файла 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)
Кто-нибудь сталкивался с подобной проблемой? Если да, что мне нужно сделать, чтобы исправить это?
Большое вам спасибо за ваше время.
Ответы
Ответ 1
Проблема заключается в том, что вы не закрываете устройство 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")
Но не смешивайте их.
Ответ 2
В разделе "Часто задаваемые вопросы" вам нужно 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()
isn; t. Ответ Гэвина больше.
Ответ 3
Следующий график
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" автоматически печатается, но не в функции или при исходном файле.
Ответ 4
Вы также можете изменить имя файла вашего pdf-графика в ggsave, если хотите называть его чем-то иным, чем "ggplot1" или любым кратким именем объекта, которое вы выбрали; просто сначала укажите имя файла, а затем скажите, на какой сюжет вы ссылаетесь, например:
a <- ggplot(dat, aes(x = A, y = B)) + geom_point()
ggsave("Structure.pdf",plot=a)