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:
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.
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:
# 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.
Wykres z wieloma seriami danych w bibliotece matplotlib
Kolejny przykład dotyczy wykresu z wieloma seriami danych.
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).
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.
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()
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.
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()
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.
# 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),
)
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.