Очень большая разница в размере вывода html из R markdown в Windows и Linux

#r #linux #ggplot2 #centos #r-markdown

#r #linux #ggplot2 #centos #r-markdown

Вопрос:

Мы создаем еженедельный отчет R markdown, который содержит большое количество небольших графиков. Графики gg сохраняются в формате png, а затем интегрируются в скрипт markdown и кодируются в html. Недавно мы перенесли скрипты, создающие этот отчет, на компьютер Linux с открытым исходным кодом CentOS 7 и RStudio Server. Файлы, создаваемые на компьютере с Linux, в 3-4 раза больше (от 20 МБ до 80 МБ).

При расследовании кажется, что причина в том, что изображения PNG сохраняются как индексированные цвета в Windows, но RGB в Linux. Я не могу найти способ изменить способ сохранения ggplots в Linux. Есть какие-нибудь советы?

Простой пример:

 library(ggplot2)

ggplot(mtcars, aes(mpg, hp))   geom_point()   
  geom_smooth(method = lm, se = FALSE)

ggsave("test_image.png")
 

Создает образ размером 88 КБ в Linux и образ размером 37 КБ в Windows.

Запуск R 4.0.3 и ggplot 3.3.2 на обеих машинах.

Обновление: Еще несколько исследований изображений, созданных linux против Windows:

 > image_read(url_windows)
# A tibble: 1 x 7
  format width height colorspace matte filesize density
  <chr>  <int>  <int> <chr>      <lgl>    <int> <chr>  
1 PNG      600   2545 sRGB       FALSE   100070 20x20  
> image_read(url_linux)
# A tibble: 1 x 7
  format width height colorspace matte filesize density
  <chr>  <int>  <int> <chr>      <lgl>    <int> <chr>  
1 PNG     1800   7635 sRGB       FALSE  1046302 59x59  
 

Изображения в Windows имеют 1/3 размера и плотности.

Похоже, есть простой способ решить эту проблему. Спасибо за отзыв!

Комментарии:

1. В качестве обходного пути вы можете автоматически запустить подобный инструмент pngcrush на них впоследствии.

2. Какие версии R вы используете на обеих машинах? И какие версии ggplot?

3. @MrFlick R 4.0.3 и ggplot 3.3.2 на обоих. Просмотр файлов, сгенерированных немного ближе с помощью Image Magick. Будет обновлено позже.