#012 Wykres bąbelkowy (bubble chart)

wykres bąbelkowy anatomia

Wykres bąbelkowy (ang buble chart) jest moim zdaniem pięknym wykresem, na którym można przedstawić całkiem sporo informacji.

Jest on tak naprawdę rozbudowanym wykresem rozrzutu o kolejny (trzeci) wymiar, którym jest rozmiar kropek.

Podobnie jak wykres punktowy, wykres bąbelkowy osadzony jest w kartezjańskim układzie współrzędnych.

Mając trzy zmienne numeryczne możesz je zaprezentować, że pierwsza wartość będzie na osi X, druga zmienna na osi Y, a trzecia będzie rozmiarem kropki. Ten trzeci wymiar reprezentowany jest właśnie na podstawie pola koła.

Dodatkowo można jeszcze wykorzystać różne kolory do rozróżniania kategorii lub reprezentowania dodatkowej zmiennej danych.

wykres bąbelkowy

Wykres bąbelkowy najczęściej używany jest do pokazywania relacji między relacji między zmiennymi. Łatwo na nich odnaleźć wszelkie wzorce wśród danych. Oczywiście jeśli tylko występują.

Uwagi
  1. Warto pamiętać, że rozmiar okręgów należy rysować na podstawie powierzchni koła a nie promienia! Jeśli wykorzystasz promień, to rozmiar będzie zmieniał się wykładniczo. Na szczęście większość pakietów ma prawidłowo zaimplementowane rozwiązania.
  2. Również zbyt wiele bąbelków może utrudnić odczytanie wykresu. Jedyna rada by temu zaradzić, to stworzenie interaktywnych wykresów lub podpisanie najbardziej wyróżniających się bąbli J.
  3. Jest duża różnica w jakiej kolejności podasz zmienne. Dlatego musisz świadomie wybrać ich kolejność i wiedzieć co chcesz pokazać i jaką historię opowiedzieć.
Te same dane, ale pozmieniane troszkę osie 🙂

KOD W PYTHON

Wczytajmy standardowy zbiór danych z latami PKB per kraje, długością życia oraz populacją w kraju.

import plotly.express as px

df = px.data.gapminder()
df.head()
dane wejściowe

Teraz wykorzystajmy bibliotekę plotly do narysowania podstawowego wykresu:

fig = px.scatter(df.query("year==2007"), 
        x="gdpPercap", y="lifeExp", size="pop", 
        hover_name="country", log_x=True, 
        size_max=60, template="simple_white")

fig.show()
wykres bąbelkowy

Dodatkowo dzięki parametrowi log_x=True ustawiłem oś w skali logarytmicznej. Coraz więcej osób zna to pojęcie, dzięki obserwacji wykresom związanych z COVID-19. Dodatkowo jeszcze parametr size_max=60 mówi nam o maksymalnej wielkości naszych kropek.

Dodatkowo można jeszcze wykorzystać różnych kolorów do rozróżniania kategorii lub reprezentowania dodatkowej zmiennej danych.

fig = px.scatter(df.query("year==2007"), 
        x="gdpPercap", y="lifeExp", size="pop",
        color="continent",
        hover_name="country", log_x=True, 
        size_max=60, template="simple_white")

fig.show()
wykres bąbelkowy

Czas można pokazać, umieszczając go jako zmienną na jednej z osi lub animując zmienne danych zmieniające się w czasie. Zobacz, jak prosto można przygotować animację po latach!

fig = px.scatter(df, 
        x="gdpPercap", y="lifeExp", size="pop",
        color="continent",
        hover_name="country", log_x=True, 
        size_max=60, template="simple_white",
        animation_frame="year", animation_group="country",        
        range_x=[100,100000], range_y=[25,90]        
        )

fig.show()
wykres bąbelkowy animacja

Oczywiście tą sztuczkę z wizualizacją animacji możesz stosować również z innymi typami wykresów :).

Dla przykładu tutaj pokazuję, jak zrobić to na wykresie kolumnowym.

df_bar = df.groupby(['year','continent'])['lifeExp'].agg('mean').reset_index()
px.bar(df_bar, x='continent', y='lifeExp', 
       color="continent", animation_frame="year", range_y=[25,90])
wykres kolumnowy animacja

Udanych wizualizacji!

Pozdrawiam serdecznie,

podpis Mirek
.

Dodaj komentarz

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