5

我有一个包含数百个项目的直方图,为此我做了一个 QQ 图。这导致 EPS 为 2.5 兆字节。这对于只包含在出版物中并且不会以 100 倍放大率查看的图形来说太过分了。

R中是否有任何选项可以以某种方式输出较小的EPS?我搜索了文档无济于事。或者是我最好的选择,比如说,之后以 300 dpi 光栅化它?如果是这种情况,对这项工作的工具有什么建议吗?

该图的 R 代码并不花哨:

postscript(filename)
qqnorm(n, main=title))
qqline(n)
dev.off()

编辑:哇!我的问题提到了输出 EPS,然后将其转换为某种光栅格式。当然,我可以首先从 R 生成 PNG。

4

6 回答 6

3

你有三个选择。

  1. 接受大文件大小
  2. 将文件保存为非矢量格式,例如 png
  3. 在数据的随机样本上创建 QQplot。几百个点的随机样本应该给出类似的 QQplot。

    postscript(filename) Samp <- sample(n, size = 200) qqnorm(Samp, main=title)) qqline(Samp) dev.off()

于 2009-07-22T09:14:57.953 回答
3

我刚刚尝试了几件不起作用的事情——我将它们包括在这里是为了避免其他人浪费他们的时间。作为参考,我n <- rnorm(1e5)在上面的代码中设置了。

不起作用的事情:

  1. 设置colormodel <- "gray"

  2. 使用不同的 pch 值。(其他一些值会增加文件大小,但我发现没有一个值会减小它。)

  3. 设置useKerning = FALSE

  4. 更改宽度和高度设置。

  5. 使用 pdf 而不是 postscript。

  6. 使用 Cairo 包中的 CarioPS。

鉴于此,我认为您不太可能使用矢量格式来减小文件大小。这意味着您将不得不使用光栅格式(很可能是 PNG)。

于 2009-07-22T09:30:23.103 回答
2

在 R-list链接文本的讨论中,我了解了pdftk。将 pdf 大小从6mbn= 1e5减少到 600k。漂亮整齐!

于 2009-09-09T14:17:09.487 回答
2

在 GS 视图中,将我们的文件转换为 pdf,然后再转换为 PS 或 EPS,最终文件的大小减小了 5-7 倍。

于 2011-04-28T06:40:16.083 回答
1

好吧,EPS 只包含绘制绘图的说明,因此它的大小很大程度上取决于您拥有多少数据点。在使用压缩的 PDF 中,它可能更小,但您最好的选择可能是使用光栅格式,它可以变得更小。

我怀疑EPS R生成的已经尽可能小了(我确信他们在Postscript中有一个自己的函数来处理用单字符名称等绘制数据,因为这是相当普遍的做法)。我怀疑有很多方法可以优化它。不过,我可能弄错了,但很可能 R 是唯一具有足够高级信息来合理压缩输出的程序。

于 2009-07-22T07:40:48.707 回答
1

OP通过直接生成PNG文件解决了这个问题。我不得不使用 EPS,因为 PNG 和其他格式使图像具有别名。无论如何,我都必须转换为 EPS 才能包含到 LaTeX 文件中。

我使用 GIMP 导入从 R 图像函数生成的 10 MB eps 文件。然后旋转、展平并保存为 300KB 的 eps 文件。拼合将所有图层合并为一个图层并删除 Alpha 通道以实现透明度。经过这种转换后,LaTeX 可以轻松处理。

在转换之前,Ghost Script 中的图像渲染速度非常慢,并且根本无法在 epsviewer 中渲染。GIMP 使用 Ghost Script 作为前端,因此导入速度很慢,但是一旦导入,所有处理和渲染都非常快。

于 2011-10-27T18:27:31.827 回答