我有一个包含数百个项目的直方图,我为此制作了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。
答案 0 :(得分:3)
您有三种选择。
在随机的数据样本上创建QQplot。几百个点的随机样本应该给出类似的QQ图。
后记(文件名) Samp< - 样本(n,大小= 200) qqnorm(Samp,main = title)) qqline(桑普) dev.off()
答案 1 :(得分:3)
我刚尝试了几件不起作用的东西 - 我把它们包括在这里是为了让别人浪费时间。作为参考,我在上面的代码中设置了n <- rnorm(1e5)
。
不起作用的事情:
设置colormodel <- "gray"
。
使用不同的pch值。 (其他一些值增加文件大小,但我发现没有减少它。)
设置useKerning = FALSE
。
更改宽度和高度设置。
使用pdf代替postscript。
使用Cairo包中的CarioPS。
鉴于此,我认为您不太可能使用矢量格式减小文件大小。这意味着您必须使用栅格格式(很可能是PNG)。
答案 2 :(得分:2)
答案 3 :(得分:2)
在GS视图中,将我们的文件转换为pdf,然后再转换为PS或EPS,最终文件的大小减少5-7倍。
答案 4 :(得分:1)
好吧,EPS只包含绘制绘图的说明,因此其大小在很大程度上取决于您拥有的数据点数。在使用压缩的PDF中,它可能更小,但最好的选择可能是使用光栅格式,这种格式可能会小于此。
我怀疑EPS R生成的内容已经尽可能小(我确信它们在Postscript中有自己的功能来处理用一个char名称绘制数据等等,因为这是相当常见的做法)。我怀疑有很多方法可以优化它。不过我可能会弄错,但R很可能是唯一一个有足够高级信息来合理压缩输出的程序。
答案 5 :(得分:1)
OP通过直接生成PNG文件解决了这个问题。我不得不使用EPS,因为PNG和其他格式使图像混淆。我无论如何都要转换为EPS以包含在LaTeX文件中。
我使用GIMP导入从R图像功能生成的10 MB eps文件。然后旋转,展平,并保存为300KB eps文件。展平将所有图层合并为一个图层,并删除Alpha通道以获得透明度。这次转型后,LaTeX可以轻松处理。
在转换之前,图像在Ghost脚本中渲染得非常慢,并且在epsviewer中根本无法渲染。 GIMP使用Ghost Script作为前端,因此导入速度很慢,但是一旦导入,所有处理和渲染都非常快。