For å plotte med R, skal jeg lære ggplot2 eller ggvis? Jeg vil ikke nødvendigvis lære begge deler hvis en av dem er overlegen i noen henseende. Hvorfor fortsetter R-samfunnet å lage nye pakker med overlappende funksjoner? introduksjon blogginnlegg nevner ikke et ord hvorfor ggvis opprettes gitt at en sofistikert plottpakke ggplot2 allerede eksisterer.
Kommentarer
Svar
Start med ggplot2. Det skaper statiske plott.
Bortsett fra statiske plott, kan ggvis også brukes til å lage interaktive plott. En gang y du har lært syntaksen til ggplot2, så vil syntaksen for å legge til interaktivitet for å skape ggivs-plotter følge naturlig.
Kommentarer
- Dette er unøyaktig (kanskje den var nøyaktig i skrivende stund). ggvis kan definitivt brukes til å lage statiske plott. Det faktum at det også tillater interaktive tomter er en funksjon, ikke en begrensning. Et enkelt eksempel på et statisk plot:
library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))
Svar
Jeg vil utvide litt om Dianne Cooks svar. Som hun sa, ggplot2 er for å lage statiske plott, ggvis er for interaktive plott. Det er en rekke implikasjoner for det:
Filtype ggvis-utdata er HTML inkludert CSS- og javascript-filer. Ggvis sender ikke naturlig ut vanlige bildefiler. Ggplot2 sender ut vanlige bilder, som deretter kan være innebygd i HTML eller pdf eller gif eller e-post, eller hva som helst annet. ggvis, hvis du vil sende filen på e-post, zipper du opp en katalog med HTML-filer som skal vises i en nettleser.
Animasjon En konsekvens av det er at hvis du vil lage en animasjon, kan du lage rammer i ggplot2 og slå dem sammen, men det er ingen naturlig måte å gjøre dette med ggvis på. ggvis som handler interaktivt vil animere «live», men dette er forskjellige typer animasjoner. Hvis det skjer mer per ramme enn ggvis kan behandle , kan du ikke omgå det (i det minste på en naturlig måte) ved å generere bildene og lage filmen i bakgrunnen. Tilsvarende kan brukeren ikke laste ned en film eller gif-fil fra ggvis for å spille av på nytt.
Akkurat nå i mitt nåværende prosjekt byttet jeg fra ggplot2 til ggvis fordi ggplot2 var altfor treg til å animere interaktivt. Men jeg vil også at brukeren, etter å ha lekt med innstillingene, kunne klikke «gå» og laste ned en film med full hastighet, jevn animasjon av hva de gjorde. Jeg har ikke funnet ut hvordan jeg gjør dette ved hjelp av ggvis, men det ville være kake med ggplot2.
Hastighet ggvis er mye, mye, mye raskere enn ggplot2, spesielt når du endrer data. Hvert ggplot2-plot har et sekund eller noen få forsinkelser. ggvis har et sekund eller så når du først oppretter plottet, etter at endring av data er sømløs – ggvis kan «reaktivt» kobles til data, slik at den oppdaterer seg selv når dataene endres. Med ggplot2 kommer hele plottet til å bli tegnet på nytt.
Stil & Utseende ggplot2-plott virker litt finere, ved første øyekast, enn ggvis-tomter. ggplot2 tomter er ganske elegante. ggvis-tomter er enklere, men de vokser på meg. Det er også utvidelser for ggplot2, slik som xkcd- og wesanderson-pakkene, der det ikke er noen analog for ggvis. Ggplot2-plott ser alle ut som om de ble laget av den samme personen (forfatteren av ggplot2) og det blir slitent etter hvert.
Fullstendighet Det er plottyper du kan lage i ggplot2 som ggvis ikke støtter, i det minste så langt. For eksempel er det ingen «teppe» plottelement i ggvis. Jeg har sett en eller to koropleter som ble laget med ggvis, men det er ingen naturlig innebygd støtte ennå. Ggplot2 har polare koordinater (dvs. kakediagrammer) , ggvis ikke. Mangler også ggvis (og tilgjengelig enten i ggplot2 eller i en ggplot2-utvidelse): boxplots; contour plots; natural heatmaps; natural correlation charts; dotplots; violin plots; network plots; dendrograms. Selvfølgelig er jeg sikker noen veldig smarte folk kan lage alle disse i ggvis, men jeg er ikke så smart.
Kommentarer ggplot2 har en veldig fin, kanskje underutnyttet, merknadsramme. ggvis ikke.
Delplott & Fasetter ggplot2 har en veldig fin , men kanskje ganske begrenset, «faceting» -funksjon. Du kan også kombinere flere ggplot2-plott ved hjelp av rutenettpakken. Per nå kan du ikke gjøre noe med ggvis. ggvis-plott kan ikke kombineres til et enkelt bilde (fordi de ikke er bilder, de «lever» nettsider), og det støtter ikke noen form for fasettering eller delplanlegging. Dette skal være i gang.
Visuell fleksibilitet ggplot2 vil at hvert plot skal se likt ut, noe som betyr at forfatteren foretrekker stilistisk. ingen måte, for eksempel, å ha et plott med flere y-akser i ggplot2. ggvis kan. ggvis er mye mer fleksibelt enn ggplot2. Det er mye lettere å gjøre ting som å skjule legender, kombinere flere legender i en, bruke forskjellige skalaer for forskjellige ting på samme tomt osv.
Dyp tilpasning Hvis du vil opprette, si et ny smart skala, det er ikke for vanskelig å gjøre det i ggplot2 (selv om det er ganske forvirrende). Det ser ikke ut til å være en måte å gjøre mye av det på ggvis. Kanskje det bare ikke er ennå.
Tidsserie ggplot2 liker ikke å tegne tidsserier. Det kan , men det vil det ikke . Egentlig vil ingen av dem; begge insisterer på å få matet data i en data.frame, og de kan ikke håndtere xts eller zoo-objekter. De har ikke innebygde funksjoner for å kutte en tidsserie heller. Men ggvis kjemper ikke mot tidsseriene like hardt som ggplot2. Det er delvis fordi det er så raskt å oppdatere dataene i et ggvis-plot, antar jeg. Hvis du vil plotte en tidsserie, må du slå enten til innlevering, men ggvis er mye mindre passiv-aggressiv med det .
Er de samme syntaks? Slags … Det er mye til felles mellom dem , og å lære å tenke i stil med den ene vil bidra til å tilpasse seg stilen til den andre. Spesielt er begge utformet slik at alle plotting-samtalene blir ført inn i hverandre på en enkelt linje med Den primære fordelen med dette er at det gjør feilsøking og profilering veldig vanskelig, og i utgangspunktet gjør feilsøkings- / profileringsfunksjonene i ting som Rstudio ubrukelige. Annet enn det, er de syntaktisk ganske forskjellige. Noen ting som er vanskelig i ggplot2 er enkle i ggvis. Noen ting som er enkle i ggplot2 er umulige i ggvis. Og vice versa. (Jeg har litt preferanse for måten ggvis gjør ting på, noe jeg synes er lettere å forstå.)
Feil ggvis har fortsatt ganske mange. Noen ganger oppfører det seg bare rart. Noen ganger forsvinner imidlertid tomter tilfeldig av grunner som tar timer å jobbe rundt og gir veldig liten mening. Utviklerne innrømmer dette fritt, ggvis er ikke produksjonsklar ennå. Hvis du takler noen kompleksitet, vil du oppdage at de ikke tuller.
Poenget: Å lære mellomplanlegging i hver tar omtrent 16 timer. Så realistisk sett vil du sannsynligvis lære begge deler.
Kommentarer
- Flott sammenligning
- Hva er raskere ggvis eller gitter eller rgl? (for store datasett)
- +1 fantastisk skrive opp. Jeg er enig i alt her basert på mine erfaringer med begge så langt.
- Hei, hva med ggvis vs rcharts?
- TIDSSERIER: ggplot2 vinner definitivt med utvidelsen ggfortify. Se denne utmerkede dokumentasjonen om det: rpubs.com/sinhrks/basics .
Svar
Jeg tror meldingen som vises etter library(ggvis)
er selvforklarende:
APIet til ggvis er i rask utvikling. Vi anbefaler på det sterkeste at du ikke stoler på dette for produksjon, men utforsk gjerne. Hvis du støter på en klar feil, kan du sende inn et minimalt reproduserbart eksempel på https://github.com/rstudio/ggvis/issues . For spørsmål og annen diskusjon, bruk https://groups.google.com/group/ggvis .
Sammenlignet med ggplot2 mangler ggvis fremdeles noen funksjoner og polering (ingen måte å legge til tittel i en graf, for eksempel aksetitler som overlapper kryssetiketter, og det er mer, fasettering støttes ikke, etc.) På på den andre siden føles ggvis-syntaksen litt renere, og interaktivitet er virkelig fantastisk.
Fra min egen erfaring er ggvis et must hvis du bygger en skinnende app. Da oppveier fordelene med å ha en web- og R-vennlig grafplottmotor tungt opp alle mangler den har for øyeblikket.
Hvis du vil lage statiske grafer for datautforskning, er ggplot2 et modent bibliotek med mange kule funksjoner og med et sunt fellesskap av brukere og mange ressurser å lære av.
Filosofien bak begge pakkene er lik, så ferdighetene kan overføres ganske enkelt fra en pakke til en annen.
Svar
R-samfunnet kommer stadig med nye (og ofte overlappende) pakker av en rekke årsaker:
1) Noen vil endre noe eller legge til noe som ikke er tilgjengelig i en eksisterende pakke, men mye av det overlapper (derav mange pakker som gjør regresjon)
2) Noen skriver en pakke som oppgave
3) Det er morsomt å skrive pakker (hvis du liker den slags ting)
4) De vet ikke at den originale pakken eksisterer
Kommentarer
- Angående det spesifikke eksemplet og punkt 4: ggvis er skrevet av de samme personene som ggplot2. Det viktige poenget her er at bruk av ggplot2 er så vidt spredt at det har blitt umulig å implementere endringer uten å bryte mange eksisterende kode / avhengige pakker.
- Er denne typen gjenoppfinnelse av eksisterende pakke bestemt til skje akkurat som økonomiske lavkonjunkturer i kapitalismesamfunn?
- @Peter: Som en outsider til R virker dette for meg som en rettferdig kommentar, men (mest uvanlig) trenger du ikke ' ikke svare på spørsmålet!
- @NickCox Jeg svarte på et av spørsmålene som er i spørsmålet. :-).
- @Peter Veldig greit poeng. En kryssreferanse til stats.stackexchange.com/questions/58966/… er jeg synes relevant derfor.
ggplot2
. For nettvisualisering, vurderggvis
.