我该如何在R中提高作图的分辨率?

10

我在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()
任何帮助优化这段代码以提高每个数据点的分辨率的建议,将不胜感激!

3
请仔细阅读?png - jbaums
1
这可能会有帮助:https://dev59.com/TWoy5IYBdhLWcg3wq_3O - Stephan Kolassa
您可能还想查看导出包,该包使导出高质量的图形变得容易,包括以矢量格式导出到PowerPoint :https://cran.r-project.org/web/packages/export/index.html和https://github.com/tomwenseleers/export - Tom Wenseleers
1个回答

12

这个问题有几个可能的答案,评论者们小心地尝试教给你在哪里找到答案而不是直接给出。我将揭示他们所指的内容,同时提出另一个问题:

  1. 答案:在调用png时使用res=300(或更高)。从help(png)可以看到,默认的ppi(每英寸像素数)为72,低于你想要的高分辨率图像。300对于大多数打印机和屏幕来说都足够好,但结果因人而异。

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等),则只需在emf(...)处使用svg(...)即可。相同的选项/规则适用。

    同样,如果您是LaTeX用户,您可以使用pdf(...)直接转换为pdf文件(语法相同)。

    注:使用这些基于矢量(而不是像PNG这样的位图)的图像格式之一的好处之一是,如果您想要/需要通过某种方式微调图形,而您又不知道如何在R中进行操作,则可以在像Inkscape这样的软件中打开EMF / SVG / PDF以轻松修改线条(颜色,粗细),文本(字体,大小,位置),框,箭头等内容。而且Inkscape还允许您导出为EMF,SVG,PDF,PNG等格式。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接