Skal jeg lære ggplot2 eller ggvis for at plotte med R? Jeg ønsker ikke nødvendigvis at lære begge, hvis en af dem er overlegen i enhver henseende. Hvorfor opretter R-samfundet fortsat nye pakker med overlappende funktioner? introduktionsblogindlæg nævner ikke et ord, hvorfor ggvis oprettes, da der allerede findes en sofistikeret plottepakke ggplot2.

Kommentarer

  • ggvis er en helt anden kedel fisk Det virkelige alternativ er mellem ggplot og gitter .
  • Jeg tror svaret afhænger af, hvad du ‘ re after. Hvis du ‘ leder efter statiske avancerede plot, vil du ‘ gerne lære ggplot2. Ved webvisualisering skal du overveje ggvis.

Svar

Start med ggplot2. Det opretter statiske plots.

Bortset fra statiske plots kan ggvis også bruges til at oprette interaktive plots. Når y du har lært syntaksen for ggplot2, så følger syntaksen for at tilføje interaktivitet for at skabe ggivs-plots naturligt.

Kommentarer

  • Dette er unøjagtigt (måske det var korrekt i skrivende stund). ggvis kan bestemt bruges til at oprette statiske plots. Det faktum, at det også giver mulighed for interaktive plot, er en funktion, ikke en begrænsning. Et simpelt eksempel på et statisk plot: library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))

Svar

Jeg vil udvide lidt om Dianne Cooks svar. Som hun sagde, ggplot2 er til oprettelse af statiske plot, ggvis er til interaktive plot. Der er en masse implikationer ved det:

Filtype ggvis-output er HTML inklusive CSS- og javascript-filer. Ggvis udsender ikke naturligt almindelige billedfiler. Ggplot2 udsender almindelige billeder, som derefter kan være indlejret i HTML eller pdf eller gif eller e-mailes, eller hvad som helst andet. ggvis, hvis du vil e-maile filen, lynlåser du en mappe med HTML-filer, der skal vises i en browser.

Animation En konsekvens af det er, at hvis du vil oprette en animation, kan du lave rammer i ggplot2 og flet dem, men der er ingen naturlig måde at gøre dette med ggvis på. ggvis, der handler interaktivt, vil animere “live”, men det er forskellige former for animation. Hvis der foregår mere pr. ramme, end ggvis kan behandle , kan du ikke omgå det (i det mindste på en naturlig måde) ved at generere billederne og lave filmen i baggrunden. På samme måde kan brugeren ikke downloade en film eller gif-fil fra ggvis for at afspille igen.

Lige nu i mit nuværende projekt skiftede jeg fra ggplot2 til ggvis, fordi ggplot2 var alt for langsom til at animere interaktivt. Men jeg vil også gerne have brugeren, efter at have leget med indstillingerne, for at kunne klikke på “gå” og downloade en film med fuld hastighed, glat animation af, hvad de gjorde. Jeg har ikke fundet ud af, hvordan man gør dette ved hjælp af ggvis, men det ville være kage ved hjælp af ggplot2.

Hastighed ggvis er meget, meget, meget hurtigere end ggplot2, især når du ændrer data. Hvert ggplot2-plot har et sekund eller et par forsinkelser. ggvis har et sekund eller deromkring, når du først opretter plottet, efter at det er problemfrit at ændre data – ggvis kan “reaktivt” linkes til data, så det opdaterer sig selv, når dataene ændres. Med ggplot2 vil hele plottet blive tegnet igen.

Stil & Udseende ggplot2-plot virker lidt pænere ved første øjekast end ggvis-plot. ggplot2 plots er ret elegante. ggvis plot er enklere, men de vokser på mig. Der er også udvidelser til ggplot2, såsom xkcd- og wesanderson-pakkerne, hvor der ikke er nogen analog til ggvis. Ggplot2-plot ser alle ud som om de blev lavet af den samme person (forfatteren af ggplot2), og det bliver træt efter et stykke tid.

Fuldstændighed Der er plottyper, du kan oprette i ggplot2, som ggvis ikke understøtter, i det mindste indtil nu. For eksempel er der intet “tæppe” plotelement i ggvis. Jeg har set en eller to choropleths, der blev lavet med ggvis, men der er endnu ingen naturlig indbygget støtte. Ggplot2 har polære koordinater (dvs. cirkeldiagrammer) , ggvis ikke. Mangler også fra ggvis (og findes enten i ggplot2 eller i en ggplot2-udvidelse): boxplots; konturplots; naturlige varmekort; naturlige korrelationskort; dotplots; violinplots; netværksplots; dendrogrammer. Selvfølgelig er jeg sikker nogle meget kloge folk kan oprette alle disse i ggvis, men jeg er ikke så smart.

Kommentarer ggplot2 har en meget flot, måske underudnyttet, annoteringsramme. ggvis ikke.

Subplots & Facetter ggplot2 har en meget flot , men måske ret begrænset, “facetterende” funktion. Du kan også kombinere flere ggplot2-plotter ved hjælp af gitterpakken. Fra nu af kan du ikke gøre noget med ggvis. ggvis-plot kan ikke kombineres til et enkelt billede (fordi de ikke er billeder, de “live” websider), og det understøtter ikke nogen form for facettering eller delplanlægning. Dette formodes at være i pipeline.

Visuel fleksibilitet ggplot2 ønsker, at hvert plot ser ens ud, hvilket betyder, at forfatteren foretrækker stilistisk. ingen måde for eksempel at have et plot med flere y-akser i ggplot2. ggvis kan. ggvis er meget mere fleksibel end ggplot2. Det er meget lettere at gøre ting som at skjule legender, kombinere flere legender i en, bruge forskellige skalaer til forskellige ting på samme plot osv.

