Czy podczas pisania z R powinienem nauczyć się ggplot2 lub ggvis? Niekoniecznie chcę się uczyć obu, jeśli jeden z nich jest pod każdym względem lepszy. Dlaczego społeczność R wciąż tworzy nowe pakiety z nakładającymi się funkcjami? W blogu wprowadzającym nie wspomniano ani słowa o tym, dlaczego ggvis jest tworzony, skoro istnieje już wyrafinowany pakiet kreślarski ggplot2.
r
data-visualization
software
qazwsx
źródło
źródło
ggplot2
. W przypadku wizualizacji internetowej rozważggvis
.Odpowiedzi:
Zacznij od ggplot2. Tworzy wykresy statyczne.
Oprócz wykresów statycznych, ggvis może być również używany do tworzenia wykresów interaktywnych. Gdy nauczysz się składni ggplot2, wówczas składnia dodawania interaktywności w celu utworzenia wykresów ggivs będzie przebiegać naturalnie.
źródło
library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))
Chcę trochę rozwinąć odpowiedź Dianne Cook. Jak powiedziała, ggplot2 służy do tworzenia wykresów statycznych, ggvis służy do wykresów interaktywnych. Istnieje wiele implikacji:
Typ pliku Dane wyjściowe ggvis to HTML, w tym pliki CSS i javascript. ggvis w naturalny sposób nie generuje zwykłych plików obrazów. ggplot2 generuje zwykłe obrazy, które można następnie osadzić w HTML, pdf, gif lub e-mailem lub cokolwiek innego. ggvis, jeśli chcesz wysłać plik pocztą e-mail, rozpakowujesz katalog plików HTML do przeglądania w przeglądarce.
Animacja Konsekwencją tego jest to, że jeśli chcesz utworzyć animację, możesz tworzyć ramki w ggplot2 i łączyć je, ale nie ma naturalnego sposobu, aby to zrobić za pomocą ggvis. Interaktywne działanie ggvis będzie animować „na żywo”, ale są to różne rodzaje animacji. Jeśli na klatkę dzieje się więcej, niż może przetworzyć ggvis, nie możesz 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 odtworzenia.
Obecnie w moim obecnym projekcie przerzuciłem się z ggplot2 na ggvis, ponieważ ggplot2 był o wiele za wolny, by animować interaktywnie. Ale chciałbym również, aby użytkownik po zabawie ustawieniami mógł kliknąć „idź” i pobrać film z pełną szybkością i płynną animacją tego, co zrobił. Nie wymyśliłem, jak to zrobić za pomocą ggvis, ale byłoby to ciasto przy użyciu ggplot2.
Szybkość ggvis jest znacznie, dużo, znacznie większa niż ggplot2, szczególnie przy zmianie danych. Każdy wykres ggplot2 ma drugie lub kilka opóźnień. ggvis ma sekundę po utworzeniu wykresu, po czym zmiana danych przebiega bezproblemowo - ggvis może być „reaktywnie” powiązany z danymi, dzięki czemu aktualizuje się za każdym razem, gdy dane się zmieniają. W przypadku ggplot2 cała fabuła zostanie przerysowana.
Styl i wygląd Wykresy ggplot2 na pierwszy rzut oka wydają się nieco ładniejsze niż wykresy ggvis. Wykresy ggplot2 są dość eleganckie. Wykresy ggvis są prostsze, ale rosną na mnie. Istnieją również rozszerzenia dla ggplot2, takie jak pakiety xkcd i wesanderson, w których nie ma analogii dla ggvis. Wszystkie wykresy ggplot2 wyglądają, jakby zostały stworzone przez tę samą osobę (autora ggplot2) i po pewnym czasie się męczy.
Kompletność Istnieją typy wykresów, które możesz utworzyć w ggplot2, których ggvis nie obsługuje, przynajmniej do tej pory. Na przykład w ggvis nie ma elementu fabuły „dywanik”. Widziałem jedną lub dwie choroplety wykonane przy pomocy ggvis, ale nie ma jeszcze wbudowanego wsparcia. ggplot2 ma współrzędne biegunowe (tj. wykresy kołowe), ggvis nie. Brakuje również w ggvis (i jest dostępny w ggplot2 lub w rozszerzeniu ggplot2): boxplots; wykresy konturowe; naturalne mapy cieplne; naturalne wykresy korelacji; kropki; skrzypce; wykresy sieciowe; dendrogramy. Oczywiście jestem pewien, że niektórzy bardzo sprytni ludzie mogą to wszystko stworzyć w ggvis, ale nie jestem taki sprytny.
Adnotacje ggplot2 ma bardzo przyjemną, być może niedostatecznie wykorzystaną strukturę adnotacji. ggvis nie.
Podploty i aspekty ggplot2 ma bardzo przyjemną, ale być może raczej ograniczoną funkcję „facetingu”. Możesz także łączyć wiele wykresów ggplot2 za pomocą pakietu grid. W tej chwili nie możesz używać ggvis. Wykresów ggvis nie można łączyć w jeden obraz (ponieważ nie są obrazami, są „żywymi” stronami internetowymi) i nie obsługuje żadnego aspektu ani podpowiedzi. To ma być w przygotowaniu.
Elastyczność wizualna ggplot2 chce, aby każda fabuła wyglądała tak samo, co oznacza, że autor woli stylistycznie. Na przykład nie ma sposobu, aby mieć wykres z wieloma osiami Y w ggplot2. ggvis może. ggvis jest znacznie 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 fabule itp.
Głęboka konfigurowalność Jeśli chcesz stworzyć, powiedzmy, nową sprytną skalę, nie jest to zbyt trudne w ggplot2 (chociaż jest to dość mylące). Po prostu wydaje się, że nie ma sposobu, aby zrobić dużo tego w ggvis. Może po prostu jeszcze nie.
Szeregi czasowe ggplot2 nie lubi rysować szeregów czasowych. To możliwe , ale nie chcą . Właściwie żadne z nich nie chce; oba nalegają na podawanie danych w ramce data.frame i nie mogą obsługiwać obiektów xts ani zoo. Nie mają też wbudowanych funkcji wycinania szeregów czasowych. Ale ggvis nie walczy z szeregami czasowymi tak mocno, jak ggplot2. Po części dlatego, że tak szybko aktualizuje dane w wykresie ggvis, jak sądzę. Jeśli chcesz zaplanować serie czasowe, musisz pokonać jednego z nich, ale ggvis jest o wiele mniej pasywny i agresywny.
Czy mają tę samą składnię? W pewnym sensie… łączy ich wiele, a nauka myślenia w stylu jednego z nich pomoże dostosować się do stylu drugiego. W szczególności oba są zaprojektowane w taki sposób, że wszystkie wywołania plotowania są ze sobą połączone w jednym wierszu kodu. Główną zaletą tego jest to, że sprawia, że debugowanie i profilowanie jest naprawdę trudne, i zasadniczo czyni funkcje debugowania / profilowania w takich rzeczach, jak Rstudio bezużyteczne. Poza tym są one zupełnie różne 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. (Mam trochę preferencji co do sposobu, w jaki ggvis robi rzeczy, co wydaje mi się łatwiejsze do zrozumienia.)
Błędy ggvis wciąż ma sporo. Czasami zachowuje się dziwnie. Czasami jednak fabuły losowo znikają z powodów, których obejście zajmuje wiele godzin i nie ma większego sensu. Deweloperzy przyznają to swobodnie, ggvis nie jest jeszcze gotowy do produkcji. Jeśli masz do czynienia z dowolnej złożoności, to będzie dowiedzieć się, że nie żartuję.
Podsumowując: Nauka każdego z nich zajmuje około 16 godzin. Tak więc, realistycznie, prawdopodobnie nauczysz się obu.
źródło
Myślę, że komunikat pojawiający się po nim
library(ggvis)
jest oczywisty:W porównaniu do ggplot2 ggvis wciąż nie ma pewnych cech i dopracowania (na przykład nie można dodać tytułu do wykresu, tytuły osi pokrywają się z etykietami tykania, a jest ich więcej, fasetowanie nie jest obsługiwane itp.) Z drugiej strony składnia ggvis wydaje się być trochę czystsze, a interaktywność jest naprawdę niesamowita.
Z mojego własnego doświadczenia ggvis jest koniecznością, jeśli budujesz błyszczącą aplikację. Następnie korzyści wynikające z posiadania przyjaznego dla sieci i R silnika kreślenia wykresów znacznie przewyższają wszelkie obecne braki.
Jeśli chcesz robić statyczne wykresy do eksploracji danych, ggplot2 to dojrzała biblioteka z wieloma fajnymi funkcjami i zdrową społecznością użytkowników oraz wieloma zasobami do nauki.
Filozofia obu pakietów jest podobna, więc umiejętności można łatwo przenosić z jednego pakietu do drugiego.
źródło
Społeczność R ciągle 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 nich nakłada się (stąd wiele pakietów, które regresują)
2) Ktoś pisze paczkę jako zadanie
3) Pisanie paczek jest fajne (jeśli lubisz tego rodzaju rzeczy)
4) Nie wiedzą, że istnieje oryginalne opakowanie
źródło