Je voudrais développer un peu la réponse de Dianne Cook. Comme elle l'a dit, ggplot2 sert à créer des graphiques statiques, ggvis est destiné à des graphiques interactifs. Il y a un tas d'implications à cela:
Type de fichier La sortie de ggvis est HTML, y compris les fichiers CSS et javascript. ggvis ne produit pas naturellement de fichiers image ordinaires. ggplot2 génère des images ordinaires, qui peuvent ensuite être incorporées au format HTML, pdf, gif ou envoyé par courrier électronique, ou à tout autre chose. ggvis, si vous souhaitez envoyer le fichier par courrier électronique, vous zippez un répertoire de fichiers HTML à afficher dans un navigateur.
Animation Une conséquence de cela est que si vous voulez créer une animation, vous pouvez créer les images dans ggplot2 et les fusionner, mais il n'y a pas de moyen naturel de le faire avec ggvis. ggvis agissant de manière interactive animera "live", mais ce sont différents types d'animation. Si le nombre d'images par image dépasse les capacités de ggvis, vous ne pouvez pas contourner ce problème (du moins de manière naturelle) en générant les images et en créant le film en arrière-plan. De même, l'utilisateur ne peut pas télécharger un film ou un fichier gif à partir de ggvis à rejouer.
Actuellement, dans mon projet actuel, je suis passé de ggplot2 à ggvis car ggplot2 était beaucoup trop lent pour une animation interactive. Mais j'aimerais aussi que l'utilisateur, après avoir modifié les paramètres, puisse cliquer sur "Go" et télécharger un film à la vitesse parfaite, avec une animation fluide de ce qu'il a fait. Je n'ai pas trouvé comment faire cela en utilisant ggvis, mais ce serait un gâteau en utilisant ggplot2.
Speed ggvis est beaucoup, beaucoup, beaucoup plus rapide que ggplot2, en particulier lors de la modification de données. Chaque tracé de ggplot2 a une seconde ou quelques retards. ggvis a environ deux secondes lorsque vous créez le tracé, après quoi la modification des données est transparente - ggvis peut être lié de manière "réactive" aux données afin de se mettre à jour chaque fois que les données changent. Avec ggplot2, toute l’intrigue va être redessinée.
Style et apparence Les parcelles ggplot2 semblent un peu plus agréables, à première vue, que les parcelles ggvis. Les parcelles ggplot2 sont assez élégantes. Les graphiques de ggvis sont plus simples, mais ils grandissent sur moi. Il existe également des extensions pour ggplot2, telles que les packages xkcd et wesanderson, où il n'y a pas d'analogue pour ggvis. Les graphes de ggplot2 ont tous l'air d'avoir été créés par la même personne (l'auteur de ggplot2) et cela fatigue au bout d'un moment.
Intégralité Il existe certains types de tracé que vous pouvez créer dans ggplot2 et que ggvis ne prend pas en charge, du moins jusqu'à présent. Par exemple, il n'y a pas d'élément de terrain "rug" dans ggvis. J'ai vu un ou deux choroplèthes fabriqués avec ggvis, mais il n'y a pas encore de support naturel intégré. ggplot2 a des coordonnées polaires (c'est-à-dire des camemberts), mais pas ggvis. Egalement manquant dans ggvis (et disponible dans ggplot2 ou dans une extension ggplot2): boxplots; courbes de niveau; cartes thermiques naturelles; tableaux de corrélation naturels; points graphiques; parcelles de violon; parcelles de réseau; dendrogrammes. Bien sûr, je suis sûr que des gens très intelligents peuvent créer tout cela dans ggvis, mais je ne suis pas aussi intelligent.
Annotations ggplot2 a un très beau framework d'annotation, peut-être sous-utilisé. ggvis ne le fait pas.
Sous-parcelles et facettes ggplot2 a une très belle fonctionnalité, mais peut-être plutôt limitée, de "facettage". Vous pouvez également combiner plusieurs tracés ggplot2 à l'aide du paquet grid. À partir de maintenant, vous ne pouvez pas faire non plus avec ggvis. Les tracés ggvis ne peuvent pas être combinés en une seule image (car ils ne sont pas des images, ce sont des pages Web "actives"), et il ne prend en charge aucun type de facettage ou de sous-tracé. Ceci est censé être dans le pipeline.
Flexibilité visuelle ggplot2 veut que chaque parcelle ait la même apparence, ce qui signifie que l'auteur préfère styliser. Par exemple, il n’ya aucun moyen d’avoir un tracé avec plusieurs axes y dans ggplot2. GGVIS peut. ggvis est beaucoup plus flexible que ggplot2. Il est beaucoup plus facile de faire des choses comme cacher des légendes, combiner plusieurs légendes en une seule, utiliser différentes échelles pour différentes choses sur la même parcelle, etc.
Personnalisation profonde Si vous voulez créer, par exemple, une nouvelle échelle intelligente, ce n'est pas trop difficile de le faire dans ggplot2 (bien que ce soit assez déroutant). Il ne semble pas y avoir de moyen de faire beaucoup de cela dans ggvis. Peut-être que c'est juste pas encore.
Séries temporelles ggplot2 n'aime pas tracer des séries chronologiques. Ça peut , mais ça ne veut pas . En fait, ni l'un ni l'autre ne veulent le faire. les deux insistent pour recevoir des données dans un data.frame, et ils ne peuvent pas gérer les objets xts ou zoo. Ils ne possèdent pas non plus de fonctionnalités intégrées pour découper une série chronologique. Mais ggvis ne se bat pas autant que ggplot2 contre la série chronologique. C'est en partie parce qu'il est si rapide de mettre à jour les données dans un graphique ggvis, je suppose. Si vous voulez tracer une chronologie, vous devrez battre soit dans la soumission, mais ggvis est beaucoup moins passif-agressif à ce sujet.
Sont-ils la même syntaxe? En quelque sorte ... Ils ont beaucoup en commun et apprendre à penser dans le style de l'un aidera à s'adapter au style de l'autre. En particulier, les deux sont conçus de manière à ce que tous les appels de traçage soient interconnectés sur une seule ligne de code. Le principal avantage de ceci est que cela rend le débogage et le profilage très difficiles, et rend les fonctionnalités de débogage / profilage dans des choses comme Rstudio inutiles. En dehors de cela, ils sont très différents du point de vue de la syntaxe. Certaines choses qui sont difficiles dans ggplot2 sont faciles dans ggvis. Une chose facile dans ggplot2 est impossible dans ggvis. Et vice versa. (J'ai une préférence pour la façon dont ggvis fait les choses, que je trouve plus facile à comprendre.)
Bugs ggvis en a encore pas mal. Parfois, il se comporte juste étrangement. Parfois, cependant, les parcelles disparaissent au hasard pour des raisons qui prennent des heures à contourner et qui ont très peu de sens. Les développeurs l'admettent librement, ggvis n'est pas encore prêt pour la production. Si vous traitez avec toute la complexité, vous allez découvrir qu'ils ne plaisantent pas.
The Bottom Line: Apprendre un tracé intermédiaire dans chacun prend environ 16 heures. Donc, de façon réaliste, vous allez probablement apprendre les deux.