Pentru complotarea cu R, ar trebui să învăț ggplot2 sau ggvis? Nu vreau neapărat să învăț pe amândouă dacă unul dintre ei este superior în orice privință. De ce comunitatea R continuă să creeze pachete noi cu funcționalități suprapuse? postarea de blog de introducere nu menționează niciun cuvânt de ce este creat ggvis având în vedere că există deja un pachet de complotare sofisticat ggplot2.

Comentarii

  • ggvis este un ceainic complet diferit de pește . Alternativa reală este între ggplot și rețea .
  • Cred că răspunsul depinde de ceea ce ' re after. Dacă ' căutați comploturi statice avansate, ' veți dori să aflați ggplot2. Pentru vizualizarea web, luați în considerare ggvis.

Răspundeți

Începeți cu ggplot2. Creează graficele statice.

În afară de graficele statice, ggvis poate fi folosit și pentru crearea graficelor interactive. Odată ce y ați învățat sintaxa ggplot2, apoi sintaxa pentru adăugarea interactivității pentru a crea graficele ggivs va urma în mod natural.

Comentarii

  • Acest lucru este inexact (poate era exactă în momentul scrierii). ggvis poate fi cu siguranță folosit pentru a crea parcele statice. Faptul că permite și parcele interactive este o caracteristică, nu o limitare. Un exemplu simplu de complot static: library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))

Răspuns

Vreau să explic puțin răspunsul lui Dianne Cook. După cum a spus ea, ggplot2 este pentru crearea de grafice statice, ggvis este pentru comploturi interactive. Există o mulțime de implicații:

Tip de fișier ieșirea ggvis este HTML, inclusiv fișiere CSS și javascript. Ggvis nu scoate în mod natural fișiere de imagine obișnuite. Ggplot2 scoate imagini obișnuite, care pot fi apoi fi încorporat în HTML sau pdf sau gif sau prin e-mail sau orice altceva. ggvis, dacă doriți să trimiteți prin e-mail fișierul, reîncărcați un director de fișiere HTML pentru a fi vizualizat într-un browser.

Animație O consecință este că, dacă doriți să creați o animație, puteți face cadrele din ggplot2 și combinați-le, dar nu există nicio modalitate naturală de a face acest lucru cu ggvis. ggvis care acționează interactiv va anima „live”, dar acestea sunt diferite tipuri de animație. Dacă există mai multe lucruri pe cadru decât ggvis poate procesa , nu puteți rezolva acest lucru (cel puțin într-un mod natural) generând imaginile și realizând filmul în fundal. În mod similar, utilizatorul nu poate descărca un fișier de film sau gif de la ggvis pentru a reda.

În acest moment, în proiectul meu actual, am trecut de la ggplot2 la ggvis deoarece ggplot2 a fost mult prea lent pentru a anima interactiv. Dar, mi-ar plăcea și utilizatorului, după ce am jucat setările, să pot face clic pe „du-te” și să descarc un film cu animație completă, cu viteză completă, a ceea ce au făcut. Nu mi-am dat seama cum să fac asta folosind ggvis, dar ar fi tort folosind ggplot2.

Viteza ggvis este mult, mult, mult mai rapid decât ggplot2, mai ales la schimbarea datelor. Fiecare complot ggplot2 are o secundă sau câteva întârzieri. ggvis are o a doua sau cam așa ceva atunci când creați graficul pentru prima dată, după aceea schimbarea datelor este perfectă – ggvis poate fi legat „reactiv” de date, astfel încât să se actualizeze singur ori de câte ori datele se schimbă. Cu ggplot2, întregul complot va fi redesenat.

Stil & Aspect diagramele ggplot2 par un pic mai frumos, la prima vedere, decât parcelele ggvis. parcele ggplot2 sunt destul de elegante. comploturile ggvis sunt mai simple, dar cresc pe mine. Există, de asemenea, extensii pentru ggplot2, cum ar fi pachetele xkcd și wesanderson, unde nu există analog pentru ggvis. Complotele ggplot2 arată ca și cum ar fi fost făcute de aceeași persoană (autorul ggplot2) și care obosește după un timp.

Completitudine Există tipuri de complot pe care le puteți crea în ggplot2 pe care ggvis nu le acceptă, cel puțin până acum. De exemplu, în ggvis nu există un element grafic „covor”. Am văzut unul sau două coropleti care au fost făcute cu ggvis, dar încă nu există suport natural încorporat. Ggplot2 are coordonate polare (de exemplu, diagrame pie) , ggvis nu. De asemenea, lipsește din ggvis (și disponibil fie în ggplot2, fie într-o extensie ggplot2): boxplots; contour plots; heatmaps naturale; diagrame de corelație naturale; dotplots; ploturi pentru vioară; ploturi de rețea; dendrograme. Desigur, sunt sigur unii oameni foarte isteți pot crea toate acestea în ggvis, dar eu nu sunt atât de inteligent.

Adnotări ggplot2 are un cadru de adnotare foarte frumos, poate subutilizat, ggvis nu.

Subtrame & Fațete ggplot2 are un aspect foarte frumos , dar poate destul de limitat, caracteristică „fațetare”. De asemenea, puteți combina mai multe parcele ggplot2 folosind pachetul grilă. De acum, nu puteți face nici cu ggvis. graficele ggvis nu pot fi combinate într-o singură imagine (deoarece nu sunt imagini, sunt „re” pagini web) și nu acceptă niciun fel de fațetare sau subplotare. Se presupune că se află în curs.

Flexibilitate vizuală ggplot2 dorește ca fiecare complot să arate la fel, ceea ce înseamnă că autorul preferă stilistic. Există nicio modalitate, de exemplu, de a avea un complot cu mai multe axe y în ggplot2. ggvis can. ggvis este mult mai flexibil decât ggplot2. Este mult mai ușor de făcut lucruri precum ascunderea legendelor, combinați mai multe legende într-una singură, folosiți diferite scale pentru diferite lucruri din același complot etc.

Personalizare profundă Dacă doriți să creați, spuneți, un o nouă scară inteligentă, nu este prea greu să faci asta în ggplot2 (deși este destul de confuz). Doar nu pare să existe o modalitate de a face multe din asta în ggvis. Poate că nu este încă.

Serie temporală ggplot2 nu-i place să traseze serii temporale. Poate , dar nu „vreau . De fapt, niciunul dintre ei nu vrea; ambii insistă să fie hrăniți date într-un cadru data.fr și nu pot gestiona xts sau obiecte de grădină zoologică. Nici ele nu au caracteristici încorporate pentru felierea unei serii de timp. Dar ggvis nu se luptă împotriva seriei de timp la fel de dur ca ggplot2. Asta este parțial pentru că este atât de rapid să actualizezi datele într-un complot ggvis, presupun. Dacă vrei să complotezi o serie de timp, va trebui să învingi fie în prezentare, dar ggvis este mult mai puțin pasiv-agresiv în privința asta. .

Sunt aceiași sintaxă? Un fel de … Există „multe” în comun între ele , și să înveți să gândești în stilul unuia te va ajuta să te adaptezi la stilul celuilalt. În special, ambele sunt concepute astfel încât toate apelurile de graficare să fie conectate una la alta, toate pe o singură linie de Avantajul principal al acestui lucru este că face ca depanarea și profilarea să devină cu adevărat dificile și, în esență, să facă inutile caracteristicile de depanare / profilare din lucruri precum Rstudio. În afară de asta, ele sunt „sintetice destul de diferite. Unele lucruri dificile în ggplot2 sunt ușoare în ggvis. Unele lucruri ușoare în ggplot2 sunt imposibile în ggvis. Si invers. (Am un pic de preferință pentru modul în care ggvis face lucrurile, ceea ce mi se pare mai ușor de înțeles.)

Bug-uri ggvis are încă câteva. Uneori se comportă ciudat. Uneori, totuși, comploturile dispar în mod aleatoriu din motive care necesită ore întregi de lucru și nu au prea mult sens. Dezvoltatorii recunosc acest lucru în mod liber, ggvis nu este încă pregătit pentru producție. Dacă vă confruntați cu orice complexitate, veți descoperi că nu „glumesc”.

Concluzia: Învățarea graficului intermediar în fiecare durează aproximativ 16 ore. Deci, în mod realist, probabil că veți învăța ambele.

Comentarii

  • O comparație excelentă
  • Ce este mai rapid ggvis sau rețea sau rgl? (pentru seturi de date mari)
  • +1 scriere fantastică. Sunt de acord cu tot ce se află aici, pe baza experiențelor mele cu amândouă până acum.
  • Bună ziua, ce zici de ggvis vs rcharts?
  • SERIE DE TIMP: ggplot2 câștigă definitiv cu expansiunea ggfortify. Consultați această documentație excelentă despre aceasta: rpubs.com/sinhrks/basics .

Răspuns

Cred că mesajul care apare după library(ggvis) se explică de la sine:

În prezent, API-ul ggvis evoluează rapid. Vă recomandăm cu tărie să nu vă bazați pe acest lucru pentru producție, dar nu ezitați să explorați. Dacă întâlniți o eroare clară, vă rugăm să înregistrați un exemplu minim reproductibil la https://github.com/rstudio/ggvis/issues . Pentru întrebări și alte discuții, vă rugăm să utilizați https://groups.google.com/group/ggvis .

Din propria mea experiență, ggvis este o necesitate dacă construiți o aplicație strălucitoare. Apoi, avantajele de a avea un motor grafic pentru web și graficul R sunt mai mari decât orice deficiențe pe care le are în prezent.

Dacă doriți să faceți grafice statice pentru explorarea datelor, atunci ggplot2 este o bibliotecă matură, cu o mulțime de funcții interesante și cu o comunitate sănătoasă de utilizatori și cu multe resurse de la care puteți învăța.

Filozofia din spatele ambelor pachete este similară, astfel încât abilitățile pot fi transferate destul de ușor de la un pachet la altul.

Răspuns

Comunitatea R continuă să vină cu pachete noi (și deseori suprapuse) din mai multe motive:

1) Cineva dorește să schimbe ceva sau să adauge ceva care nu este disponibil într-un pachet existent, dar o mare parte din acesta se suprapune (prin urmare, multe pachete care fac regresie)

2) Cineva scrie un pachet ca sarcină

3) Scrierea pachetelor este distractivă (dacă vă place acest lucru)

4) Nu știu că pachetul original există

Comentarii

  • În ceea ce privește exemplul specific și punctul dvs. 4: ggvis este creat de aceiași oameni ca ggplot2. Punctul important aici este că utilizarea ggplot2 este atât de răspândită încât a devenit imposibil să implementăm modificări fără a sparge o mulțime de coduri existente / pachete dependente.
  • Este acest tip de reinvenție a pachetului preexistent destinat se întâmplă la fel ca recesiile economice din societățile capitaliste?
  • @Peter: Ca un străin de la R, mi se pare un comentariu corect, dar (cel mai neobișnuit) nu ' Nu răspundeți la întrebare!
  • @ NickCox Am răspuns la una dintre întrebările din această întrebare. :-).
  • @Peter Foarte corect. Cred că pertinentă o referință încrucișată la stats.stackexchange.com/questions/58966/… .

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *