Czy w przypadku kreślenia za pomocą języka R powinienem uczyć się ggplot2 czy ggvis? Niekoniecznie chcę uczyć się obu, jeśli jeden z nich jest lepszy pod jakimkolwiek względem. Dlaczego społeczność R ciągle tworzy nowe pakiety z nakładającymi się funkcjami? wpis na blogu nie wspomina ani słowa, dlaczego utworzono ggvis, biorąc pod uwagę, że istnieje już zaawansowany pakiet kreślenia ggplot2.

Komentarze

  • ggvis to zupełnie inny zestaw ryb . Prawdziwa alternatywa to między ggplot a kratownicą .
  • Myślę, że odpowiedź zależy od tego, co ' re after. Jeśli ' szukasz statycznych wykresów zaawansowanych, ' chcesz się uczyć ggplot2. W przypadku wizualizacji w Internecie rozważ ggvis.

Odpowiedź

Zacznij od ggplot2. Tworzy statyczne wykresy.

Oprócz wykresów statycznych, ggvis może być również używany do tworzenia interaktywnych wykresów. nauczyłeś się składni ggplot2, wtedy składnia dodawania interaktywności do tworzenia wykresów ggivs będzie przebiegać naturalnie.

Komentarze

  • To jest niedokładne (być może był poprawny w momencie pisania). ggvis zdecydowanie można wykorzystać do tworzenia wykresów statycznych. Fakt, że umożliwia również tworzenie interaktywnych fabuł, jest cechą, a nie ograniczeniem. Jeden prosty przykład statycznego wykresu: library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))

Odpowiedź

Chcę nieco rozwinąć odpowiedź Dianne Cook. Jak powiedziała, ggplot2 służy do tworzenia wykresów statycznych, ggvis do wykresów interaktywnych. Ma to kilka konsekwencji:

Typ pliku Wyjście ggvis to HTML, w tym pliki CSS i javascript. Ggvis nie wyświetla w naturalny sposób zwykłych plików graficznych. Ggplot2 generuje zwykłe obrazy, które mogą następnie być osadzone w formacie HTML, pdf, gif, przesłane e-mailem, lub cokolwiek innego. ggvis, jeśli chcesz wysłać plik e-mailem, „ponownie spakuj katalog plików HTML do przeglądania w przeglądarce.

Animacja Konsekwencją tego jest to, że jeśli chcesz utworzyć animację, możesz klatki w ggplot2 i scal je, ale nie ma naturalnego sposobu na zrobienie tego z ggvis. ggvis działając interaktywnie będzie animować „na żywo”, ale są to różne rodzaje animacji. Jeśli na klatkę dzieje się więcej niż ggvis może przetworzyć , nie można tego obejść (przynajmniej w naturalny sposób), generując obrazy i tworząc film w tle. Podobnie, użytkownik nie może pobrać filmu lub pliku gif z ggvis do ponownego odtworzenia.

W tej chwili w moim obecnym projekcie przełączyłem się z ggplot2 na ggvis, ponieważ ggplot2 był o wiele za wolny, aby animować interaktywnie. Ale chciałbym też, żeby użytkownik, po zabawie z ustawieniami, mógł kliknąć „Idź” i pobrać płynnie animowany film o pełnej szybkości. Nie wiem, jak to zrobić za pomocą ggvis, ale byłoby to ciasto przy użyciu ggplot2.

Szybkość ggvis jest dużo, dużo, dużo szybszy niż ggplot2, zwłaszcza przy zmianie danych. Każdy wykres ggplot2 ma sekundę lub kilka opóźnień. ggvis ma sekundę lub więcej, kiedy tworzysz wykres po raz pierwszy, po czym zmiana danych przebiega bezproblemowo – ggvis może być „reaktywnie” łączony z danymi, więc aktualizuje się samoczynnie za każdym razem, gdy dane ulegną zmianie. Dzięki ggplot2 cała fabuła zostanie przerysowana.

Styl & Wygląd Wykresy ggplot2 wydają się trochę ładniejszy, na pierwszy rzut oka, niż działki ggvis. Działki ggplot2 są dość eleganckie. Działki ggvis są prostsze, ale rosną na mnie. Istnieją również rozszerzenia dla ggplot2, takie jak pakiety xkcd i wesanderson, w których nie ma odpowiednika dla ggvis. Wykresy ggplot2 wyglądają tak, jakby były wykonane przez tę samą osobę (autora ggplot2) i po chwili się to męczy.

Kompletność Istnieją typy wykresów, które możesz utworzyć w ggplot2, których ggvis nie obsługuje, przynajmniej jak dotąd. Na przykład nie ma elementu wykresu „dywan” w ggvis. Widziałem jeden lub dwa kartogramy, które zostały wykonane za pomocą ggvis, ale nie ma jeszcze wbudowanego naturalnego wsparcia. Ggplot2 ma współrzędne biegunowe (tj. Wykresy kołowe) , ggvis nie. Brakuje również w ggvis (i dostępne w ggplot2 lub w rozszerzeniu ggplot2): wykresy pudełkowe; wykresy konturowe; naturalne mapy cieplne; wykresy korelacji naturalnych; wykresy punktowe; wykresy skrzypcowe; wykresy sieciowe; dendrogramy. bardzo sprytni ludzie mogą to wszystko stworzyć w ggvis, ale ja nie jestem taki sprytny.

Adnotacje ggplot2 ma bardzo fajny, być może niedostatecznie wykorzystywany, framework do adnotacji, ggvis nie.

Podploty & Aspekty ggplot2 ma bardzo ładny , ale może raczej ograniczona, „fasetująca” funkcja. Możesz także łączyć wiele wykresów ggplot2 za pomocą pakietu grid. Na razie nie możesz tego zrobić z ggvis. Wykresów ggvis nie można łączyć w jeden obraz (ponieważ nie są one obrazami, są one „ponownie aktywnymi” stronami internetowymi) i nie obsługuje on żadnego rodzaju facetingu ani podplotu. To powinno być w przygotowaniu.

Elastyczność wizualna ggplot2 chce, aby każda fabuła wyglądała tak samo, co oznacza, że autor woli stylistycznie. nie ma możliwości, na przykład, aby mieć wykres z wieloma osiami y w ggplot2. ggvis can. ggvis jest dużo bardziej elastyczny niż ggplot2. O wiele łatwiej jest robić takie rzeczy, jak ukrywanie legend, łączenie wielu legend w jedną, używanie różnych skal dla różnych rzeczy na tej samej działce itp.

Głębokie możliwości dostosowywania Jeśli chcesz utworzyć, powiedzmy, nowa sprytna skala, nie jest to zbyt trudne do zrobienia w ggplot2 (chociaż jest to dość zagmatwane). Po prostu nie wydaje się, aby był sposób na zrobienie tego w ggvis. Może po prostu jeszcze nie.

Szeregi czasowe ggplot2 nie lubi rysować szeregów czasowych. może , ale nie chce . Właściwie żadne z nich nie chce; obaj nalegają na wprowadzenie danych do data.frame i nie mogą xts lub obiekty zoo. Nie mają też wbudowanych funkcji do wycinania szeregów czasowych, ale ggvis nie walczy z szeregami czasowymi tak mocno, jak ggplot2. Dzieje się tak częściowo dlatego, że przypuszczam, że aktualizacja danych na wykresie ggvis jest tak szybka. Jeśli chcesz wykreślić serię czasową, będziesz musiał pokonać którekolwiek z nich, aby poddać się, ale ggvis jest o wiele mniej pasywno-agresywny .

Czy mają tę samą składnię? Coś w rodzaju … Jest między nimi wiele wspólnego , a nauczenie się myślenia w stylu jednego pomoże dostosować się do stylu drugiego. W szczególności oba są zaprojektowane tak, aby wszystkie wywołania kreślenia były ze sobą połączone w jednej linii Główną zaletą tego jest to, że sprawia, że debugowanie i profilowanie jest naprawdę trudne i zasadniczo sprawia, że funkcje debugowania / profilowania w rzeczach takich jak Rstudio są bezużyteczne. Poza tym są one zupełnie inne pod względem składniowym. Niektóre rzeczy trudne w ggplot2 są łatwe w ggvis. Niektóre rzeczy, które są łatwe w ggplot2, są niemożliwe w ggvis. I wzajemnie. (Wolę trochę sposób, w jaki ggvis robi rzeczy, co jest dla mnie łatwiejsze do zrozumienia).

Błędy ggvis wciąż ma sporo. Czasami zachowuje się po prostu dziwnie. Czasami jednak wątki losowo znikają z powodów, których obejście zajmuje wiele godzin i nie ma sensu. Deweloperzy przyznają to swobodnie, ggvis nie jest jeszcze gotowy do produkcji. Jeśli masz do czynienia z jakąkolwiek złożonością, nie odkryjesz, że nie żartują.

Podsumowanie: Nauka średniozaawansowanego kreślenia za każdym razem zajmuje około 16 godzin. Tak więc, realistycznie rzecz biorąc, „prawdopodobnie nauczysz się obu.

Komentarze

  • Świetne porównanie
  • Co to jest szybszy ggvis, krata czy rgl? (dla dużych zbiorów danych)
  • +1 fantastyczny napisz. Zgadzam się ze wszystkim tutaj na podstawie moich dotychczasowych doświadczeń z oboma.
  • Witaj, a co z ggvis vs rcharts?
  • TIME SERIES: ggplot2 ostatecznie wygrywa dzięki rozszerzeniu ggfortify. Zobacz tę doskonałą dokumentację na ten temat: rpubs.com/sinhrks/basics .

Odpowiedź

Myślę, że komunikat pojawiający się po library(ggvis) nie wymaga objaśnień:

Interfejs API ggvis obecnie szybko się rozwija. Zdecydowanie zalecamy, aby nie polegać na tym podczas produkcji, ale zachęcamy do odkrywania. Jeśli napotkasz wyraźny błąd, prześlij minimalny odtwarzalny przykład pod adresem https://github.com/rstudio/ggvis/issues . W przypadku pytań i innych dyskusji użyj https://groups.google.com/group/ggvis .

W porównaniu do ggplot2 ggvis wciąż nie ma niektórych funkcji i polerowania (nie ma możliwości dodania tytułu do wykresu, na przykład tytuły osi nakładają się na etykiety znaczników, a jest ich więcej, fasetowanie nie jest obsługiwane itp.) z drugiej strony składnia ggvis wydaje się nieco czystsza, a interaktywność jest naprawdę niesamowita.

Z własnego doświadczenia wiem, że ggvis jest koniecznością, jeśli tworzysz błyszczącą aplikację. W takim przypadku korzyści wynikające z posiadania silnika do tworzenia wykresów przyjaznego dla sieci i języka R znacznie przewyższają wszelkie obecne niedociągnięcia.

Jeśli chcesz tworzyć statyczne wykresy do eksploracji danych, ggplot2 jest dojrzałą biblioteką z wieloma fajnymi funkcjami, zdrową społecznością użytkowników i wieloma zasobami, z których można się uczyć.

Filozofia stojąca za obydwoma pakietami jest podobna, więc umiejętności można łatwo przenosić z jednego pakietu do drugiego.

Odpowiedź

Społeczność języka R wymyśla nowe (i często nakładające się) pakiety z różnych powodów:

1) Ktoś chce coś zmienić lub dodać coś, co nie jest dostępne w istniejącym pakiecie, ale wiele z tego się nakłada (stąd wiele pakietów wykonujących regresję)

2) Ktoś pisze pakiet jako przypisanie

3) Pisanie pakietów jest fajne (jeśli lubisz takie rzeczy)

4) Nie wiedzą, że oryginalny pakiet istnieje

Komentarze

  • Odnośnie konkretnego przykładu i twojego punktu 4: ggvis jest autorstwa tych samych ludzi co ggplot2. Ważną kwestią jest to, że użycie ggplot2 jest tak rozpowszechnione, że stało się niemożliwe wprowadzenie zmian bez zerwania wielu istniejących kodów / pakietów zależnych.
  • Czy ten rodzaj ponownego wynalezienia wcześniej istniejącego pakietu jest przeznaczony do zdarzają się tak jak recesje gospodarcze w społeczeństwach kapitalizmu?
  • @Peter: Jako osoba z zewnątrz R wydaje mi się to uczciwy komentarz, ale (najbardziej niezwykłe) nie ' t odpowiedz na pytanie!
  • @NickCox Odpowiedziałem na jedno z pytań zawartych w pytaniu. :-).
  • @Peter Bardzo słuszna uwaga. Dlatego uważam, że odniesienie do stats.stackexchange.com/questions/58966/… jest odpowiednie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *