Wykres roju (ang. swarmplot) pojawił się stosunkowo niedawno w dziedzinie wizualizacji danych. Został wprowadzony jako alternatywna metoda prezentacji rozkładu danych, szczególnie użyteczna w przypadku zbiorów danych o dużej liczbie punktów.
Wykres roju to rodzaj grafiki danych, który prezentuje rozkład punktów danych wzdłuż jednej osi, unikając nakładania się punktów na siebie. W przeciwieństwie do tradycyjnych wykresów punktowych swarmplot rozróżnia poszczególne punkty poprzez delikatne rozproszenie ich wzdłuż osi.
Ten typ wykresu pomaga w ukazaniu rozkładu danych wzdłuż zmiennej numerycznej, podkreślając gęstość i zmienność danych skuteczniej niż tradycyjne wykresy rozrzutu lub wykresy pudełkowe.
Na czym polega wykres roju (swarmplot)?
Pomyślcie, iż mamy do dyspozycji zbiór jakichś liczb, na przykład poniższą listę:
Teraz listę sortujemy i ustawiamy w rosnącej kolejności. Następnie nanosimy każdą obserwację na nasz wykres:
Ciekawostka
Inna nazwa tego wykresu w języku angielskim to beeswarm plot. Nazwa ta wywodzi się z obserwacji zachowania rojów pszczół w naturze, gdzie jednostki poruszają się w sposób rozproszony, unikając kolizji i nakładania się na siebie.
Zalety wykresu swarmplot
- Lepsza czytelność: Dzięki rozproszeniu punktów, wykres rojowy zapewnia lepszą czytelność danych, szczególnie w przypadku większej ilości punktów.
- Wizualizacja rozkładu: Pozwala on na łatwe zobrazowanie rozkładu danych, ujawniając skupiska i rozproszenie wartości.
- Możliwość analizy zagęszczenia: Dzięki temu, iż punkty są rozproszone, łatwiej jest zauważyć obszary większego zagęszczenia danych.
Wady wykresu rojowego
- Nie działają w przypadku dużej ilości danych: W takim przypadku swarmplot może stać się zbyt gęsty i trudny do odczytania. Wówczas lepiej skorzystać z wykresu skrzypcowego.
- Brak prezentacji relacji między zmiennymi: Wykresy rojowe są skoncentrowane na prezentacji rozkładu danych wzdłuż jednej osi, co ogranicza ich zdolność do prezentacji zależności między różnymi zmiennymi w zestawie danych. W takich sytuacjach bardziej odpowiedni będzie wykres rozrzutu.
Kod w Python
Do wizualizacji wykorzystamy bibliotekę seaborn.
Najpierw zaimportujmy potrzebne pakiety oraz zobaczmy, jakie mamy do dyspozycji wbudowane zbiory danych:
Tym razem pobawmy się dla przykładu danymi dotyczącymi zużycia paliwa i wydajności samochodów. Zbiór ten zawiera informacje takie jak marka, model, rok produkcji, pojemność silnika, zużycie paliwa w mieście i poza miastem oraz inne parametry techniczne.
Pozbądźmy się jeszcze braku danych i zobaczmy przykładowe trzy rekordy, by lepiej zapoznać się z danymi (jeśli ich nie znacie):
Narysujmy teraz zmienną horsepower dzięki wykresu roju:
Poszukajmy teraz innej zmiennej, według której podzielimy nasz zbiór na osobne kategorie. Napiszmy jeszcze od razu funkcję do sprawdzenia liczności danej grupy:
Jak widzimy powyżej możemy zrobić podział po 3 osobnych rejonach geograficznych w celu ich porównania.
Uwaga. Dodatkowo zmniejszyłem wielkość na wykresie, aby zmieściły się na nim wszystkie nasze obserwacje.
Zobaczcie jak prosto możemy dodać kolejny wymiar. Przyjrzyjmy się jeszcze zmiennej xx, czy przyda się do kolejnego podziału:
Widzimy, iż auta z 3 i 5 cylindrami prawie nie występują, więc możemy je przefiltrować:
Teraz z takiego wykresu możemy odczytać wiele ciekawych obserwacji. Chociażby wystarczy porównać ilość produkowanych aut 8 cylindrowych o dużej mocy w USA, Europie i Japonii. Różnice widać od razu.
Dodatkowe formatowanie swarmplot
Co możemy z takim wykresem jeszcze zrobić? Chociażby to, co z każdym innym. Możemy go sformatować na wybrane przez nas kolory (np. oficjalne kolory naszej firmy).
Jeśli chcemy bardziej zróżnicować agregacje po cylindrach, możemy wykorzystać do tego parametr dodge. Zobaczcie, jak wówczas wygląda powyższy wykres:
To co mi się jeszcze podoba, to możliwość wykorzystania wykresu roju w połączeniu z wykresem pudełkowym poprzez naniesienie obu wykresów na siebie. Zobaczcie jakie to proste i jaki fajny efekt z dodatkowymi informacjami z wykresu pudełkowego otrzymujemy:
Analogicznie możemy zrobić z wykresem skrzypcowym:
Powodzenia w Waszych wizualizacjach!
Pozdrawiam serdecznie,