Para graficar con R, ¿debería aprender ggplot2 o ggvis? No necesariamente quiero aprender ambos si uno de ellos es superior en algún aspecto. ¿Por qué la comunidad R sigue creando nuevos paquetes con funcionalidades superpuestas? La entrada de blog de introducción no menciona una palabra por qué se crea ggvis dado que ya existe un paquete de trazado sofisticado ggplot2.

Comentarios

  • ggvis es una olla de pescado completamente diferente . La alternativa real es entre ggplot y lattice .
  • Creo que la respuesta depende de lo que ‘ ver después. Si ‘ está buscando gráficos avanzados estáticos, ‘ querrá aprender ggplot2. Para la visualización web, considere ggvis.

Respuesta

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

Aparte de los gráficos estáticos, ggvis también se puede utilizar para crear gráficos interactivos. Si ha aprendido la sintaxis de ggplot2, la sintaxis para agregar interactividad para crear gráficos de ggivs seguirá naturalmente.

Comentarios

  • Esto es inexacto (tal vez era precisa en el momento de escribir este artículo). Definitivamente, ggvis se puede usar para crear gráficos estáticos. El hecho de que también permita gráficos interactivos es una característica, no una limitación. Un ejemplo simple de una gráfica estática: library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))

Respuesta

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, incluidos los archivos CSS y JavaScript. Ggvis no genera naturalmente archivos de imágenes normales. Ggplot2 genera imágenes normales, que luego pueden estar incrustado en HTML o pdf o gif o enviado por correo electrónico, o cualquier otra cosa. ggvis, si desea enviar el archivo por correo electrónico, está comprimiendo un directorio de archivos HTML para verlos en un navegador.

Animación Una consecuencia de esto es que si desea crear una animación, puede hacer fotogramas en ggplot2 y fusionarlos, pero no hay una forma natural de hacer esto con ggvis. ggvis actuando de forma interactiva animará «en vivo», pero estos son diferentes tipos de animación. Si hay más por fotograma de lo que ggvis puede procesar , no puede evitar eso (al menos de forma natural) generando las imágenes y haciendo la película en segundo plano. De manera similar, el usuario no puede descargar una película o un archivo gif de ggvis para reproducir.

En este momento, en mi proyecto actual, cambié 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, pudiera hacer clic en «ir» y descargar una película de animación fluida a velocidad completa de lo que hizo. No he descubierto cómo hacer esto usando ggvis, pero sería pan comido usar ggplot2.

Speed ggvis es mucho, mucho, mucho más rápido que ggplot2, especialmente al cambiar datos. Cada gráfico de ggplot2 tiene un segundo o algunos de retraso. ggvis tiene aproximadamente un segundo cuando crea el gráfico por primera vez, después de eso, el cambio de datos es perfecto: ggvis se puede vincular «reactivamente» a los datos para que se actualice siempre que los datos cambien. Con ggplot2, se volverá a dibujar toda la trama.

Estilo & Apariencia Los gráficos de ggplot2 parecen un poco mejor, a primera vista, que los gráficos de ggvis. Los gráficos de ggplot2 son bastante elegantes. Las parcelas de ggvis son más simples, 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. Todos los gráficos de ggplot2 parecen haber sido hechos por la misma persona (el autor de ggplot2) y eso se cansa después de un tiempo.

Completitud Hay tipos de gráficos que puede crear en ggplot2 que ggvis no admite, al menos hasta ahora. Por ejemplo, no hay un elemento de trama «alfombra» en ggvis. He visto una o dos coropletas que se hicieron con ggvis, pero todavía no hay soporte integrado natural. Ggplot2 tiene coordenadas polares (es decir, gráficos circulares) , ggvis no. También faltan en ggvis (y están disponibles en ggplot2 o en una extensión ggplot2): diagramas de caja; diagramas de contorno; mapas de calor naturales; gráficos de correlación natural; diagramas de puntos; diagramas de violín; diagramas de red; dendrogramas. Por supuesto que estoy seguro algunas personas muy inteligentes pueden crear todo esto en ggvis, pero yo no soy tan inteligente.

Anotaciones ggplot2 tiene un marco de anotación muy agradable, quizás infrautilizado, mientras que ggvis no.

Subtramas & Facetas ggplot2 tiene una muy buena , pero quizás una característica bastante limitada de «facetas». También puede combinar varias parcelas ggplot2 usando el paquete grid. A partir de ahora, no puede hacer ninguna de las dos cosas con ggvis. Los gráficos de ggvis no se pueden combinar en una sola imagen (porque no son imágenes, son páginas web «en vivo») y no admite ningún tipo de facetado o subtramado. Se supone que esto está en proceso.

Flexibilidad visual ggplot2 quiere que cada trama se vea igual, lo que significa que el autor prefiere estilísticamente. de ninguna manera, por ejemplo, para tener una gráfica con múltiples ejes y en ggplot2. ggvis can. ggvis es mucho más flexible que ggplot2. Es mucho más fácil hacer cosas como ocultar leyendas, combinar múltiples leyendas en una, usar diferentes escalas para diferentes cosas en la misma parcela, etc.

Personalización profunda Si desea crear, digamos, una nueva escala inteligente, no es demasiado difícil hacer eso en ggplot2 (aunque es bastante confuso). Simplemente no parece haber una manera de hacer mucho de eso en ggvis. Tal vez no sea todavía.

Serie temporal ggplot2 no le gusta trazar series temporales. puede , pero no quiere . En realidad, ninguno de los dos quiere; ambos insisten en recibir datos en un data.frame, y no pueden manejar xts u objetos de zoológico. Tampoco tienen funciones integradas para dividir una serie temporal. Pero ggvis no se defiende de la serie temporal con tanta fuerza como ggplot2. Eso se debe en parte a que es muy rápido actualizar los datos en un gráfico de ggvis, supongo. Si quieres trazar una serie temporal, tendrás que vencer a cualquiera de ellos para que se someta, pero ggvis es mucho menos pasivo-agresivo al respecto .

¿Tienen la misma sintaxis? Más o menos … Hay mucho en común entre ellos , y aprender a pensar 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 conecten entre sí en una sola línea de La principal ventaja de esto es que hace que la depuración y la creación de perfiles sean realmente difíciles, y básicamente hace que las funciones de depuración / creación de perfiles en cosas como Rstudio sean inútiles. Aparte de eso, son sintácticamente bastante diferentes. Algunas cosas que son difíciles en ggplot2 son fáciles en ggvis. Algo que es fácil en ggplot2 es imposible en ggvis. Y viceversa. (Tengo un poco de preferencia por la forma en que ggvis hace las cosas, que me resulta más fácil de entender).

Errores ggvis todavía tiene bastantes. A veces se comporta de manera extraña. A veces, sin embargo, las tramas desaparecen aleatoriamente por razones que tardan horas en solucionarse y tienen muy poco sentido. Los desarrolladores admiten esto libremente, ggvis aún no está listo para producción. Si te enfrentas a cualquier complejidad, descubrirás que no están bromeando.

Conclusión: Aprender el trazado intermedio en cada uno lleva aproximadamente 16 horas. Por lo tanto, de manera realista, probablemente aprenderá ambos.

Comentarios

  • Gran comparación
  • ¿Qué es ggvis o lattice o rgl más rápido? (para grandes conjuntos de datos)
  • +1 artículo fantástico. Estoy de acuerdo con todo aquí basado en mis experiencias con ambos hasta ahora.
  • Hola, ¿Qué pasa con ggvis vs rcharts?
  • SERIE DE TIEMPO: ggplot2 definitivamente gana con la expansión ggfortify. Vea esta excelente documentación al respecto: rpubs.com/sinhrks/basics .

Respuesta

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

La API de ggvis actualmente está evolucionando rápidamente. Recomendamos encarecidamente que no confíe en esto para la producción, pero siéntase libre de explorar. Si encuentra un error claro, presente un ejemplo mínimo reproducible en https://github.com/rstudio/ggvis/issues . Para preguntas y otros debates, utilice https://groups.google.com/group/ggvis .

Comparado con ggplot2, ggvis todavía carece de algunas características y pulido (no hay forma de agregar un título a un gráfico, por ejemplo, títulos de ejes superpuestos con etiquetas de marca, y hay más, no se admite la creación de facetas, etc.) Por otro lado, la sintaxis de ggvis se siente un poco más limpia y la interactividad es realmente asombrosa.

Desde mi propia experiencia, ggvis es imprescindible si está creando una aplicación brillante. Entonces, los beneficios de tener un motor de trazado de gráficos compatible con Web y R superan en gran medida las deficiencias que tiene actualmente.

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

La filosofía detrás de ambos paquetes es similar, por lo que las habilidades se pueden transferir con bastante facilidad de un paquete a otro.

Respuesta

La comunidad R sigue creando paquetes nuevos (y a menudo superpuestos) por una variedad de razones:

1) Alguien quiere cambiar algo o agregar algo que no está disponible en un paquete existente, pero mucho se superpone (por lo tanto, 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 existe el paquete original

Comentarios

  • Con respecto al ejemplo específico y su punto 4: ggvis está escrito por las mismas personas que ggplot2. El punto importante aquí es que el uso de ggplot2 está tan extendido que se ha vuelto imposible implementar cambios sin romper muchos paquetes de código / dependientes existentes.
  • ¿Este tipo de reinvención de paquetes preexistentes está destinado a ¿Suceden como las recesiones económicas en las sociedades capitalistas?
  • @Peter: Como un extraño a R, esto me parece un comentario justo, pero (lo más inusual) no ‘ ¡Responda la pregunta!
  • @NickCox Respondí una de las preguntas que están en la pregunta. :-).
  • @Peter Muy justo punto. Por lo tanto, creo que una referencia cruzada a stats.stackexchange.com/questions/58966/… es pertinente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *