【发布时间】:2011-12-08 10:19:58
【问题描述】:
我不想问如何绘制大数据集,而是想包装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的大小相比 - 否则会遇到很多痛苦绘图。 :)
【问题讨论】: