Per stampare con R, devo imparare ggplot2 o ggvis? Non voglio necessariamente imparare entrambi se uno di loro è superiore in qualche modo. Perché la comunità R continua a creare nuovi pacchetti con funzionalità sovrapposte? Il post del blog di introduzione non menziona una parola per cui ggvis è stato creato dato che esiste già un sofisticato pacchetto di plottaggio ggplot2.

Commenti

  • ggvis è un sacco di cose completamente diverse . La vera alternativa è tra ggplot e lattice .
  • Penso che la risposta dipenda da cosa ‘ stai cercando. Se ‘ stai cercando grafici statici avanzati, ‘ vorrai imparare ggplot2. Per la visualizzazione web, prendi in considerazione ggvis.

Risposta

Inizia con ggplot2. Crea grafici statici.

Oltre ai grafici statici, ggvis può essere utilizzato anche per creare grafici interattivi. Una volta y hai imparato la sintassi di ggplot2, quindi la sintassi per aggiungere interattività per creare grafici ggiv seguirà naturalmente.

Commenti

  • Questo è inaccurato (forse era accurato al momento della scrittura). ggvis può sicuramente essere utilizzato per creare grafici statici. Il fatto che consenta anche grafici interattivi è una caratteristica, non una limitazione. Un semplice esempio di grafico statico: library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))

Answer

Vorrei espandere un po la risposta di Dianne Cook. Come ha detto, ggplot2 serve per creare grafici statici, ggvis per grafici interattivi. Ci sono molte implicazioni in questo:

Tipo di file Loutput di ggvis è HTML e include file CSS e javascript. Ggvis non restituisce in modo naturale file di immagini normali. Ggplot2 genera immagini normali, che possono quindi essere incorporato in HTML o pdf o gif o e-mail, o qualsiasi altra cosa. ggvis, se vuoi inviare il file per e-mail, stai zippando una directory di file HTML da visualizzare in un browser.

Animazione Una conseguenza di ciò è che se desideri creare unanimazione, puoi creare fotogrammi in ggplot2 e unirli, ma non esiste un modo naturale per farlo con ggvis. ggvis agendo in modo interattivo animerà “dal vivo”, ma questi sono diversi tipi di animazione. Se cè più movimento per fotogramma di quanto ggvis possa elaborare , non puoi aggirare questo (almeno in modo naturale) generando le immagini e creando il film in background. Allo stesso modo, lutente non può scaricare un film o un file gif da ggvis per riprodurlo.

In questo momento nel mio progetto attuale, sono passato da ggplot2 a ggvis perché ggplot2 era troppo lento per lanimazione interattiva. Ma, dopo aver giocato con le impostazioni, mi piacerebbe anche che lutente fosse in grado di fare clic su “vai” e scaricare un filmato a piena velocità e con unanimazione fluida di ciò che ha fatto. Non ho capito come farlo utilizzando ggvis, ma sarebbe una torta usando ggplot2.

Velocità ggvis è molto, molto, molto più veloce di ggplot2, specialmente quando si modificano i dati. Ogni grafico ggplot2 ha un secondo o pochi di ritardo. ggvis ha un secondo circa quando crei il grafico per la prima volta, dopodiché la modifica dei dati è perfetta: ggvis può essere collegato “in modo reattivo” ai dati in modo che si aggiorni ogni volta che i dati cambiano. Con ggplot2, lintera trama verrà ridisegnata.

Stile & Aspetto ggplot2 le trame sembrano un po più bello, a prima vista, delle trame di ggvis. I grafici di ggplot2 sono piuttosto eleganti. le trame di ggvis sono più semplici, ma stanno crescendo su di me. Ci sono anche estensioni per ggplot2, come i pacchetti xkcd e wesanderson, dove non esiste un analogo per ggvis. I grafici di ggplot2 sembrano tutti fatti dalla stessa persona (lautore di ggplot2) e questo si stanca dopo un po .

Completezza Ci sono tipi di grafici che puoi creare in ggplot2 che ggvis non supporta, almeno finora. Ad esempio, non esiste un elemento di trama “rug” in ggvis. Ho visto uno o due coropleti che sono stati creati con ggvis, ma non esiste ancora un supporto naturale integrato. Ggplot2 ha coordinate polari (ad esempio, grafici a torta) , ggvis non lo fa. Manca anche da ggvis (e disponibile in ggplot2 o in unestensione ggplot2): boxplots; contour plots; mappe di calore naturali; grafici di correlazione naturale; dotplots; violin plots; network plots; dendrogrammi. alcune persone molto intelligenti possono creare tutto questo in ggvis, ma io non sono così intelligente.

Annotazioni ggplot2 ha un framework di annotazioni molto carino, forse sottoutilizzato, ma ggvis no.

Trame secondarie & Sfaccettature ggplot2 ha un , ma forse piuttosto limitata, caratteristica di “sfaccettatura”. Puoi anche combinare più grafici ggplot2 usando il pacchetto grid. Al momento, non puoi fare neanche con ggvis. I grafici di ggvis non possono essere combinati in una singola immagine (perché non sono immagini, ma “re” pagine web “attive”) e non supporta alcun tipo di sfaccettatura o sottotrama. Questo dovrebbe essere in cantiere.

Flessibilità visiva ggplot2 vuole che ogni trama abbia lo stesso aspetto, il che significa che lautore preferisce stilisticamente. Cè non cè modo, ad esempio, di avere una trama con più assi y in ggplot2. ggvis può. ggvis è molto più flessibile di ggplot2. È molto più facile fare cose come nascondere le leggende, combinare più leggende in una, usare scale diverse per differenti cose sulla stessa trama, ecc.

Personalizzazione profonda Se desideri creare, ad esempio, un nuova scala intelligente, non è troppo difficile da fare in ggplot2 (anche se è abbastanza confuso). Semplicemente non sembra esserci un modo per farlo molto in ggvis. Forse è solo non ancora.

Serie temporali ggplot2 non ama tracciare serie temporali. può , ma non vuole . In realtà nessuno dei due vuole farlo; entrambi insistono per ricevere dati in un data.frame, e non possono “gestire xts o oggetti dello zoo. Non hanno nemmeno caratteristiche incorporate per suddividere una serie temporale, ma ggvis non combatte contro le serie temporali tanto quanto ggplot2. Ciò è in parte dovuto al fatto che è così veloce aggiornare i dati in un grafico ggvis, suppongo. Se vuoi tracciare una serie temporale, dovrai battere entrambi nella sottomissione, ma ggvis è molto meno passivo-aggressivo al riguardo .

Hanno la stessa sintassi? Una specie di … Cè “molto in comune tra loro e imparare a pensare nello stile di uno aiuterà ad adattarsi allo stile dellaltro. In particolare, entrambi sono progettati in modo che tutte le chiamate di plottaggio siano convogliate luna nellaltra su ununica riga di Il vantaggio principale di questo è che rende il debugging e il profiling davvero difficili, e fondamentalmente rende inutili le funzionalità di debugging / profiling in cose come Rstudio. A parte questo, sono sintatticamente abbastanza differenti. Alcune cose difficili in ggplot2 sono facili in ggvis. Alcune cose facili in ggplot2 sono impossibili in ggvis. E viceversa. (Ho un po di preferenza per il modo in cui ggvis fa le cose, che trovo più facile da capire.)

Bug ggvis ne ha ancora parecchi. A volte si comporta in modo strano. A volte, tuttavia, le trame scompaiono in modo casuale per motivi che richiedono ore per essere risolti e che non hanno molto senso. Gli sviluppatori lo ammettono liberamente, ggvis non è ancora pronto per la produzione. Se affronti una qualsiasi complessità, scoprirai che non stanno scherzando.

La linea di fondo: Lapprendimento della trama intermedia in ciascuna richiede circa 16 ore. Quindi, realisticamente, probabilmente imparerai entrambe le cose.

Commenti

  • Ottimo confronto
  • Cosè più veloce ggvis o lattice o rgl? (per set di dati di grandi dimensioni)
  • +1 fantastica scrittura. Sono daccordo con tutto ciò che è qui in base alle mie esperienze con entrambi finora.
  • Ciao, Che ne dici di ggvis vs rcharts?
  • TIME SERIES: ggplot2 vinci definitivamente con lespansione ggfortify. Consulta questa eccellente documentazione a riguardo: rpubs.com/sinhrks/basics .

Risposta

Penso che il messaggio che appare dopo library(ggvis) sia autoesplicativo:

LAPI ggvis è attualmente in rapida evoluzione. Ti consigliamo vivamente di non fare affidamento su questo per la produzione, ma sentiti libero di esplorare. Se riscontri un bug evidente, invia un esempio riproducibile minimo in https://github.com/rstudio/ggvis/issues . Per domande e altre discussioni, utilizza https://groups.google.com/group/ggvis .

Rispetto a ggplot2 ggvis manca ancora di alcune funzionalità e rifinisce (non cè modo di aggiungere un titolo a un grafico, ad esempio, i titoli degli assi si sovrappongono alle etichette delle tacche e ce ne sono altri, la sfaccettatura non è supportata, ecc.) Daltra parte la sintassi di ggvis sembra un po più pulita e linterattività è davvero fantastica.

In base alla mia esperienza, ggvis è un must se stai realizzando unapp brillante. Quindi i vantaggi di avere un motore di tracciamento grafico web e R amichevole superano di gran lunga le eventuali carenze che ha attualmente.

Se vuoi creare grafici statici per lesplorazione dei dati, ggplot2 è una libreria matura con molte funzioni interessanti e con una sana comunità di utenti e molte risorse da cui imparare.

La filosofia alla base di entrambi i pacchetti è simile, quindi le abilità possono essere trasferite abbastanza facilmente da un pacchetto allaltro.

Risposta

La comunità R continua a inventare nuovi (e spesso sovrapposti) pacchetti per una serie di motivi:

1) Qualcuno vuole cambiare qualcosa o aggiungere qualcosa che non è disponibile in un pacchetto esistente, ma gran parte di esso si sovrappone (quindi, molti pacchetti che fanno regressione)

2) Qualcuno scrive un pacchetto come incarico

3) Scrivere pacchetti è divertente (se ti piace questo genere di cose)

4) Non sanno che il pacchetto originale esiste

Commenti

  • Per quanto riguarda lesempio specifico e il tuo punto 4: ggvis è stato creato dalle stesse persone di ggplot2. Il punto importante qui è che luso di ggplot2 è così diffuso che è diventato impossibile implementare le modifiche senza rompere un sacco di codice esistente / pacchetti dipendenti.
  • Questo tipo di reinvenzione del pacchetto preesistente è destinato a accadere proprio come le recessioni economiche nelle società capitalistiche?
  • @Peter: come estraneo a R questo mi sembra un commento equo ma (cosa più insolita) non ‘ t rispondere alla domanda!
  • @NickCox Ho risposto a una delle domande che sono nella domanda. :-).
  • @Peter Punto molto giusto. Un riferimento incrociato a stats.stackexchange.com/questions/58966/… è quindi pertinente.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *