#r #pdf #ggplot2
#r #PDF #ggplot2
Вопрос:
У меня возникли проблемы с сохранением многочисленных ggplots внутри pdf, потому что я создаю ggplots (точечные диаграммы и коробочные диаграммы) с 12 миллионами строк (много наблюдений).
Проблема в том, что когда я сохраняю график в формате PDF, используя:
ggsave("my_plots.pdf", myArrangedPlots)
Размер PDF очень большой = 90 МБ для всего 120 страниц PDF
Когда я сохраняю один график в формате PNG, используя:
ggsave("plot1.png" plot1)
Размер намного меньше по сравнению с сохранением одного и того же графика в формате PDF (1 МБ против 0,1 МБ)
Я думаю, причина в том, что внутренний механизм ggplot пытается сохранить графики в векторном формате внутри PDF-файла, чтобы получить максимальное разрешение, но мне не нужно такое большое разрешение. Также обратите внимание, что при наличии миллиона точек, представленных в векторном формате, размер будет больше, чем тот же график в формате PNG, потому что PNG не сохраняет слои.
Я хочу сохранить графики в формате PDF, но встроить графики в формате PNG вместо векторизованного формата, чтобы уменьшить размер файла PDF.
Есть ли какой-либо параметр в ggplot2 для достижения этой цели или есть какой-либо обходной путь?
Комментарии:
1. да, только что исправил, спасибо @RichardTelford
2. Используйте rmarkdown для создания PDF-документа со встроенными изображениями.
3. Ваш инстинкт верен, но SVG не имеет к этому никакого отношения. PDF также является векторизованным форматом для изображений — когда график сохраняется в формате PDF, все точки кодируются и сохраняются.
4. @GregorThomas спасибо за ваш комментарий. Я хотел бы добиться этого с помощью файла .R, чтобы я мог запускать его каждые x дней с помощью cronjobs, использование Rmarkdwon — последний вариант
5. Как вы думаете, почему Rmarkdown будет сложнее, чем . R для запуска с cronjobs?
Ответ №1:
Судя по документации pdf(), его параметры, похоже, совместимы с ggsave().
Я нашел параметр, который использует BATS, по умолчанию для него установлено значение FALSE, но если вы установите для него значение TRUE, размер PDF-файла резко уменьшится с 94 МБ до 10 МБ в моем случае.
Поэтому я использую его так:
ggsave("myplots.pdf", arrangedPlots, useDingbats = TRUE)
ПРИМЕЧАНИЕ: установка useDingbats в значение true что делает, так это использование шрифта Dinbats для маленьких кругов, что в случае точечных графиков и коробочных графиков с большим количеством точек выбросов значительно уменьшает размер конечного PDF.