Az R-vel való ábrázoláshoz meg kellene tanulnom a ggplot2-t vagy a ggvis-t? Nem feltétlenül akarom megtanulni mindkettőt, ha egyikük bármilyen szempontból kiválóbb. Miért készít az R közösség folyamatosan új, átfedésben lévő funkciókat tartalmazó csomagokat? A bevezető blogbejegyzés egy szót sem említ, miért jön létre a ggvis, mivel már létezik egy kifinomult ggplot2 ábrázoló csomag.

Megjegyzések

  • A ggvis egy teljesen más halak . Az igazi alternatíva a ggplot és a rács között van.
  • Szerintem a válasz attól függ, mit ‘ re után. Ha ‘ statikus haladó ábrákat keres, ‘ meg akarja tanulni ggplot2. A webes megjelenítéshez vegye figyelembe a következőt: ggvis.

Válasz

Kezdje a ggplot2-vel. Statikus ábrákat hoz létre.

A statikus ábrákon kívül a ggvis használható interaktív plotok létrehozására is. Megtanulta a ggplot2 szintaxisát, majd az interaktivitás hozzáadásának szintaxisa a ggivs diagramok létrehozásához természetesen követni fogja.

Megjegyzések

  • Ez pontatlan (talán az írás idején pontos volt). A ggvis feltétlenül használható statikus ábrák létrehozására. Az a tény, hogy interaktív cselekményeket is lehetővé tesz, jellemző, nem korlátozás. Egy egyszerű példa a statikus cselekményre: library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))

Válasz

Kicsit szeretnék kibővíteni Dianne Cook válaszát. Mint mondta, a ggplot2 a statikus ábrák létrehozására szolgál, a ggvis az interaktív parcellákra. Ennek egy csomó következménye van:

A fájl típusa A ggvis kimenet HTML, amely CSS és javascript fájlokat tartalmaz. A ggvis természetesen nem hoz létre normál képfájlokat. A ggplot2 közönséges képeket ad ki, amelyek aztán beágyazva HTML-be vagy pdf-be, vagy gif-be, vagy e-mailben, vagy bármi másba. ggvis, ha el akarja küldeni a fájlt e-mailben, akkor egy böngészőben megtekinthető HTML-fájlok könyvtárát tárolja.

Animáció Ennek következménye, hogy ha animációt akar létrehozni, akkor elkészítheti a keretek a ggplot2-ben, és egyesítik őket, de erre nincs természetes módszer a ggvis-szel. Az interaktívan működő ggvis élőben fogja éltetni, de ezek különféle animációk. Ha kockánként több történik, mint amennyit a ggvis képes feldolgozni , ezt nem lehet megkerülni (legalábbis természetes módon) a képek előállításával és a film elkészítésével a háttérben. Hasonlóképpen, a felhasználó nem tud filmet vagy gif fájlt letölteni a ggvis-ből az ismétléshez.

Jelenlegi projektemben most ggplot2-ről ggvis-re váltottam, mert a ggplot2 túl lassú volt az interaktív animációhoz. De azt is szeretném, ha a felhasználó a beállításokkal való játék után rákattinthat a “menj” gombra, és letölthet egy teljes sebességű, sima animációs filmet arról, amit tett. Nem jöttem rá, hogyan kell ezt megtenni ggvis, de sütemény lenne a ggplot2 használatával.

A sebesség A ggvis sokkal-sokkal, de sokkal gyorsabb, mint a ggplot2, különösen az adatok megváltoztatásakor. Minden ggplot2 ábrának van egy vagy néhány késleltetése. A ggvis-nek van körülbelül egy másodperce, amikor először létrehozza a diagramot, ezt követően az adatok megváltoztatása zökkenőmentes – a ggvis “reaktívan” összekapcsolható az adatokkal, így frissíti magát, amikor az adatok megváltoznak. A ggplot2 segítségével az egész cselekmény újrafogalmazódik.

Stílus & Megjelenés ggplot2 ábrák kissé tűnnek első pillantásra szebb, mint a ggvis-cselekmények. A ggplot2 ábrák elég elegánsak. A ggvis-parcellák egyszerűbbek, de rajtam nőnek. A ggplot2-nek vannak kiterjesztései is, például az xkcd és a wesanderson csomagok, ahol nincs analóg elem a ggvis számára. A ggplot2 ábrák mind úgy néznek ki, mintha ugyanazon személy (a ggplot2 szerzője) készítette volna őket, és ez egy idő után elfárad.

Teljesség Vannak olyan telektípusok, amelyeket létrehozhat a ggplot2-ben, amelyeket a ggvis legalább nem támogat eddig. Például a ggvis-ben nincs “szőnyeg” plot elem. Láttam egy vagy két gorvis-szal készült koropletet, de még nincs természetes beépített támogatás. A ggplot2 polárkoordinátákkal rendelkezik (azaz kördiagramokkal). , a ggvis nem. A ggvis-ből szintén hiányzik (és elérhető akár ggplot2-ben, akár ggplot2 kiterjesztésben): dobozdiagramok; kontúr-ábrák; természetes hőtérképek; természetes korrelációs táblázatok; dotplot-ok; hegedű-parcellák; hálózati ábrák; dendrogramok. Természetesen “biztos vagyok” néhány nagyon okos ember mind ezeket létrehozhatja a ggvis-ben, de én nem vagyok olyan okos.

Kommentárok A ggplot2 nagyon szép, talán alulhasznált annotációs keretrendszerrel rendelkezik, a ggvis nem.

Részterületek & Facets ggplot2 nagyon szép , de talán meglehetősen korlátozott, “faceting” funkció. A rácscsomag segítségével több ggplot2 ábrát is kombinálhat. Mostantól egyiket sem teheti meg a ggvis-sel. A ggvis-ábrákat nem lehet egyetlen képpé egyesíteni (mert nem képek, hanem “élő” weboldalak), és ez nem támogat semmiféle facetinget vagy alsablont. Állítólag ez folyamatban van.

Vizuális rugalmasság A ggplot2 azt akarja, hogy minden cselekmény ugyanúgy nézzen ki, ami azt jelenti, mintha a szerző stílusosan kedvelné. semmiképp például, ha több y tengellyel rendelkező grafikon van a ggplot2-ben. A ggvis can. ggvis sokkal rugalmasabb, mint a ggplot2. Sokkal könnyebb olyan dolgokat végrehajtani, mint a legendák elrejtése, több legendának az egyesítése, a különböző skálák használata a különböző ugyanazon a telken lévő dolgok stb.

Mély testreszabhatóság Ha létrehozni szeretne, mondjon egy új okos skála, nem túl nehéz ezt megtenni a ggplot2-ben (bár eléggé zavaros). Úgy tűnik, hogy a ggvis-ben nem sok minden lehetséges. Talán még nem.

Idősor A ggplot2 nem szereti ábrázolni az idősorokat. nem tud, de nem akar t. Valójában egyikük sem akarja; mindkettő ragaszkodik ahhoz, hogy az adatokat betöltsék egy data.frame-be, és nem tudják kezelni xts vagy állatkert objektumok. Az idősorok feldarabolásához nincsenek beépített funkcióik sem. De a ggvis nem harcol vissza olyan idősorokkal, mint a ggplot2. Ez részben azért van, mert feltételezem, hogy olyan gyorsan frissíti az adatokat egy ggvis-ábrán. Ha egy olyan sorozatokat akar felrajzolni, akkor be kell vetnie valamelyiket, de a ggvis sokkal kevésbé passzív-agresszív ebben .

Ugyanaz a szintaxis? Rendezés … Sok közös van közöttük , és a gondolkodás nak az egyik stílusának megtanulása segít alkalmazkodni a másik stílusához. Különösen mindkettőt úgy terveztük meg, hogy az összes vonalvezetési hívás egyetlen vonalban kerüljön egymásba. kód. Ennek elsődleges előnye, hogy nagyon megnehezíti a hibakeresést és a profilalkotást, és alapvetően használhatatlanná teszi az olyan dolgok hibakeresését / profilozását, mint az Rstudio. Ezen kívül szintaktikailag egészen mások. Néhány dolog, ami nehéz a ggplot2-ben, könnyű a ggvis-ben. Néhány dolog, ami a ggplot2-ben egyszerű, a ggvis-ben lehetetlen. És fordítva. (Kicsit előnyben részesítem a ggvis dolgainak módját, amit könnyebben megértek.)

