Przejdź do treści
Strona główna » Blog » Wykresy Python: matplotlib i inne biblioteki do wizualizacji

Wykresy Python: matplotlib i inne biblioteki do wizualizacji

Wstęp

Tworzenie wykresów jest jednym z podstawowych zadań w wielu zagadnieniach, w analizie danych i statystyce, wizualizacji danych w tym danych biznesowych, oraz naukach inżynierskich i przyrodniczych. Stąd też mamy bardzo wiele różnych typów wykresów, przeznaczonych do przedstawiania różnego rodzaju danych. Z tych względów dla języka Python stworzono kilka bibliotek, które dedykowane są tworzeniu wykresów. Omówię je w tym artykule.

Wykresy w Python – biblioteki

Poniżej zestawiłem kilka najpopularniejszych bibliotek i krótko opisałem ich przeznaczenie. W następnym akapicie przedstawię praktyczne przykłady ich zastosowania.

  • matplotlib – chyba najpopularniejsza biblioteka dla Pythona przeznaczona do tworzenia wykresów. Słynie ona z możliwości tworzenia wysokiej jakości diagramów, ale również z prostoty. Przy użyciu tej biblioteki stworzymy większość typów wykresów, takich jak kołowe, słupkowe, punktowe, jak również wykresy trójwymiarowe.
  • plotly – zaletą tej biblioteki jest możliwość tworzenia wykresów interaktywnych, pozwalających na modyfikację wyświetlanych wyników przez użytkownika. Dzięki temu doskonale przydaje się w analizie danych, gdzie bardzo wygodne jest np. filtrowanie danych. Z jej użyciem tworzone są również tzw. dashboardy, czyli strony internetowe przedstawiające kompleksowe zestawienie danych dotyczących konkretnego zagadnienia.
  • seaborn – biblioteka, która jest często stosowana w statystyce i analizie danych. Dzięki integracji z dedykowaną do data science biblioteką pandas, z łatwością stworzymy takie wykresy jak histogramy, czy wykresy pudełkowe.

Instalacja bibliotek do tworzenia wykresów w Pythonie

Najprostszym sposobem na zainstalowanie biblioteki Pythona jest skorzystanie z komendy pip. Wymogiem jest wcześniejsza instalacja Pythona w systemie. Bibliotekę instalujemy w terminalu (w systemie Windows jest to cmd) przy użyciu komendy:

pip install nazwa_biblioteki

Zgodnie z powyższą komendą, bibliotekę matplotlib instalujemy komendą:

pip install matplotlib

Analogicznie instalujemy pozostałe biblioteki.

Tworzenie wykresu przy użyciu biblioteki matplotlib

Zaczniemy od najpopularniejszej biblioteki, czyli matplotlib. Do napisania programu potrzebna jest podstawowa wiedza na temat programowania w Pythonie (możesz ją nabyć podczas kursu podstawowego z Pythona).

Wykres liniowy w bilbiotece matplotlib

Prosty wykres liniowy stworzymy przy użyciu następującego kodu:

Python
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x,y)

plt.xlabel('x')
plt.ylabel('y')
plt.show()

W linii 1 importujemy moduł matplotlib.pyplot i nadajemy mu skrót plt. W linii 2 i 3 definiujemy nasze dane w postaci list pythona. Następnie (linia 4) tworzymy wykres przy użyciu metody plot, podając jako argumenty wcześniej stworzone listy x oraz y. Tak wywołana metoda stworzy graficzną zależność y(x). W liniach 6 i 7 nadajemy etykiety osiom. W tym przykładzie są to po prostu: ‘x’ oraz ‘y’. Na końcu metoda show() powoduje wyświetlenie tak zdefiniowanego wykresu.

Przykład wykresu w matplotlib - python wykresy
Rys. 1. Przykład wykresu liniowego stworzonego w bibliotece matplotlib dla Pythona

Wykres punktowy w bibliotece matplotlib

Jeżeli chcemy narysować serię danych w postaci punktów, to możemy zmodyfikować kod do następującej postaci:

Python
# import i defnicja danych jak w poprzednim przykładzie

plt.plot(x,y, 'ro')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

W metodzie plot dodany jest argument 'ro'. Oznacza on użycie koloru czerwonego i punktów. Skrót r pochodzi od koloru czerwonego (red), a o oznacza okrągłe symbole. Oznaczenia są dość intuicyjne i przy odrobinie wprawy bardzo łatwo określić interesujące nas oznaczenie (np. b to blue, -- to linia przerywana, itd.). Pełną listę skrótów znajdziemy na stronie z dokumentacją matplotlib.

Przykład wykresu punktowego w matplotlib w Pythonie
Rys. 2. Przykład wykresu punktowego stworzonego w bibliotece matplotlib dla Pythona

Wykres z wieloma seriami danych w bibliotece matplotlib

Kolejny przykład dotyczy wykresu z wieloma seriami danych.

Python
import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [1, 2, 3, 4]
y3 = [1, 8, 29, 64]
plt.plot(x,y1,'ro',x,y2,'bv',x,y3,'gs')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

W liniach 3-6 stworzyliśmy kilka serii danych. Mamy jedną listę x oraz trzy listy y (y1, y2, y3). W linii 7 w kodzie powyżej wywołaliśmy metodę plot, podając kolejno serie danych i styl, w jakim mają być wyrysowane. Seria x, y1 będzie wyrysowana z użyciem czerwonych kółek, seria x, y2 przy użyciu niebieskich trójkątów, a seria x, y3 przy użyciu zielonych kwadratów (rys. 3).

Przykład wykresu matplotlib w pythonie z wieloma seriami danych
Rys. 3. Przykład wykresu matplotlib w Pythonie z wieloma seriami danych

Histogram z użyciem biblioteki matplotlib

Histogram to rodzaj wykresu, który przedstawia rozkład częstości występowania wartości w zbiorze danych. Przedstawia szereg słupków, których szerokość reprezentuje przedział wartości, a wysokość odpowiada liczbie obserwacji w tym przedziale. W przykładzie poniżej najpierw genereujemy dane w postaci rozkładu normalnego (linie 4-10) przy użyciu biblioteki numpy. Jest to jedna z podstawowych bibliotek wykorzystywanych w różnego rodzaju obliczeniach i analizie danych. W dalszej części programu tworzymy wykres przy użyciu funkcji hist(). Jednym z argumentów jest bins czyi liczba przedziałów na wykresie.

Python
import numpy as np

# Generowanie danych
rng = np.random.default_rng(19680801)

N_points = 100000
n_bins = 20

# Wygenerowanie rozkładu normalnego
dist1 = rng.standard_normal(N_points)

# Tworzenie wykresu

# Liczbę przedziałów możemy ustawić za pomocą argumentu *bins*.
plt.hist(dist1, bins=n_bins)
plt.xlabel('Wartość')
plt.ylabel('Częstotliwość')

plt.show()
Histogram w matplotlib - python wykresy
Rys. 4. Przykład histogramu stworzonego w bibliotece matplotlib w Pythonie

Omówiliśmy kilka prostych przykładów tworzenia wykresów przy użyciu biblioteki matplotlib. Oprócz nich mamy do dyspozycji mnóstwo innych typów, takich jak np. wykresy słupkowe, konturowe, czy trójwymiarowe. Są one bardzo dokładnie opisane w dokumentacji matplotlib.

Wykresy Python: biblioteka plotly

Biblioteka Plotly oferuje kilka funkcji, które sprawiają, że jest atrakcyjnym narzędziem do wizualizacji danych w Pythonie. Jedną z nich jest możliwość tworzenia interaktywnych wizualizacji, pozwalających na zbliżanie, oddalanie, czy filtrowanie danych, co znacznie ułatwia przeprowadzenie analizy danych. Jest to również wszechstronna biblioteka, przy użyciu której stworzymy wszystkie popularne typy wykresów, w tym mapy cieplne, histogramy i wiele innych. Poniżej zobaczymy kilka podstawowych przykładów pozwalających na zaznajomienie się z tą biblioteką.

Wykres punktowy w bibliotece plotly

Zaczniemy od najprostszego typu wykresu, a więc od wykresu punktowego. W poniższym przykładzie importujemy moduł graph_objects z biblioteki ploty, któremu przypisujemy skrót go. Następnie definiujemy dwie serie danych (linie 4-8). W linii 11 tworzymy obiekt fig, czyli nasz wykres. Następnie, korzystając z funkcji add_trace dodajemy serie danych (linia 14 oraz 17). Widzimy, że używamy wykresu typu Scatter, czyli punktowego. Jako argumenty funkcji podajemy zbiór danych x oraz y, styl (mode) i nazwę serii. Jako styl możemy użyć punkty (markers), linie (lines), albo punkty z liniami (lines+markers). W linii 20 dodajemy takie elementy jak tytuł i podpisy osi. Funkcja show() wyświetla wykres.

Python
import plotly.graph_objects as go

# Przykładowe dane
x_data1 = [1, 2, 3, 4, 5]
y_data1 = [10, 11, 12, 13, 14]

x_data2 = [1, 2, 3, 4, 5]
y_data2 = [8, 9, 10, 11, 12]

# Tworzenie wykresu punktowego
fig = go.Figure()

# Dodanie pierwszej serii danych
fig.add_trace(go.Scatter(x=x_data1, y=y_data1, mode='markers', name='Seria 1'))

# Dodanie drugiej serii danych
fig.add_trace(go.Scatter(x=x_data2, y=y_data2, mode='markers', name='Seria 2'))

# Konfiguracja wykresu
fig.update_layout(title='Wykres punktowy z dwiema seriami danych',
                  xaxis_title='Wartość X',
                  yaxis_title='Wartość Y')

# Wyświetlenie wykresu
fig.show()
wykres punktowy w plotly - python wykresy
Rys. 5. Wykres punktowy w bibliotece plotly w Pythonie

Jak już wiemy, zaletą biblioteki plotly jest możliwość tworzenia wykresów interaktywnych. Taką wersję możemy zobaczyć na stronie interaktywny wykres plotly.

Widzimy, że wykres jest dość nieczytelny, dlatego wprowadzimy parę poprawek. Aby zmienić wymiary wykresu, zmodyfikujemy linię 20, tak aby uwzględniała szerokość i wysokość. Rozmiar czcionki zwiększymy do 13.

Python
# Konfiguracja wykresu
fig.update_layout(title='Wykres punktowy z dwiema seriami danych',
                  xaxis_title='Wartość X',
                  yaxis_title='Wartość Y',
                  width=700,  # Szerokość wykresu
                  height=700,  # Wysokość wykresu
                  font=dict(size=14), 
                  )
Wykres punktowy w bibliotece plotly w proporcjach 1:1
Rys. 6. Wykres punktowy w bibliotece plotly w proporcjach 1:1

Seaborn

W krótce…

Jeśli chcesz dowiedzieć się więcej na temat tworzenia wykresów w Pythonie, zobacz nasz kurs: Python w analizie danych.