我在R中做简单的图,希望得到的图像分辨率非常高。我试过只在输出图像代码中指定大的高度和宽度参数,但这只是做出了一个带有模糊数据点的大图像。
我现在的代码是这样的。
png(filename="simple_graphic.png", width=5600, height=1000)
depth_plot <- c(a large list of data)
plot(depth_plot, type="o", col="blue", log="y",)
dev.off()
任何优化这段代码以提高每个数据点的分辨率的帮助都非常感激!
这个问题有几种可能的答案,评论中小心翼翼的想教你。哪儿 找到答案,而不是仅仅给你答案。我将通过提供他们所暗示的东西来破坏这一点,但也提出另一个问题。
答案是...:使用 res=300
(或更高),在你的呼叫中,以png。从 help(png)
它指出默认的ppi(每英寸像素)是72,低于你想要的高分辨率图形。对于大多数打印机和屏幕来说,300是不错的,YMMV。
png(filename="simple_graphic.png", res=300) # perhaps width/height as well
# ...
dev.off()
另一个问题: 用什么格式才能最好地显示我的图形? 这一点常常被很多用R做图的人所忽略,虽然很遗憾,但很容易补救:使用基于矢量的图像格式。如果你使用的是Powerpoint或Word,那么你可能最好制作一个增强的元文件格式(EMF)文件。
install.packages('devEMF') # just once
library(devEMF)
emf(filename="simple_graphic.emf", width=1024, height=800)
# ...
dev.off()
如果你能够使用可扩展的矢量图形(SVG)格式的图像(如Inkscape、Scribus、......),那么只需使用 svg(...)
代替 emf(...)
. 同样的选项规则适用。
同样的,如果你是LaTeX,你可以直接使用 pdf(...)
(语法相同)。
NB: 使用这些基于矢量的图像格式(反之基于光栅的如PNG)的一个好处是,如果你想用你不知道如何在R中调整图形,你可以在Inkscape中打开EMFSVGPDF,以便轻松地修改线条(颜色、粗细)、文本(字体、大小、位置)、方框、箭头等。而Inkscape将允许你导出为EMF、SVG、PDF、PNG、 ...