Ускорение функции plot() для большого набора данных
Я использую plot()
для более 1 миллиона точек данных, и это оказывается очень медленным.
Есть ли способ улучшить скорость, включая программирование и аппаратные решения (больше RAM, графическая карта...)?
Где хранятся данные для графика?
Ответы
Ответ 1
График hexbin на самом деле показывает вам что-то (в отличие от диаграммы рассеивания @Roland в комментариях, которые могут быть просто гигантскими, медленными, blob) и занимает около 3,5 секунд на моей машине для вашего примера:
set.seed(101)
a<-rnorm(1E7,1,1)
b<-rnorm(1E7,1,1)
library(hexbin)
system.time(plot(hexbin(a,b)))
![enter image description here]()
Ответ 2
простым и быстрым способом является установка pch='.'
. Производительность показана ниже
x=rnorm(10^6)
> system.time(plot(x))
user system elapsed
2.87 15.32 18.74
> system.time(plot(x,pch=20))
user system elapsed
3.59 22.20 26.16
> system.time(plot(x,pch='.'))
user system elapsed
1.78 2.26 4.06
Ответ 3
Вы посмотрели пакет tabplot. он разработан специально для больших данных
http://cran.r-project.org/web/packages/tabplot/ Я использую его быстрее, чем использование hexbin (или даже по умолчанию графики подсолнечника для перезаписи)
Также я думаю, что Хэдли написал что-то в блоге DS, изменяя ggplot для больших данных на http://blog.revolutionanalytics.com/2011/10/ggplot2-for-big-data.html
"" В настоящее время я работаю с другим учеником Юэ Ху, чтобы превратить наше исследование в надежный пакет R. "" " 21 октября 2011 г.
Возможно, мы можем спросить Хэдли, если обновленный ggplot3 готов