2012-06-08 10 views
18

Estoy usando plot() para más de 1 mln de puntos de datos y resulta ser muy lento.Función de aumento de velocidad del gráfico() para el conjunto de datos grande

¿Hay alguna forma de mejorar la velocidad, incluida la programación y las soluciones de hardware (más RAM, tarjetas gráficas ...)?

¿Dónde se almacenan los datos para la gráfica?

+4

Resumir los datos y representar el resumen en su lugar. – Andrie

+0

necesito trazar y observar los datos de manera intuitiva – SilverSpoon

+0

¿Puede dar más información sobre qué funciones de trazado está utilizando? Hace una gran diferencia si está utilizando gráficos base, celosía o ggplot. – Andrie

Respuesta

23

Una parcela hexbin realidad muestra algo (a diferencia del diagrama de dispersión @Roland propone en los comentarios, que es probable que sea sólo un gigante, lenta, gota) y tarda unos 3,5 segundos en mi máquina por su ejemplo:

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

Este es un punto importante: nadie puede absorber el significado de millones, o incluso miles de puntos (excepto tal vez algunos de los gráficos fractales "artísticos" :-)), así que encuentre una manera de agrupar o reducir la magnitud de los elementos a trama. –

+1

No conocía este paquete y su respuesta es útil para un problema específico de presentación de resultados en un documento que estoy preparando. +1 por eso. Sin embargo, la pregunta sigue siendo: ¿qué es lo limitante mientras se traza? ¿Es solo potencia de CPU u otra cosa? – Roland

+2

Los controladores de dispositivo no manejan una tarea de trazado tan grande muy bien. Hay una gran cantidad de gastos generales para trazar un solo punto. No se trata solo de dos números, sino que requiere la consideración de las capacidades de coloración y transparencia. No es solo R. Los espectadores de PDF se atascarán considerablemente cuando se les proporcione una imagen con millones de puntos para renderizar. –

2

¿Has mirado en el paquete tabplot. que está diseñado específicamente para grandes volúmenes de datos http://cran.r-project.org/web/packages/tabplot/ uso que sus más rápido que usar hexbin (o incluso el girasol por defecto parcelas para overplotting)

También pienso Hadley escribió algo en el blog ggplot DS' s de la modificación de datos grandes en http://blog.revolutionanalytics.com/2011/10/ggplot2-for-big-data.html

"" "estoy trabajando actualmente con otro estudiante, Yue Hu, para convertir nuestra investigación en un paquete de R robusta". "" 21 Octubre, 2011

Tal vez podemos pedir Hadley si el ggplot3 actualizada está listo

8

una manera fácil y rápida es establecer pch='.'. El rendimiento se muestra debajo de

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 
Cuestiones relacionadas