减少EPS格式的图块大小

问题描述 投票:5回答:6

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

R中有没有选择以某种方式输出更小的EPS?我搜索过的文档无济于事。或者是我最好的选择,比如说,之后以300 dpi光栅化它?如果是这样的话,那么这个工作的工具的任何建议?

情节的R代码没什么特别的:

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

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

r postscript eps
6个回答
3
投票

我刚刚尝试了几件不起作用的东西 - 我把它们包括在这里是为了挽救别人浪费时间。作为参考,我在上面的代码中设置了n <- rnorm(1e5)

不起作用的事情:

  1. 设置colormodel <- "gray"
  2. 使用不同的pch值。 (其他一些值会增加文件大小,但我没有发现减少文件大小。)
  3. 设置useKerning = FALSE
  4. 更改宽度和高度设置。
  5. 使用pdf代替postscript。
  6. 使用Cairo包中的CarioPS。

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


3
投票

你有三个选择。

  1. 接受大文件大小
  2. 将文件保存为非矢量格式,如png
  3. 在随机的数据样本上创建QQplot。几百个点的随机样本应该给出类似的QQ图。 postscript(filename)Samp < - sample(n,size = 200)qqnorm(Samp,main = title))qqline(Samp)dev.off()

2
投票

在R-list link text的讨论中,我了解了pdftk。随着n= 1e5将pdf大小从6mb减少到600k。很简约!


2
投票

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


1
投票

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

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


1
投票

OP通过直接生成PNG文件解决了该问题。我不得不使用EPS,因为PNG和其他格式使图像混淆。我无论如何都要转换为EPS以包含在LaTeX文件中。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.