与其问如何绘制大数据集,我想进行包装plot
,以便生成大量绘图的代码在绘制大对象时不会受到打击。如何plot
以非常简单的方式进行包装,以便保留其所有功能,但首先测试以确定传递的对象是否太大?
此代码适用于对 的非常普通的调用,但它缺少与(见下文)plot
相同的通用性。plot
myPlot <- function(x, ...){
isBad <- any( (length(x) > 10^6) || (object.size(x) > 8*10^6) || (nrow(x) > 10^6) )
if(is.na(isBad)){isBad = FALSE}
if(isBad){
stop("No plots for you!")
}
return(plot(x, ...))
}
x = rnorm(1000)
x = rnorm(10^6 + 1)
myPlot(x)
失败的示例:
x = rnorm(1000)
y = rnorm(1000)
plot(y ~ x)
myPlot(y ~ x)
是否有一些简单的包装方法plot
可以检查要绘制的数据,同时仍然传递所有参数?如果没有,那怎么ggplot2
办?我是一个机会均等的非策划者。(在数据集很大的情况下,我会使用hexbin、子采样、密度图等,但这不是这里的重点。)
注意 1:在测试想法时,我建议测试大小 > 100(或设置变量,例如myThreshold <- 1000
),而不是与 > 1M 的大小相比 - 否则在缓慢绘图时会有很多痛苦。:)