减小EPS格式图形的大小

5
我有一个包含几百个条目的直方图,我做了一个Q-Q图。这导致EPS文件大小达到2.5兆字节。对于一个只会被包含在出版物中且不需要100倍放大查看的图形来说,这太大了。
在R中是否有任何选项可以输出更小的EPS?我已经搜索了文档,但没有找到。或者我的最佳选择是事后将其栅格化为300 dpi吗?如果是这种情况,您有什么工具推荐吗?
绘制图形的R代码非常简单:
postscript(filename)
qqnorm(n, main=title))
qqline(n)
dev.off()

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

6个回答

3

你有三个选项。

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

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


3
我刚试过几种方法都不起作用,我在这里分享一下以节省其他人的时间。为了参考,我在你之前的代码中设置了n < - rnorm (1e5)
以下是无效的尝试:
  1. 设置colormodel < -“gray”

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

  3. 设置useKerning = FALSE

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

  5. 使用pdf而不是postscript。

  6. 使用Cairo包中的CarioPS。

因此,我认为您不太可能能够使用矢量格式来减小文件大小。这意味着您将不得不使用栅格图像格式(最有可能是PNG)。

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

2
在R-list的这个讨论中,我了解到pdftk。通过使用n= 1e5,将pdf大小从6mb减小到600k。非常不错!请参考链接pdftk

两个链接都失效了。 - Bruce_Warrior

1

EPS只包含绘制图形的指令,因此其大小将取决于您有多少数据点。在使用压缩的PDF中,它可能会更小,但您最好使用光栅格式,这可以比EPS更小。

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


PDF结果为1MB大小文件,仍然太大。我想我可以应用数据集抽样来减少点的数量,但这样很难不失去一些有趣的异常点。 - Laurynas Biveinis

1

OP通过直接生成PNG文件解决了问题。我必须使用EPS,因为PNG和其他格式会使图像出现锯齿状。无论如何,我都必须将其转换为EPS才能包含在LaTeX文件中。

我使用GIMP导入从R图像函数生成的10 MB eps文件。然后旋转、平铺并保存为300KB eps文件。平铺将所有图层合并成一个单独的图层,并删除透明度的alpha通道。此变换后由LaTeX轻松处理。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接