首页 > 解决方案 > 具有 800K 点的 Base-R 散点图在 PDF 中变得难以处理 - 光栅化选项?

问题描述

对于出版物,我需要提供矢量图形。我想绘制数据并显示某个范围内的近似值。为了完全控制近似范围和计算,我在基础 R 中完成了它。对于导出,我使用 R 的内置pdf设备。简而言之,代码是

    pdf(file = paste0(pdf_outFile, ".pdf"), onefile = TRUE, paper="a4r") 

    plot(...)  # light blue              
    points(...)  # grey
    points(...)  # dark blue

    # mark smoothed opt (combined of two fitted curves)
    points()  # light blue
    points()  # grey
    points()  # dark blue

    # highlight optimum        
    abline(v=optX, ...)
    abline(h=optY, ...)
    points(optX, optY, ...),
    dev.off()

示例图片

我在这个数据中有大约 800K 的单点,这会使 Adob​​e PDF 崩溃,即使 PDF 本身只有 13 MB 的大小。打开的时候,所有的点都是一个接一个的写,看起来就像一个动画。出版商不接受此 pdf。我还尝试将图层一个接一个地导出到不同的 pdf ,但即便如此它还是使 Adob​​e PDF 崩溃。

有没有办法对图像进行部分光栅化,以减少点数并提高 PDF 阅读器的用户体验?对于 ggplot2 似乎有一个名为ggrastr的新包来处理这个问题,但我想将我的解决方案与 base R 一起使用。是否有其他设备提供矢量图形,您可以在其中栅格化图层?

标签: rpdfgraphicsvector-graphicsrasterizing

解决方案


我终于放弃了,决定以一种我可以用ggplot2和绘制它们的方式重塑我的数据ggrastr。这产生了预期的结果。


推荐阅读