Soll ich zum Zeichnen mit R ggplot2 oder ggvis lernen?


38

Soll ich zum Zeichnen mit R ggplot2 oder ggvis lernen? Ich möchte nicht unbedingt beides lernen, wenn einer von ihnen in irgendeiner Hinsicht überlegen ist. Warum erstellt die R-Community immer wieder neue Pakete mit überlappenden Funktionen? In dem einleitenden Blogpost wird kein Wort darüber verloren, warum ggvis erstellt wird, da bereits ein ausgeklügeltes Plot-Paket ggplot2 vorhanden ist.


5
ggvis ist ein ganz anderer Fischkessel. Die wirkliche Alternative ist zwischen ggplot und Gitter .
Gala

1
Ich denke, die Antwort hängt davon ab, wonach Sie suchen. Wenn Sie nach statischen erweiterten Plots suchen, möchten Sie dies lernen ggplot2. Berücksichtigen Sie für die Web-Visualisierung ggvis.
Roman Luštrik

Antworten:


39

Beginnen Sie mit ggplot2. Es werden statische Diagramme erstellt.

Neben statischen Plots kann ggvis auch zum Erstellen interaktiver Plots verwendet werden. Sobald Sie die Syntax von ggplot2 kennen, folgt die Syntax zum Hinzufügen von Interaktivität zum Erstellen von ggivs-Plots auf natürliche Weise.


4
Dies ist ungenau (möglicherweise war es zum Zeitpunkt des Schreibens korrekt). Mit ggvis können auf jeden Fall statische Diagramme erstellt werden. Die Tatsache, dass auch interaktive Darstellungen möglich sind, ist eine Besonderheit, keine Einschränkung. Ein einfaches Beispiel für eine statische Handlung:library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))
Andre Terra

47

Ich möchte ein wenig auf die Antwort von Dianne Cook eingehen. Wie sie sagte, ist ggplot2 für die Erstellung statischer Diagramme gedacht, ggvis für interaktive Diagramme. Das hat eine Reihe von Implikationen:

Der Dateityp der ggvis-Ausgabe ist HTML, einschließlich CSS- und Javascript-Dateien. Natürlich gibt ggvis keine normalen Bilddateien aus. ggplot2 gibt normale Bilder aus, die dann in HTML oder PDF oder GIF eingebettet oder per E-Mail verschickt werden können, oder was auch immer. ggvis, wenn Sie die Datei per E-Mail versenden möchten, komprimieren Sie ein Verzeichnis mit HTML-Dateien, die in einem Browser angezeigt werden sollen.

Animation Wenn Sie eine Animation erstellen möchten, können Sie die Frames in ggplot2 erstellen und zusammenführen. Mit ggvis können Sie dies jedoch nicht auf natürliche Weise tun. Wenn ggvis interaktiv agiert, wird "live" animiert, aber dies sind verschiedene Arten von Animationen. Wenn pro Frame mehr passiert, als ggvis verarbeiten kann, können Sie dies (zumindest auf natürliche Weise) nicht umgehen, indem Sie die Bilder generieren und den Film im Hintergrund erstellen. Ebenso kann der Benutzer keine Filme oder GIF-Dateien von ggvis herunterladen, um sie wiederzugeben.

Momentan bin ich in meinem aktuellen Projekt von ggplot2 auf ggvis umgestiegen, da ggplot2 viel zu langsam war, um interaktiv animiert zu werden. Aber ich möchte auch, dass der Benutzer, nachdem er mit den Einstellungen gespielt hat, auf "go" klicken und einen Film mit voller Geschwindigkeit und reibungslosen Animationen von dem herunterladen kann, was er getan hat. Ich habe nicht herausgefunden, wie man das mit ggvis macht, aber es wäre Kuchen mit ggplot2.

Geschwindigkeit ggvis ist viel, viel, viel schneller als ggplot2, insbesondere beim Ändern von Daten. Jeder ggplot2-Plot hat eine oder mehrere Sekunden Verzögerung. ggvis hat ungefähr eine Sekunde Zeit, wenn Sie das Diagramm zum ersten Mal erstellen. Danach ist die Änderung der Daten nahtlos. ggvis kann "reaktiv" mit Daten verknüpft werden, sodass es sich selbst aktualisiert, wenn sich die Daten ändern. Mit ggplot2 wird der gesamte Plot neu gezeichnet.

