Вместо того, чтобы спрашивать, как построить большие наборы данных, я хочу обернуть 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
?Я не заговорщик равных возможностей.(В тех случаях, когда набор данных большой, я буду использовать гексбин, подвыборку, графики плотности и т. Д., Но здесь это не главное.)
Примечание 1. При тестировании идей яРекомендуется проверять размер> 100 (или установить переменную, например, myThreshold <- 1000
), а не размер> 1M - в противном случае при медленном построении будет много боли.:)