import matplotlib.pyplot as plt
import numpy as np
= np.linspace(0, 2 * np.pi, 100)
x
# Tworzenie siatki wykresów 2x2
# Pierwszy wykres (w lewym górnym rogu)
2, 2, 1)
plt.subplot(
plt.plot(x, np.sin(x))'sin(x)')
plt.title(
# Drugi wykres (w prawym górnym rogu)
2, 2, 2)
plt.subplot(
plt.plot(x, np.cos(x))'cos(x)')
plt.title(
# Trzeci wykres (w lewym dolnym rogu)
2, 2, 3)
plt.subplot(
plt.plot(x, np.tan(x))'tan(x)')
plt.title(
# Czwarty wykres (w prawym dolnym rogu)
2, 2, 4)
plt.subplot(-np.sin(x))
plt.plot(x, '-sin(x)')
plt.title(
# Dopasowanie odstępów między wykresami
plt.tight_layout()
# Wyświetlenie wykresów
plt.show()
28 Matplotlib - podwykresy
Funkcja subplot
pozwala na tworzenie wielu wykresów w pojedynczym oknie lub figurze. Dzięki temu można porównać różne wykresy, które mają wspólny kontekst lub prezentować różne aspekty danych.
Składnia funkcji to plt.subplot(nrows, ncols, index, **kwargs)
, gdzie:
nrows
- liczba wierszy w siatce wykresów.ncols
- liczba kolumn w siatce wykresów.index
- indeks bieżącego wykresu, który ma być utworzony (indeksacja zaczyna się od 1). Indeksy są numerowane wierszami, tzn. kolejny wykres w rzędzie będzie miał indeks o jeden większy.**kwargs
- dodatkowe argumenty dotyczące formatowania wykresu.
import numpy as np
import matplotlib.pyplot as plt
= np.arange(0, 3, 0.1)
x 2, 2, 1)
plt.subplot(
plt.plot(x, x)2, 2, 2)
plt.subplot(* 2)
plt.plot(x, x 2, 2, 3)
plt.subplot(* x)
plt.plot(x, x 2, 2, 4)
plt.subplot(** 3)
plt.plot(x, x
plt.tight_layout() plt.show()
import numpy as np
import matplotlib.pyplot as plt
= np.arange(0, 3, 0.1)
x
= plt.subplots(2, 2)
fig, axes
0, 0].plot(x, x)
axes[0, 1].plot(x, x * 2)
axes[1, 0].plot(x, x * x)
axes[1, 1].plot(x, x ** 3)
axes[
fig.tight_layout() plt.show()
import numpy as np
import matplotlib.pyplot as plt
# Przygotowanie danych do wizualizacji
= np.linspace(0, 10, 100) # Tworzymy 100 punktów w zakresie od 0 do 10
x = np.sin(x) # Funkcja sinus
y1 = np.cos(x) # Funkcja cosinus
y2 = np.exp(-0.2*x) * np.sin(x) # Funkcja tłumionego sinusa
y3 = x**2 / 20 # Funkcja kwadratowa
y4
# Tworzenie figury i podwykresów (2 rzędy, 2 kolumny)
# W podejściu proceduralnym używamy pyplot bezpośrednio
=(12, 8)) # Ustawiamy rozmiar całej figury (szerokość, wysokość w calach)
plt.figure(figsize
# Pierwszy podwykres (lewy górny)
2, 2, 1) # 2 rzędy, 2 kolumny, pozycja 1
plt.subplot('r-', linewidth=2) # Czerwona linia
plt.plot(x, y1, 'Funkcja sinus')
plt.title('X')
plt.xlabel('sin(x)')
plt.ylabel(True) # Dodajemy siatkę
plt.grid(=0, color='k', linestyle='-', alpha=0.3) # Linia pozioma na y=0
plt.axhline(y
# Drugi podwykres (prawy górny)
2, 2, 2) # 2 rzędy, 2 kolumny, pozycja 2
plt.subplot('b-', linewidth=2) # Niebieska linia
plt.plot(x, y2, 'Funkcja cosinus')
plt.title('X')
plt.xlabel('cos(x)')
plt.ylabel(True)
plt.grid(=0, color='k', linestyle='-', alpha=0.3)
plt.axhline(y
# Trzeci podwykres (lewy dolny)
2, 2, 3) # 2 rzędy, 2 kolumny, pozycja 3
plt.subplot('g-', linewidth=2) # Zielona linia
plt.plot(x, y3, 'Tłumiony sinus')
plt.title('X')
plt.xlabel('exp(-0.2x) * sin(x)')
plt.ylabel(True)
plt.grid(=0, color='k', linestyle='-', alpha=0.3)
plt.axhline(y
# Czwarty podwykres (prawy dolny)
2, 2, 4) # 2 rzędy, 2 kolumny, pozycja 4
plt.subplot('orange', linewidth=2, linestyle='--', marker='o', markevery=10, markersize=5)
plt.plot(x, y4, 'Funkcja kwadratowa')
plt.title('X')
plt.xlabel('x²/20')
plt.ylabel(True)
plt.grid(
# Dodanie adnotacji na ostatnim wykresie
'Punkt (5, 1.25)', xy=(5, 1.25), xytext=(6, 1.8),
plt.annotate(=dict(facecolor='black', shrink=0.05, width=1.5))
arrowprops
# Dostosowanie układu wykresów - zapobiega nakładaniu się
plt.tight_layout()
# Dodanie ogólnego tytułu dla całej figury
'Przykład wykresów z podwykresami - podejście proceduralne', fontsize=16)
plt.suptitle(=0.9) # Dodanie miejsca na główny tytuł
plt.subplots_adjust(top
# Wyświetlenie wykresu
plt.show()