Hibák ggvis még mindig van elég sok. Néha csak furcsán viselkedik. Néha azonban a cselekmények véletlenszerűen eltűnnek olyan okok miatt, amelyek órákig tartanak, és nagyon kevés értelme van. A fejlesztők ezt szabadon elismerik, a ggvis még nem áll készen a gyártásra. Ha bármilyen összetettséggel foglalkozik, akkor rájössz , hogy nem viccelnek.

A lényeg: A köztes ábrázolás megtanulása mindegyikben körülbelül 16 órát vesz igénybe. Tehát reálisan valószínűleg mindkettőt megtanulja.

Megjegyzések

  • Nagyszerű összehasonlítás
  • Mi a gyorsabb ggvis vagy rács vagy rgl? (nagy adatkészletekhez)
  • +1 fantasztikus írás. Mindkettővel egyetértek az eddigi tapasztalataim alapján.
  • Helló, mi van a ggvis vs rcharts-szal?
  • IDŐSOROK: A ggplot2 véglegesen nyer a ggfortify bővítéssel. Lásd erről a kiváló dokumentációt: rpubs.com/sinhrks/basics .

Válasz

Úgy gondolom, hogy a library(ggvis) után megjelenő üzenet magától értetődő:

A ggvis API jelenleg gyorsan fejlődik. Nyomatékosan javasoljuk, hogy a gyártás során ne támaszkodjon erre, hanem bátran fedezze fel. Ha egyértelmű hibával találkozik, kérjük, nyújtson be minimálisan reprodukálható példát a https://github.com/rstudio/ggvis/issues címen. Kérdésekhez és egyéb megbeszélésekhez kérjük, használja a következőt: https://groups.google.com/group/ggvis .

A ggplot2-hez képest a ggvis még mindig hiányzik néhány funkciótól és csiszolástól (például nem lehet címet hozzáadni egy grafikonhoz, a tengelyek címei átfedésben vannak a kullancscímkékkel, és vannak ennél több, a fazettázás nem támogatott stb.) másrészt a ggvis szintaxisa kissé tisztábbnak tűnik, és az interaktivitás nagyon fantasztikus.

Saját tapasztalatom alapján a ggvis elengedhetetlen, ha fényes alkalmazást építesz. Ekkor a webes és R-barát grafikontervező motor előnyei jelentősen felülmúlják a jelenleg meglévő hiányosságokat.

Ha statikus grafikonokat szeretne készíteni az adatfeltáráshoz, akkor a ggplot2 egy kiforrott könyvtár, sok jó funkcióval, egészséges felhasználói közösséggel és rengeteg erőforrással, amelyekből tanulhat.

Mindkét csomag filozófiája hasonló, így a készségek meglehetősen könnyen átvihetők egyik csomagból a másikba.

Válasz

Az R közösség számos okból folyamatosan új (és gyakran átfedő) csomagokkal áll elő:

1) Valaki módosítani akar valamit, vagy hozzáadni valamit, ami nem áll rendelkezésre egy meglévő csomagban, de nagy része átfedi egymást (ezért sok csomag visszafejlődik)

2) Valaki ír csomag feladatként

3) A csomagok írása szórakoztató (ha tetszik ilyesmi)

4) Nem tudják, hogy létezik az eredeti csomag

Megjegyzések

  • A konkrét példával és a 4. ponttal kapcsolatban: a ggvis-t ugyanazok írják, mint a ggplot2-t. A fontos pont itt az, hogy a ggplot2 használata annyira elterjedt, hogy lehetetlenné vált a változtatások végrehajtása anélkül, hogy sok meglévő kódot / függő csomagot megszakítanánk.
  • A már létező csomagok ilyenfajta újrafeltalálása célja az, hogy ugyanúgy történhet, mint a gazdasági recesszió a kapitalista társadalmakban?
  • @Peter: R kívülállóként ez számomra igazságos megjegyzésnek tűnik, de (a legszokatlanabb módon) nem ‘ t válaszoljon a kérdésre!
  • @NickCox válaszoltam a kérdésben szereplő egyik kérdésre. :-).
  • @Peter Nagyon korrekt pont. A stats.stackexchange.com/questions/58966/… kereszthivatkozás ezért szerintem releváns.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük