För att plotta med R, ska jag lära mig ggplot2 eller ggvis? Jag vill inte nödvändigtvis lära mig båda om någon av dem är överlägsen i något avseende. Varför fortsätter R-communityn att skapa nya paket med överlappande funktioner? introduktionsbloggen nämner inte ett ord varför ggvis skapas med tanke på att det redan finns ett sofistikerat plottpaket ggplot2.
Kommentarer
Svara
Börja med ggplot2. Det skapar statiska diagram.
Förutom statiska diagram kan ggvis också användas för att skapa interaktiva diagram. En gång y Du har lärt dig syntaxen för ggplot2, då kommer syntaxen för att lägga till interaktivitet för att skapa ggivs-plottar att följa naturligt.
Kommentarer
- Detta är felaktigt (kanske det var korrekt i skrivande stund). ggvis kan definitivt användas för att skapa statiska diagram. Det faktum att det också möjliggör interaktiva tomter är en funktion, inte en begränsning. Ett enkelt exempel på en statisk plot:
library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))
Svar
Jag vill utöka lite på Dianne Cooks svar. Som hon sa, ggplot2 är för att skapa statiska plottar, ggvis är för interaktiva plottar. Det finns en massa konsekvenser för det:
Filtyp ggvis-utdata är HTML inklusive CSS- och javaskriptfiler. Ggvis matar inte naturligt ut vanliga bildfiler. Ggplot2 matar ut vanliga bilder som sedan vara inbäddad i HTML eller pdf eller gif eller e-post, eller vad som helst. ggvis, om du vill skicka filen, zippar du upp en katalog med HTML-filer som ska visas i en webbläsare.
Animering En konsekvens av det är att om du vill skapa en animering kan du göra ramar i ggplot2 och slå ihop dem, men det finns inget naturligt sätt att göra detta med ggvis. ggvis agerar interaktivt kommer att animera ”live”, men det här är olika typer av animationer. Om det sker mer per ram än ggvis kan bearbeta , du kan inte kringgå det (åtminstone på ett naturligt sätt) genom att generera bilderna och göra filmen i bakgrunden. På samma sätt kan användaren inte ladda ner en film eller gif-fil från ggvis för att spela upp igen.
Just nu i mitt nuvarande projekt bytte jag från ggplot2 till ggvis eftersom ggplot2 var alldeles för långsam för att animera interaktivt. Men jag skulle också vilja att användaren, efter att ha lekt med inställningarna, kunde klicka på ”gå” och ladda ner en film med full hastighet, smidig animering av vad de gjorde. Jag har inte tänkt ut hur man gör det med ggvis, men det skulle vara tårta med ggplot2.
Hastighet ggvis är mycket, mycket, mycket snabbare än ggplot2, särskilt när du ändrar data. Varje ggplot2-plot har en sekund eller några fördröjningar. ggvis har en sekund eller så när du först skapar plottet, efter att ändring av data är sömlös – ggvis kan ”reaktivt” länkas till data så att den uppdaterar sig själv när data ändras. Med ggplot2 kommer hela tomten att dras om.
Stil & Utseende ggplot2-tomter verkar lite trevligare vid första anblicken än ggvis-tomter. ggplot2-tomter är ganska eleganta. ggvis tomter är enklare, men de växer på mig. Det finns också tillägg för ggplot2, som xkcd- och wesanderson-paketen, där det inte finns någon analog för ggvis. Ggplot2-tomter ser alla ut som om de gjordes av samma person (författaren till ggplot2) och det blir trött efter ett tag.
Fullständighet Det finns plottyper du kan skapa i ggplot2 som ggvis inte stöder, åtminstone än så länge. Till exempel finns det inget ”matta” plotelement i ggvis. Jag har sett en eller två koropleter som gjordes med ggvis, men det finns inget naturligt inbyggt stöd ännu. Ggplot2 har polära koordinater (dvs. cirkeldiagram) , ggvis inte. Saknas också från ggvis (och finns antingen i ggplot2 eller i en ggplot2-förlängning): boxplottar; konturplottar; naturliga värmekartor; naturliga korrelationstabeller; dotplottar; fiolplottar; nätverksplottor; dendrogram. Naturligtvis är jag säker några mycket smarta människor kan skapa alla dessa i ggvis, men jag är inte så smart.
Kommentarer ggplot2 har en mycket trevlig, kanske underutnyttjad, annoteringsram. ggvis inte.
Delplott & Facetter ggplot2 har en mycket trevlig , men kanske ganska begränsad, ”facetterande” funktion. Du kan också kombinera flera ggplot2-tomter med hjälp av rutnätpaketet. Från och med nu kan du inte göra något med ggvis. ggvis-ritningar kan inte kombineras till en enskild bild (eftersom de inte är bilder, de ”återupplivar” webbsidor) och det stöder inte någon form av fasettering eller delplanering. Detta är tänkt att vara i rörledningen.
Visuell flexibilitet ggplot2 vill att varje plot ser likadant ut, vilket betyder att författaren föredrar stilistiskt. inget sätt, till exempel, att ha en plot med flera y-axlar i ggplot2. ggvis kan. ggvis är mycket mer flexibel än ggplot2. Det är mycket lättare att göra saker som att dölja legender, kombinera flera legender i en, använda olika skalor för olika saker på samma tomt etc.
Djup anpassningsbarhet Om du vill skapa, säg, en ny smart skala, det är inte för svårt att göra det i ggplot2 (även om det är ganska förvirrande). Det verkar bara inte vara ett sätt att göra mycket av det i ggvis. Kanske är det bara inte ännu.
Tidsserier ggplot2 gillar inte att plotta tidsserier. Det kan , men det vill inte . Egentligen vill ingen av dem; båda insisterar på att matas in data i en data.frame, och de kan inte hantera xts eller zooobjekt. De har inte inbyggda funktioner för att skära en tidsserie heller. Men ggvis kämpar inte mot tidsserierna lika hårt som ggplot2. Det beror delvis på att det är så snabbt att uppdatera data i en ggvis-plot, antar jag. Om du vill plotta en tidsserie måste du slå endera för att lämna in, men ggvis är mycket mindre passiv-aggressiv om det .
Är de samma syntax? Slag … Det är mycket gemensamt mellan dem och att lära sig att tänka i stil med den ena kommer att hjälpa till att anpassa sig till stilen hos den andra. I synnerhet är båda utformade så att alla plottningsanrop rörs in i varandra på en enda rad kod. Den primära fördelen med detta är att det gör felsökning och profilering riktigt svårt, och gör i princip felsöknings- / profileringsfunktionerna i saker som Rstudio värdelösa. Förutom det är de syntaktiskt helt annorlunda. Vissa saker som är svåra i ggplot2 är enkla i ggvis. Några saker som är lätta i ggplot2 är omöjliga i ggvis. Och vice versa. (Jag har lite preferens för hur ggvis gör saker, vilket jag tycker är lättare att förstå.)
Fel ggvis har fortfarande en hel del. Ibland beter det sig konstigt. Ibland försvinner dock tomter slumpmässigt av skäl som tar timmar att arbeta runt och ger mycket liten mening. Utvecklarna erkänner detta fritt, ggvis är inte produktionsklar än. Om du hanterar någon komplexitet kommer du att upptäcka att de inte skojar.
Slutsatsen: Att lära sig mellanliggande plottning i var och en tar ungefär 16 timmar. Så realistiskt kommer du troligen att lära dig båda.
Kommentarer
- Bra jämförelse
- Vad är snabbare ggvis eller gitter eller rgl? (för stora datamängder)
- +1 fantastisk uppskrivning. Jag håller med om allt här baserat på mina erfarenheter med båda hittills.
- Hej, hur är det med ggvis vs rcharts?
- TIDSSERIER: ggplot2 vinner definitivt med expansionen ggfortify. Se den här utmärkta dokumentationen om det: rpubs.com/sinhrks/basics .
Svar
Jag tror att meddelandet som visas efter library(ggvis)
är självförklarande:
API för ggvis utvecklas för närvarande snabbt. Vi rekommenderar starkt att du inte litar på detta för produktion, utan gärna utforska. Om du stöter på ett tydligt fel, vänligen skicka in ett minimalt reproducerbart exempel på https://github.com/rstudio/ggvis/issues . För frågor och andra diskussioner, använd https://groups.google.com/group/ggvis .
Jämfört med ggplot2 saknar ggvis fortfarande vissa funktioner och polska (inget sätt att lägga till titel i en graf, till exempel axeltitlar överlappande med kryssetiketter, och det finns mer, facettering stöds inte, etc.) På andra sidan känns ggvis-syntaxen lite renare, och interaktivitet är riktigt fantastisk.
Enligt min egen erfarenhet är ggvis ett måste om du bygger en blank app. Då överväger fördelarna med att ha en webb- och R-vänlig grafritningsmotor kraftigt alla brister som den för närvarande har.
Om du vill göra statiska grafer för datautforskning är ggplot2 ett moget bibliotek med massor av coola funktioner och med en hälsosam användare av användare och massor av resurser att lära av.
Filosofin bakom båda paketen är liknande, så färdigheterna kan överföras ganska enkelt från ett paket till ett annat.
Svar
R-gruppen fortsätter att komma med nya (och ofta överlappande) paket av olika anledningar:
1) Någon vill ändra något eller lägga till något som inte är tillgängligt i ett befintligt paket, men mycket av det överlappar varandra (alltså många paket som gör regression)
2) Någon skriver en paket som uppgift
3) Att skriva paket är roligt (om du gillar den typen av saker)
4) De vet inte att originalpaketet finns
Kommentarer
- När det gäller det specifika exemplet och din punkt 4: ggvis är skapad av samma personer som ggplot2. Den viktiga punkten här är att användningen av ggplot2 är så vidsträckt att det har blivit omöjligt att genomföra ändringar utan att bryta en hel del befintliga kod / beroende paket.
- Är denna typ av återuppfinning av befintligt paket avsedd att hända precis som ekonomiska lågkonjunkturer i kapitalismssamhällen?
- @Peter: Som en outsider till R verkar detta för mig som en rättvis kommentar men (mest ovanligt) du don ' t svara på frågan!
- @NickCox Jag svarade på en av frågorna i frågan. :-).
- @Peter Mycket rättvis poäng. En korsreferens till stats.stackexchange.com/questions/58966/… tycker jag är relevant därför.
ggplot2
. För webbvisualisering, övervägggvis
.