41 votos

Para trazar con R, ¿debo aprender ggplot2 o ggvis?

Para trazar con R, ¿debo aprender ggplot2 o ggvis? No necesariamente quiero aprender ambos si uno de ellos es superior en algún aspecto. ¿Por qué la comunidad de R sigue creando nuevos paquetes con funcionalidades que se solapan? El entrada del blog de introducción no menciona ni una palabra por qué se crea ggvis dado que ya existe un sofisticado paquete de ploteo ggplot2.

5 votos

Ggvis es un asunto totalmente diferente. La verdadera alternativa está entre ggplot y celosía .

1 votos

Creo que la respuesta depende de lo que se busque. Si buscas parcelas estáticas avanzadas, querrás aprender ggplot2 . Para la visualización en la web, considere ggvis .

49voto

Quiero ampliar un poco la respuesta de Dianne Cook. Como ella dijo, ggplot2 es para crear gráficos estáticos, ggvis es para gráficos interactivos. Hay un montón de implicaciones para eso:

Tipo de archivo La salida de ggvis es HTML, incluyendo archivos CSS y javascript. ggvis no produce naturalmente archivos de imagen ordinarios. ggplot2 produce imágenes ordinarias, que pueden ser incrustadas en HTML o pdf o gif o enviadas por correo electrónico, o cualquier otra cosa. ggvis, si quiere enviar el archivo por correo electrónico, está comprimiendo un directorio de archivos HTML para ser visto en un navegador.

Animación Una consecuencia de esto es que si quieres crear una animación, puedes hacer los fotogramas en ggplot2 y fusionarlos, pero no hay una forma natural de hacer esto con ggvis. ggvis actuando interactivamente animará "en vivo", pero estos son diferentes tipos de animación. Si hay más cosas por fotograma de las que ggvis puede procesar, no se puede trabajar alrededor de eso (al menos de una manera natural) generando las imágenes y haciendo la película en el fondo. Del mismo modo, el usuario no puede descargar una película o un archivo gif de ggvis para reproducirlo.

Ahora mismo, en mi proyecto actual, he cambiado de ggplot2 a ggvis porque ggplot2 era demasiado lento para animar de forma interactiva. Pero, también me gustaría que el usuario, después de jugar con la configuración, sea capaz de hacer clic en "ir" y descargar una película de velocidad completa, la animación suave de lo que hicieron. No he descubierto cómo hacer esto usando ggvis, pero sería muy fácil usando ggplot2.

Velocidad ggvis es mucho, mucho, mucho más rápido que ggplot2, especialmente cuando se cambian los datos. Cada parcela de ggplot2 tiene un segundo o unos pocos de retraso. ggvis tiene un segundo más o menos cuando se crea la parcela por primera vez, después de que el cambio de los datos es perfecto - ggvis puede ser "reactivamente" vinculado a los datos por lo que se actualiza cada vez que los datos cambian. Con ggplot2, toda la parcela va a ser redibujada.

Estilo y apariencia Los gráficos de ggplot2 parecen un poco más bonitos, a primera vista, que los de ggvis. Los gráficos de ggplot2 son bastante elegantes. Los de ggvis son más sencillos, pero están creciendo en mí. También hay extensiones para ggplot2, como los paquetes xkcd y wesanderson, donde no hay ningún análogo para ggvis. Los trazados de ggplot2 parecen todos hechos por la misma persona (el autor de ggplot2) y eso cansa después de un tiempo.

Completitud Hay tipos de gráficos que se pueden crear en ggplot2 que ggvis no soporta, al menos hasta ahora. Por ejemplo, no hay ningún elemento de trazado "rug" en ggvis. He visto uno o dos choropleths que se hicieron con ggvis, pero no hay soporte natural incorporado todavía. ggplot2 tiene coordenadas polares (es decir, gráficos de pastel), ggvis no. También faltan en ggvis (y están disponibles en ggplot2 o en una extensión de ggplot2): boxplots; gráficos de contorno; heatmaps naturales; gráficos de correlación natural; dotplots; gráficos de violín; gráficos de red; dendrogramas. Por supuesto, estoy seguro de que algunas personas muy inteligentes pueden crear todo esto en ggvis, pero yo no soy tan inteligente.

Anotaciones ggplot2 tiene un marco de anotaciones muy bueno, quizás infrautilizado, pero ggvis no.

Subtramas y facetas ggplot2 tiene una función de "facetado" muy agradable, aunque quizás bastante limitada. También puede combinar varios gráficos ggplot2 utilizando el paquete grid. Los gráficos de ggvis no pueden combinarse en una sola imagen (porque no son imágenes, son páginas web "en vivo"), y no soporta ningún tipo de facetado o subtrazado. Se supone que esto está en proyecto.

Flexibilidad visual ggplot2 quiere que todos los trazados tengan el mismo aspecto, es decir, como el autor prefiera estilísticamente. No hay manera, por ejemplo, de tener un gráfico con múltiples ejes y en ggplot2. ggvis puede. ggvis es mucho más flexible que ggplot2. Es mucho más fácil hacer cosas como ocultar las leyendas, combinar múltiples leyendas en una, utilizar diferentes escalas para diferentes cosas en el mismo gráfico, etc.

Gran capacidad de personalización Si quieres crear, por ejemplo, una nueva escala inteligente, no es también difícil de hacer en ggplot2 (aunque es bastante confuso). Simplemente no parece haber una manera de hacer mucho de eso en ggvis. Tal vez es sólo que no es todavía.

Series temporales A ggplot2 no le gusta trazar series temporales. Es puede pero no lo hace quieren . En realidad, ninguno de ellos quiere hacerlo; ambos insisten en que se les suministren datos en un data.frame, y no pueden manejar objetos xts o zoo. Tampoco tienen características incorporadas para cortar una serie de tiempo. Pero ggvis no se defiende de las series temporales con tanta fuerza como ggplot2. Esto se debe en parte a que es muy rápido actualizar los datos en un gráfico ggvis, supongo. Si usted quiere trazar una serie de tiempo que va a tener que golpear a la sumisión, pero ggvis es mucho menos pasivo-agresivo al respecto.

¿Son la misma sintaxis? Más o menos... Hay mucho en común entre ellos, y aprender a piense en en el estilo de uno ayudará a adaptarse al estilo del otro. En particular, ambos están diseñados para que todas las llamadas de trazado se canalicen entre sí en una sola línea de código. La principal ventaja de esto es que hace que la depuración y el perfilado sean realmente difíciles, y básicamente hace que las características de depuración/perfilado en cosas como Rstudio sean inútiles. Aparte de eso, son sintácticamente muy diferentes. Algunas cosas que son difíciles en ggplot2 son fáciles en ggvis. Algunas cosas que son fáciles en ggplot2 son imposibles en ggvis. Y viceversa. (Tengo un poco de preferencia por la forma en que ggvis hace las cosas, que me parece más fácil de entender).

Bugs ggvis todavía tiene bastantes. A veces se comporta de forma extraña. A veces, sin embargo, las parcelas desaparecen aleatoriamente por razones que toman horas para resolver y tienen muy poco sentido. Los desarrolladores admiten esto libremente, ggvis no está listo para la producción todavía. Si se trata de cualquier complejidad, usted se descubrir que no están bromeando.

El resultado final: El aprendizaje del trazado intermedio en cada uno de ellos lleva unas 16 horas. Así que, siendo realistas, es probable que aprendas ambas cosas.

1 votos

Gran comparación

0 votos

¿Qué es más rápido ggvis o lattice o rgl? (para grandes conjuntos de datos)

0 votos

+1 fantástico escrito. Estoy de acuerdo con todo lo que se dice aquí basado en mis experiencias con ambos hasta ahora.

41voto

SPRBRN Puntos 1008

Empieza con ggplot2. Crea gráficos estáticos.

Además de los gráficos estáticos, ggvis también puede utilizarse para crear gráficos interactivos. Una vez que haya aprendido la sintaxis de ggplot2, entonces la sintaxis para agregar interactividad para crear gráficos ggivs seguirá naturalmente.

4 votos

Esto es inexacto (tal vez lo era en el momento de escribirlo). ggvis puede utilizarse definitivamente para crear gráficos estáticos. El hecho de que también permita la creación de gráficos interactivos es una característica, no una limitación. Un ejemplo sencillo de un gráfico estático: library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))

11voto

Marc-Andre R. Puntos 789

Creo que el mensaje que aparece después de library(ggvis) se explica por sí mismo:

La API de ggvis está evolucionando rápidamente. Recomendamos encarecidamente que no confíes en ella para la producción, pero siéntete libre de explorarla. Si encuentra un error claro, por favor, presente un ejemplo mínimo reproducible reproducible en https://github.com/rstudio/ggvis/issues . Para preguntas y otras discusiones, por favor use https://groups.google.com/group/ggvis .

En comparación con ggplot2, a ggvis todavía le faltan algunas características y pulido (no hay manera de añadir un título a un gráfico, por ejemplo, los títulos de los ejes se superponen con las etiquetas de las marcas, y hay más, el facetado no es compatible, etc.) Por otro lado, la sintaxis de ggvis se siente un poco más limpia, y la interactividad es realmente impresionante.

Según mi propia experiencia, ggvis es una herramienta imprescindible si se está construyendo una aplicación brillante. Entonces los beneficios de tener un motor de trazado de gráficos amigable con la web y R superan con creces cualquier deficiencia que tenga actualmente.

Si quieres hacer gráficos estáticos para la exploración de datos, entonces ggplot2 es una biblioteca madura con un montón de características interesantes y con una comunidad saludable de usuarios y un montón de recursos para aprender.

La filosofía de ambos paquetes es similar, por lo que los conocimientos pueden transferirse fácilmente de un paquete a otro.

8voto

Zizzencs Puntos 1358

La comunidad de R no deja de crear nuevos paquetes (que a menudo se solapan) por diversas razones:

1) Alguien quiere cambiar algo o añadir algo que no está disponible en un paquete existente, pero que en gran parte se solapa (de ahí que haya muchos paquetes que hacen regresión)

2) Alguien escribe un paquete como tarea

3) Escribir paquetes es divertido (si te gusta ese tipo de cosas)

4) No saben que el paquete original existe

12 votos

En cuanto al ejemplo concreto y tu punto 4: ggvis es de la misma autoría que ggplot2. El punto importante aquí es que el uso de ggplot2 está tan extendido que se ha vuelto imposible implementar cambios sin romper un montón de código existente/paquetes dependientes.

1 votos

¿Este tipo de reinvención del paquete preexistente está destinado a suceder como las recesiones económicas en las sociedades del capitalismo?

2 votos

@Peter: Como ajeno a R esto me parece un comentario justo pero (lo más insólito) ¡no respondes a la pregunta!

-4voto

user3448167 Puntos 21

Deberías empezar con el sistema de trazado base en caso de que no lo hayas hecho ya. Entonces será más fácil asimilar los conceptos de ggplot2. Esto se debe a que tanto base como ggplot2 funcionan de manera similar en el sentido de que ambos son como la paleta de un artista.

Más adelante, puede probar el sistema de trazado de celosía.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X