具有800K点的Base-R散点图在PDF中变得不可追踪-光栅化选项?

具有800K点的Base-R散点图在PDF中变得不可追踪-光栅化选项?,r,pdf,graphics,vector-graphics,rasterizing,R,Pdf,Graphics,Vector Graphics,Rasterizing,对于出版物,我需要提供矢量化图形。我想绘制数据并显示某个范围内的近似值。为了完全控制近似范围和计算,我在BaseR中进行了操作。为了导出,我使用R的内置pdf设备。简而言之,代码是 pdf(file = paste0(pdf_outFile, ".pdf"), onefile = TRUE, paper="a4r") plot(...) # light blue points(...) # grey points(...) #

对于出版物,我需要提供矢量化图形。我想绘制数据并显示某个范围内的近似值。为了完全控制近似范围和计算,我在BaseR中进行了操作。为了导出,我使用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个单点,这使Adobe PDF崩溃,尽管PDF本身只有13MB大小。打开它时,所有点都会一个接一个地写入,看起来就像一个动画。发布者不接受此pdf。我还尝试将图层一个接一个地导出到不同的pdf,但即使如此,它还是崩溃了AdobePDF


是否有一种方法可以对图像进行部分光栅化,从而使PDF阅读器具有更少的点数和更好的用户体验?对于ggplot2,似乎有一个名为“处理此问题”的新软件包,但我想将我的解决方案用于base R。是否有其他设备提供矢量图形,您可以在其中光栅化图层

我最终放弃了,决定以一种我可以用
ggplot2
ggrastr
来绘制数据的方式来重塑我的数据。这产生了期望的结果。

输出为jpeg,然后将图像添加到pdf?或者输出为SVG?实际答案可能是您应该制作不同的绘图(例如,如果您有强烈的过度绘图,hexbin绘图可能会很有用),但这可能会有帮助: