首页 > 解决方案 > Windows 和 Linux 上 R markdown 的 html 输出大小差异很大

问题描述

我们生成一个 R markdown 周报,其中包含大量小图。ggplots 保存为 png,然后集成到 markdown 脚本中并在 html 中编码。我们最近将生成此报告的脚本移至具有 CentOS 7 和 RStudio Server Open Source 的 linux 机器上。在 linux 机器上生成的文件是 3-4 倍大(20MB 到 80MB)。

经调查,原因似乎是 PNG 图像在 Windows 上保存为索引颜色,但在 linux 上保存为 RGB。我想不出一种方法来改变 ggplots 在 linux 上的保存方式。有小费吗?

一个简单的例子:

library(ggplot2)

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

ggsave("test_image.png")

在 linux 上生成 88 kb 图像,在 Windows 上生成 37 kb 图像。

在两台机器上运行 R 4.0.3 和 ggplot 3.3.2。

更新:对 linux vs 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  

窗户上的图像是大小和密度的 1/3。

所以似乎有一种简单的方法可以解决这个问题。感谢您的反馈!

标签: rlinuxggplot2centosr-markdown

解决方案


推荐阅读