2009-07-22 52 views
5

我有一个包含数百个项目的直方图,为此我绘制了Q-Q图。这导致2.5兆字节大的EPS。对于仅包含在出版物中并且不会以100倍放大率查看的数字来说,这太过分了。以EPS格式缩小地块的尺寸

在R中有什么选择以某种方式输出更小的EPS?我搜查了文档无济于事。或者说,我的最佳选择是,例如,以300 dpi的分辨率对它进行光栅化处理?如果是这种情况,那么对于这项工作的任何工具建议?

的情节的R代码里面是没有任何幻想:

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

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

回答

3

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

东西不起作用:

  1. 设置colormodel <- "gray"

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

  3. 设置useKerning = FALSE

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

  5. 使用pdf代替postscript。

  6. 使用Cairo软件包中的CarioPS。

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

1

那么,EPS只是包含绘制绘图的说明,所以它的大小将在很大程度上取决于您拥有多少个数据点。在使用压缩的PDF中,它可能更小,但是最好的办法可能是使用光栅格式,该格式可能会比这更小。

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

+0

PDF结果为1 MB大小的文件,仍然太大。我想我可以应用数据集抽样来减少点数,但是很难不丢失一些有趣的离群值点。 – 2009-07-22 08:13:51

3

您有三种选择。

  1. 接受大文件大小
  2. 保存在非矢量格式文件的一些PNG
  3. 对数据的随机样本创建QQplot。几百个点的随机样本应该给出类似的QQplot。

    后记(文件名) 桑普< - 样品(N,大小= 200) qqnorm(SAMP,主标题=)) qqline(SAMP) dev.off()

2

在本次讨论中的R列表link text我了解了pdftk。用n= 1e5将pdf尺寸从6mb减少到600k。很简约!

2

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

+0

你能提供一行bash代码来做到这一点吗? – toxicate20 2012-11-23 15:32:24

1

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

我用GIMP导入了从R图像函数生成的10 MB eps文件。然后旋转,展平,并保存为300KB的eps文件。展平将所有图层合并到一个图层中,并移除透明度的Alpha通道。经过这个转换后,LaTeX很容易处理。

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