Stil & Aussehen ggplot2-Diagramme erscheinen auf den ersten Blick ein bisschen netter als ggvis-Diagramme. ggplot2 Handlungen sind sehr elegant. ggvis-Pläne sind einfacher, aber sie wachsen auf mir. Es gibt auch Erweiterungen für ggplot2, wie z. B. die Pakete xkcd und wesanderson, für ggvis gibt es kein Analog. ggplot2-Diagramme sehen alle so aus, als wären sie von derselben Person (dem Autor von ggplot2) erstellt worden, und das wird nach einer Weile müde.

Vollständigkeit Es gibt Diagrammtypen, die Sie in ggplot2 erstellen können und die ggvis zumindest bisher nicht unterstützt. Zum Beispiel gibt es in ggvis kein "rug" -Plot-Element. Ich habe ein oder zwei Choroplethen gesehen, die mit ggvis hergestellt wurden, aber es gibt noch keine eingebaute natürliche Unterstützung. ggplot2 hat Polarkoordinaten (dh Kreisdiagramme), ggvis nicht. Ebenfalls in ggvis nicht vorhanden (und entweder in ggplot2 oder in einer ggplot2-Erweiterung verfügbar): Boxplots; Konturdiagramme; natürliche Wärmekarten; natürliche Korrelationsdiagramme; Dotplots; Geigenpläne; Netzwerk-Plots; Dendrogramme. Natürlich bin ich mir sicher, dass einige sehr clevere Leute all dies in ggvis erstellen können, aber ich bin nicht so clever.

Anmerkungen ggplot2 hat ein sehr schönes, vielleicht nicht ausreichend genutztes Anmerkungs-Framework. ggvis nicht.

Untergrund & Facetten ggplot2 hat eine sehr schöne, aber vielleicht eher eingeschränkte "Facettierungs" -Funktion. Sie können mit dem Grid-Paket auch mehrere ggplot2-Diagramme kombinieren. Ab sofort können Sie auch nicht mit ggvis. ggvis-Plots können nicht zu einem einzelnen Bild kombiniert werden (da es sich nicht um Bilder handelt, sondern um "Live" -Webseiten), und es werden keinerlei Facettierungen oder Unterplots unterstützt. Dies soll in Vorbereitung sein.

Visuelle Flexibilität ggplot2 möchte, dass jede Handlung gleich aussieht, was bedeutet, dass der Autor es stilistisch bevorzugt. Es ist beispielsweise nicht möglich, in ggplot2 ein Diagramm mit mehreren y-Achsen zu erstellen. ggvis kann. ggvis ist viel flexibler als ggplot2. Es ist viel einfacher, Dinge wie Verstecklegenden zu tun, mehrere Legenden zu einer zu kombinieren, verschiedene Maßstäbe für verschiedene Dinge auf demselben Grundstück zu verwenden usw.

Tiefe Anpassbarkeit Wenn Sie beispielsweise eine neue clevere Skala erstellen möchten, ist dies in ggplot2 nicht allzu schwierig (obwohl es ziemlich verwirrend ist). In ggvis scheint es einfach keine Möglichkeit zu geben, viel davon zu tun. Vielleicht ist es einfach noch nicht.

Zeitreihen ggplot2 zeichnet keine Zeitreihen. Es kann , aber nicht will . Eigentlich will keiner von ihnen; beide bestehen darauf, dass Daten in einem data.frame eingegeben werden, und sie können keine xts- oder zoo-Objekte verarbeiten. Sie haben auch keine eingebauten Funktionen zum Schneiden von Zeitreihen. Aber ggvis wehrt sich nicht so hart gegen die Zeitreihe wie ggplot2. Das liegt zum Teil daran, dass es so schnell geht, die Daten in einem ggvis-Plot zu aktualisieren. Wenn Sie eine Zeitserie zeichnen möchten, müssen Sie entweder in die Vorlage schlagen, aber ggvis ist viel weniger passiv-aggressiv.

Sind sie die gleiche Syntax? Art von ... Es gibt eine Menge Gemeinsamkeiten zwischen ihnen, und das Lernen, im Stil des einen zu denken, hilft dabei, sich an den Stil des anderen anzupassen. Insbesondere sind beide so konzipiert, dass alle Plotaufrufe in einer einzigen Codezeile ineinander übergehen. Der Hauptvorteil davon ist, dass das Debuggen und Profilieren sehr schwierig wird und die Debugging- / Profilierungsfunktionen in Dingen wie Rstudio im Grunde unbrauchbar werden. Davon abgesehen sind sie syntaktisch ziemlich unterschiedlich. Einige Dinge, die in ggplot2 schwierig sind, sind in ggvis einfach. Einige Dinge, die in ggplot2 einfach sind, sind in ggvis unmöglich. Und umgekehrt. (Ich habe eine Vorliebe für die Art und Weise, wie ggvis Dinge tut, die ich leichter verstehe.)

Bugs ggvis hat noch einige. Manchmal verhält es sich nur seltsam. Manchmal verschwinden die Handlungen jedoch zufällig aus Gründen, die Stunden in Anspruch nehmen und wenig Sinn ergeben. Die Entwickler geben dies frei, ggvis ist noch nicht produktionsreif. Wenn Sie mit beliebiger Komplexität umgehen, Sie werden entdecken , dass sie sind kein Scherz.

Fazit: Das Erlernen des Plottens zwischen zwei Plänen dauert ungefähr 16 Stunden. Realistisch gesehen wirst du wahrscheinlich beides lernen.


1
Toller Vergleich
Skan

Was ist schneller ggvis oder Gitter oder rgl? (für große Datensätze)
skan

+1 fantastisches Schreiben. Ich bin mit allem einverstanden, was ich hier gemacht habe, basierend auf meinen bisherigen Erfahrungen mit beiden.
David Crook

Hallo, was ist mit ggvis vs rcharts?
Skan

ZEITREIHE: ggplot2 gewinnt definitiv mit der Erweiterung ggfortify. Lesen Sie hierzu die hervorragende Dokumentation: rpubs.com/sinhrks/basics .
Archimede

10

Ich denke, die Nachricht, die danach erscheint, library(ggvis)ist selbsterklärend:

Die ggvis API entwickelt sich derzeit rasant weiter. Wir empfehlen dringend, dass Sie sich bei der Produktion nicht auf diese verlassen, sondern sich frei fühlen, sie zu erkunden. Wenn Sie auf einen klaren Fehler stoßen, legen Sie bitte ein minimal reproduzierbares Beispiel unter https://github.com/rstudio/ggvis/issues vor . Für Fragen und andere Diskussionen verwenden Sie bitte https://groups.google.com/group/ggvis .

Im Vergleich zu ggplot2 fehlen in ggvis noch einige Funktionen und Verbesserungen (keine Möglichkeit, Titel zu einem Diagramm hinzuzufügen, z. B. Achsentitel, die sich mit Teilstrichbeschriftungen überschneiden, und es gibt mehr, Facettierung wird nicht unterstützt usw.). Andererseits fühlt sich die ggvis-Syntax an ein bisschen sauberer und Interaktivität ist wirklich fantastisch.

Aus meiner eigenen Erfahrung ist ggvis ein Muss, wenn Sie eine glänzende App erstellen. Dann überwiegen die Vorteile einer web- und R-freundlichen Graphplot-Engine die Mängel, die sie derzeit aufweist.

Wenn Sie statische Diagramme für die Datenexploration erstellen möchten, ist ggplot2 eine ausgereifte Bibliothek mit vielen tollen Funktionen und einer gesunden Benutzergemeinschaft sowie vielen Ressourcen, aus denen Sie lernen können.

Die Philosophie hinter den beiden Paketen ist ähnlich, so dass die Fähigkeiten ziemlich einfach von einem Paket auf ein anderes übertragen werden können.


8

Die R-Community wartet aus verschiedenen Gründen mit neuen (und häufig überlappenden) Paketen auf:

1) Jemand möchte etwas ändern oder etwas hinzufügen, das in einem vorhandenen Paket nicht verfügbar ist, aber ein Großteil davon überlappt (daher viele Pakete, die eine Regression durchführen).

2) Jemand schreibt ein Paket als Aufgabe

3) Das Schreiben von Paketen macht Spaß (wenn Sie so etwas mögen)

4) Sie wissen nicht, dass die Originalverpackung existiert


9
In Bezug auf das spezifische Beispiel und Ihren Punkt 4: ggvis wurde von denselben Personen verfasst wie ggplot2. Der wichtige Punkt hierbei ist, dass die Verwendung von ggplot2 so weit verbreitet ist, dass es unmöglich geworden ist, Änderungen zu implementieren, ohne viele vorhandene Code / abhängige Pakete zu beschädigen.
Roland

1
Ist diese Art der Neuerfindung von bereits existierenden Paketen genauso vorgesehen wie wirtschaftliche Rezessionen in kapitalistischen Gesellschaften?
Qazwsx

2
@Peter: Als Außenseiter von R scheint mir das ein fairer Kommentar zu sein, aber (am ungewöhnlichsten) du beantwortest die Frage nicht!
Nick Cox

@ NickCox Ich beantwortete eine der Fragen, die in der Frage sind. :-).
Peter Flom - Wiedereinsetzung von Monica

1
@ Peter Sehr fairer Punkt. Ein Querverweis auf stats.stackexchange.com/questions/58966/… ist meines Erachtens daher relevant.
Nick Cox
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.