Arc Bar Chart, czyli jak zagiąć słupki

Dzisiejszy wpis skupi się na jednym ze sposobów stworzenia arc bar chart w Tableau - czyli wykresu słupkowego na planie koła. Prezentowana technika pierwotnie została wykorzystana do stworzenie sunburst chart przez Neila Richardsa przy okazji jednego z MakeoverMonday. Mi udało się ją zaadaptować do własnego celu. Nie jest to jedyny sposób na stworzenie barc charta - bardziej standardowe podejście zaprezentuję w kolejnym wpisie.

Musimy jednak zacząć od tego, iż arc bar chart to bardzo specyficzny typ wykresu. Oszacowanie z niego wartości jest jeszcze trudniejsze niż ze zwykłego pie charta (wady pie charta wytłumaczy Stephen Few), nie mówiąc już o zwykłych słupkach. Dlatego, jeżeli zależy ci na precyzji wykres ten nie jest zalecany. Mimo tego użyłem go w ostatnim MakeoverMonday - chciałem aby wykres był efektowny. Konkretne liczby z legenda pojawiają się dopiero w tooltipie.
Kliknij aby przejść do Tableau Public

Zacznijmy od tego, że arc bar chart możemy potraktować jak kilka nakładających się na siebie pie chartów. I tą ścieżką podążymy w tym wpisie. Cały wykres zostanie stworzony na podstawie danych dostępnych tutaj - głównym motywem stworzenia go była minimalizacja pracy z Excelem i preparacji danych - wszystko co potrzeba dzieje się w Tableau.


Zaczynamy od prostej tabelki. Tak wyglądają nasze dane po filtrowaniu interesujących nas kategorii. O razu widzimy, że Subcat odpowiadać będzie za części wykresu kołowego, który zostanie stworzony dla każdej z kategorii. Kilka ruchów myszki i gotowe.


W tym momencie napotykamy dwa problemy. Po pierwsze, jeżeli usuniemy z półki kolumn wymiar Category to uzyskamy jeden duży pie chart. Pamiętajmy, że każda z kategorii sumuje się do 100 i jest w zasadzie odpowiednikiem procentów. Połączenie kategorii jest więc bez sensu. Musimy więc nałożyć na siebie wykresy w jakiś inny sposób. Drugi problem, wynikający po części z pierwszego, to rozmiar wykresów. Aktualnie wszystkie koła są tego samego rozmiaru, więc nawet jeśli je na siebie nałożymy to będzie widoczny tylko górny. W danych nie ma nic na temat hierarchii, co moglibyśmy wykorzystać do sterowania rozmiarem. Musimy więc przypisać wartości kategoriom ręcznie. Chcę, aby wykresy z największymi wartościami były największe. Tworzę się takie pole:

Próbowałem też użyć funkcji INDEX(), jednak czasem najprostsze rozwiązania są najlepsze. Po użyciu pola do sterowania rozmiarem udaje nam się rozwiązać jeden z problemów.


Dalej jednak musimy nałożyć na siebie wszystkie wykresy. Musimy im przypisać więc jakieś wartości na osi X. Jeżeli wartości będę bardzo zbliżone to nie powinno dać się zauważyć, że wykresy nie są wycentrowane. Tutaj również brakuje nam danych. Możemy jednak ponownie użyć naszego pola kalkulowanego. Wrzucamy je zamiast Category na półkę kolumn.


Nie do końca o to nam chodziło. Wartości, które otrzymaliśmy są od siebie zbyt odległe. Dzieląc je przez dużą liczbę lub manipulując skalą osi (a najlepiej obie rzeczy na raz) musimy złożyć wykresy. Ja podzieliłem pole Sizer na półce kolumn przez 100000 oraz odpowiednio ustawiłem oś - ważne, aby ustawić ja na sztywno (fixed). Musimy również pamiętać, aby użyć Category dla detalu, inaczej wykres może się nam rozjechać. Po kilku próbach dopasowania skali osi, rozmiaru wykresu oraz stosunków rozmiarów poszczegołnych wartości powinniśmy otrzymać zadowalający efekt.


Aby otrzymać zadowalający efekt musimy jeszcze dokonać formatowania wykresu (ukryć oś, usunąć skalę zza wykresu), ustawić odpowiednie kolory (na moim przykładzie każda kategoria podzielona jest na dwie podkategorie - zdecydowałem się pokreślić tą pozytywną; negatywną koloruje się na biało, tak aby zlewała się z tłem), sformatować odpowiednio tooltipy, ustawić kolejność podkategorii na wykresie (tak aby zaczynały się od godziny 12) - przypominam, że wielkość, czyli kolejność okręgów ustawiliśmy na samym początku. Aby poprawić efekt wizualny możemy zastosować trick z donut charta i dodać na środku białe kółko - zwiększając ilość white space oraz zmniejszając Ink-Data Ratio, czyli poprawiając czytelność i przejrzystość wykresu.


Niestety nie znalazłem dobrego sposobu aby pokazać nazwy kategorii na wykresie korzystając z labeli. Opisy muszą zostać więc dodane korzystając z adnotacji lub po prostu pola tekstowego.  Z racji budowy wykresu wartości oraz ich opisy znajdują się również tylko w tooltipie.

Tak jak już pisałem we wstępie, pie charty i donut charty to dosyć ciężkie w interpretacji i mało dokładne wykresy. Arc Bar Chart tylko potęguje problemy związane w powyższymi i musimy być tego świadomi. Jego użycie ograniczone jest do poszczególnych przypadków. Ale nie można odmówić mu efektywności wizualnej i bycia bardzo intrygującym. Warto jest więc posiadać go w swoim arsenale.

W następnym wpisie skupię na na odmianie tego wykresu, a mianowicie sunburst chart, będącym odpowiednikiem wykresu Sankeya (wpis również w przygotowaniu) i dendrogramu z wykorzystaniem tej samej techniki co w tym wpisie. Omówiona zostanie również bardziej standardowa, aczkolwiek wcale nie łatwiejsza, metoda budowy zakrzywionego wykresu słupkowego.

PS Wiem, że to bardzo specyficzny przypadek tego wykresu.
PS2 Tydzień temu odbyło się webinarium organizowanie przez Tableau Polska oraz Astrafox o użyciu Tableau w kontekście danych marketingowych, które to miałem okazję współprowadzić. Webinarium było nagrywane i jak tylko nagranie zostanie opublikowanie to podlinkuję je na blogu.

Przypominam także, że wersję próbną Tableau można pobrać stąd.

Komentarze

Popularne posty z tego bloga

SprytneSztuczki#1 - 9 sprytnych funkcji Tableau, które ułatwią Ci życie

IronViz 2018.2 - Best New Entry i drugie miejscie ogółem

Praktyczne użycie kolorów w wizualizacji danych