在R中是否有任何选项可以输出更小的EPS?我已经搜索了文档,但没有找到。或者我的最佳选择是事后将其栅格化为300 dpi吗?如果是这种情况,您有什么工具推荐吗?
绘制图形的R代码非常简单:
postscript(filename)
qqnorm(n, main=title))
qqline(n)
dev.off()
编辑: 糟糕!我的问题提到了输出EPS,然后将其转换为某种光栅格式。当然,我可以直接从R中生成PNG。
postscript(filename)
qqnorm(n, main=title))
qqline(n)
dev.off()
编辑: 糟糕!我的问题提到了输出EPS,然后将其转换为某种光栅格式。当然,我可以直接从R中生成PNG。
你有三个选项。
在数据的随机样本上创建QQ图。几百个点的随机样本应该给出类似的QQ图。
postscript(filename) Samp <- sample(n, size = 200) qqnorm(Samp, main=title)) qqline(Samp) dev.off()
n < - rnorm (1e5)
。设置colormodel < -“gray”
。
使用不同的pch值。(某些其他值会增加文件大小,但我发现没有一个值会减小它。)
设置useKerning = FALSE
。
更改宽度和高度设置。
使用pdf而不是postscript。
使用Cairo包中的CarioPS。
EPS只包含绘制图形的指令,因此其大小将取决于您有多少数据点。在使用压缩的PDF中,它可能会更小,但您最好使用光栅格式,这可以比EPS更小。
我怀疑R生成的EPS已经尽可能小了(我确定他们有自己的Postscript函数来处理用一个字符名称绘制数据等,因为这是相当常见的做法)。我怀疑没有太多优化的方法。我可能错了,但很有可能R是唯一具有足够高级信息以合理压缩输出的程序。
OP通过直接生成PNG文件解决了问题。我必须使用EPS,因为PNG和其他格式会使图像出现锯齿状。无论如何,我都必须将其转换为EPS才能包含在LaTeX文件中。
我使用GIMP导入从R图像函数生成的10 MB eps文件。然后旋转、平铺并保存为300KB eps文件。平铺将所有图层合并成一个单独的图层,并删除透明度的alpha通道。此变换后由LaTeX轻松处理。
在进行变换之前,图像在Ghost Script中渲染非常缓慢,而且在epsviewer中根本无法渲染。GIMP使用Ghost Script作为前端,因此导入速度很慢,但一旦导入,所有处理和渲染都非常快速。