Wykres bąbelkowy (ang. bubble chart) jest wykresem, na którym można przedstawić całkiem sporo informacji.
To tak naprawdę wykres rozrzutu rozbudowany 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ć w taki sposób, że pierwsza wartość będzie na osi X, druga zmienna na osi Y, a trzecia będzie rozmiarem kropki. Ten trzeci wymiar reprezentowany jest na podstawie pola koła.
Dodatkowo można jeszcze wykorzystać różne kolory do rozróżniania kategorii lub prezentowania dodatkowej zmiennej.
Wykres bąbelkowy najczęściej używany jest do pokazywania relacji między zmiennymi. Łatwo na nich odnaleźć wszelkie wzorce wśród danych. Oczywiście o ile te relacje występują.
Uwagi!
- 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.
- Zbyt wiele bąbelków może utrudnić odczytanie wykresu. Aby temu zaradzić, można stworzyć interaktywne wykresy lub podpisać najbardziej wyróżniające się bąble.
- Jest duża różnica, w jakiej kolejności pokażesz zmienne. Dlatego musisz świadomie wybrać ich kolejność i wiedzieć, co chcesz pokazać i jaką historię opowiedzieć.
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()
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()
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óżne kolory 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()
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ę w poszczególnych 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()
Oczywiście tę sztuczkę z wizualizacją animacji możesz stosować również dla innych typów wykresów :).
Poniżej przykład jak to zrobić 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])
Udanych wizualizacji!
Pozdrawiam serdecznie,