Dyb tilpasning Hvis du vil oprette, skal du sige en ny smart skala, det er ikke for svært at gøre det i ggplot2 (selvom det er ret forvirrende). Det ser bare ikke ud til at være en måde at gøre meget af det på ggvis. Måske er det bare ikke endnu.

Tidsserie ggplot2 kan ikke lide at tegne tidsserier. Det kan men det vil det ikke . Faktisk vil ingen af dem; begge insisterer på at blive fodret med data i en data.frame, og de kan ikke håndtere xts eller zoo-objekter. De har heller ikke indbyggede funktioner til udskæring af en tidsserie. Men ggvis kæmper ikke tilbage mod tidsserien så hårdt som ggplot2. Det er dels fordi det er så hurtigt at opdatere dataene i et ggvis-plot, antager jeg. Hvis du vil plotte en timeserie, bliver du nødt til at slå en af dem til underkastelse, men ggvis er meget mindre passiv-aggressiv over det .

Er de samme syntaks? Slags … Der er meget til fælles mellem dem , og at lære at tænke i stil med den ene hjælper med at tilpasse sig stilen til den anden. Især er begge designet, så alle planlægningsopkaldene ledes ind i hinanden på en enkelt linje af kode. Den primære fordel ved dette er, at det gør fejlretning og profilering virkelig hårdt, og som grundlæggende gør fejlretnings- / profileringsfunktionerne i ting som Rstudio ubrugelige. Bortset fra det er de syntaktisk helt forskellige. Nogle ting, der er svære i ggplot2, er lette i ggvis. Nogle ting, der er lette i ggplot2, er umulige i ggvis. Og omvendt. (Jeg har en smule præference for den måde, ggvis gør ting på, hvilket jeg finder lettere at forstå.)

Fejl ggvis har stadig en hel del. Nogle gange opfører det sig bare underligt. Nogle gange forsvinder plot imidlertid tilfældigt af grunde, der tager timer at arbejde rundt og giver meget lidt mening. Udviklerne indrømmer dette frit, ggvis er endnu ikke produktionsklar. Hvis du håndterer kompleksitet, vil du opdage at de ikke tuller.

Bundlinjen: At lære mellemliggende planlægning i hver tager cirka 16 timer. Så realistisk set lærer du sandsynligvis begge.

Kommentarer

  • Stor sammenligning
  • Hvad er hurtigere ggvis eller gitter eller rgl? (for store datasæt)
  • +1 fantastisk opskrivning. Jeg er enig med alt her baseret på mine erfaringer med begge hidtil.
  • Hej, hvad med ggvis vs rcharts?
  • TIDSSERIER: ggplot2 vinder endeligt med udvidelsen ggfortify. Se denne fremragende dokumentation om det: rpubs.com/sinhrks/basics .

Svar

Jeg synes, at meddelelsen, der vises efter library(ggvis), er selvforklarende:

Ggvis API udvikler sig i øjeblikket hurtigt. Vi anbefaler kraftigt, at du ikke stoler på dette til produktion, men du er velkommen til at udforske. Hvis du støder på en klar fejl, skal du indsende et minimalt reproducerbart eksempel på https://github.com/rstudio/ggvis/issues . For spørgsmål og anden diskussion, brug https://groups.google.com/group/ggvis .

Sammenlignet med ggplot2 mangler ggvis stadig nogle funktioner og polering (ingen måde at tilføje titel til en graf for eksempel aksetitler overlappende med krydsetiketter, og der er flere, facettering understøttes ikke osv.) På på den anden side føles ggvis-syntaksen lidt renere, og interaktivitet er virkelig fantastisk.

Fra min egen erfaring er ggvis et must, hvis du bygger en skinnende app. Derefter opvejer fordelene ved at have en web- og R-venlig grafplottemotor stærkt alle de mangler, den i øjeblikket har.

Hvis du vil lave statiske grafer til dataudforskning, er ggplot2 et modent bibliotek med masser af seje funktioner og med et sundt brugerfællesskab og masser af ressourcer at lære af.

Filosofien bag begge pakker er ens, så færdighederne kan overføres ganske let fra en pakke til en anden.

Svar

R-samfundet fortsætter med at komme med nye (og ofte overlappende) pakker af forskellige årsager:

1) Nogen ønsker at ændre noget eller tilføje noget, der ikke er tilgængeligt i en eksisterende pakke, men meget af det overlapper hinanden (derfor mange pakker, der gør regression)

2) Nogen skriver en pakke som en opgave

3) At skrive pakker er sjovt (hvis du kan lide den slags ting)

4) De ved ikke, at den originale pakke eksisterer

Kommentarer

  • Med hensyn til det specifikke eksempel og dit punkt 4: ggvis er skrevet af de samme personer som ggplot2. Det vigtige punkt her er, at brugen af ggplot2 er så bredt spredt, at det er blevet umuligt at implementere ændringer uden at bryde en masse eksisterende kode / afhængige pakker.
  • Er denne form for genopfindelse af allerede eksisterende pakke bestemt til ske ligesom økonomiske recessioner i kapitalismesamfund?
  • @Peter: Som outsider til R synes dette for mig som en fair kommentar, men (mest usædvanligt) behøver du ikke ‘ t besvare spørgsmålet!
  • @NickCox Jeg besvarede et af de spørgsmål, der er i spørgsmålet. :-).
  • @ Peter Meget retfærdigt punkt. En krydsreference til stats.stackexchange.com/questions/58966/… er efter min mening relevant derfor.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *