Figury i osie
Poznaj model tworzenia wykresów
Figury i osie to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Model tworzenia wykresów
Matplotlib to podstawowa biblioteka do tworzenia wykresów w języku Python. Aby dobrze z niej korzystać, trzeba zrozumieć jej dwupoziomowy model: obiekty Figure i Axes.
Figure to całe okno lub strona, na której rysowane są wszystkie elementy. Axes to pojedynczy wykres znajdujący się w obiekcie Figure, z własnym układem współrzędnych x i y.
- Jeden obiekt Figure może zawierać wiele obiektów Axes
- To w każdym obiekcie Axes znajdują się właściwe dane
Figure a Axes i Axis
Trzy terminy łatwo pomylić:
- Figure to cały obraz, czyli kontener
- Axes to pojedynczy obszar wykresu (zwróć uwagę na pisownię — nie jest to liczba mnoga od axis)
- Axis to oś x lub oś y, czyli podziałka liczbowa wewnątrz obiektu Axes
Obiekt Figure zawiera więc obiekty Axes, a każdy obiekt Axes zawiera dwa (lub trzy) obiekty Axis.
Tworzenie obiektu Figure i Axes
Zalecanym sposobem rozpoczęcia pracy jest użycie plt.subplots(). Jedno wywołanie zwraca obiekt Figure i obiekt Axes.
Sam model jest łatwy do zrozumienia nawet bez renderowania. W tym przykładzie symulujemy znaczenie tych obiektów.
fig = {'type': 'Figure', 'axes': []}
ax = {'type': 'Axes', 'parent': 'Figure'}
fig['axes'].append(ax)
print('Figure holds', len(fig['axes']), 'axes')
print('Axes parent is the', ax['parent'])Interfejs pyplot
Matplotlib oferuje dwa style pracy. Styl pyplot (oparty na stanie) korzysta z plt.plot() i automatycznie śledzi bieżący obiekt Figure. Styl obiektowy korzysta jawnie z ax.plot().
W przypadku wszystkiego, co wykracza poza szybki szkic, preferuj styl obiektowy. Jest przejrzystszy, gdy używasz wielu obiektów Axes.
Dlaczego styl obiektowy jest lepszy
Gdy wywołujesz plt.title('X'), tytuł zostaje zastosowany do tego obiektu Axes, który akurat jest bieżący. Przy wielu wykresach staje się to niejednoznaczne.
W przypadku ax.set_title('X') nie ma miejsca na domysły: metoda działa dokładnie na wskazanym przez Ciebie obiekcie Axes.
Układy współrzędnych
Każdy obiekt Axes odwzorowuje wartości danych na pozycje na ekranie. Współrzędne danych określają znaczenie liczb, a obiekt Axes skaluje je tak, aby pasowały do obszaru rysowania.
To odwzorowanie można opisać za pomocą zwykłej matematyki.
data_min, data_max = 0, 100
pixel_min, pixel_max = 0, 400
def to_pixels(value):
frac = (value - data_min) / (data_max - data_min)
return pixel_min + frac * (pixel_max - pixel_min)
for v in [0, 25, 50, 100]:
print('data', v, '->', to_pixels(v), 'px')Rozmiar Figure i DPI
Obiekt Figure ma rozmiar wyrażony w calach oraz rozdzielczość wyrażoną w punktach na cal (DPI). Rozmiar w pikselach jest iloczynem tych dwóch wartości.
Na przykład obiekt Figure o rozmiarze 6 × 4 cala przy rozdzielczości 100 DPI ma 600 × 400 pikseli.
width_in, height_in = 6, 4
dpi = 100
print('Pixels:', width_in * dpi, 'x', height_in * dpi)Ręczne dodawanie obiektów Axes
Oprócz plt.subplots() można dodać obiekt Axes w dokładnie określonym prostokącie za pomocą fig.add_axes([left, bottom, width, height]), gdzie każda wartość jest ułamkiem rozmiaru Figure z przedziału od 0 do 1.
W ten sposób tworzy się wykresy osadzone i niestandardowe układy.
Bieżący obiekt Figure
Pyplot przechowuje rejestr obiektów Figure oraz wskaźnik na bieżący obiekt. plt.gcf() pobiera bieżący obiekt Figure, a plt.gca() pobiera bieżący obiekt Axes.
Elementy te służą głównie do obsługi stylu opartego na stanie. W kodzie obiektowym zamiast tego przechowuje się własne referencje.
Wyświetlanie i zamykanie
plt.show() renderuje wszystkie otwarte obiekty Figure w oknie. plt.close() zwalnia obiekt Figure. W skryptach generujących wiele obiektów Figure ich zamykanie zapobiega nadmiernemu zużyciu pamięci.
W notatnikach obiekt Figure jest automatycznie wyświetlany bezpośrednio w komórce.
Lista kontrolna
Zanim cokolwiek narysują Państwo, proszę odpowiedzieć na następujące pytania:
- Ilu figur potrzebuję?
- Ile obiektów Axes przypada na każdą figurę?
- Do którego obiektu Axes należy każdy fragment danych?
Odpowiedzi na te pytania sprawiają, że obiektowe API staje się intuicyjne.
Szybki test
Proszę sprawdzić swoją znajomość modelu figury i osi.
Podsumowanie
Poznali Państwo podstawowy model Matplotlib:
- Figure to kontener o rozmiarze wyrażonym w calach pomnożonych przez DPI
- Axes to pojedynczy wykres z własnym układem współrzędnych
- Axis to oś liczbowa x lub y
- Należy preferować styl obiektowy z użyciem
fig, ax = plt.subplots()
Dzięki temu modelowi mentalnemu każda kolejna personalizacja staje się przewidywalna.
Często zadawane pytania
Czy lekcja „Figury i osie” jest bezpłatna?
Tak — pełny tekst „Figury i osie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Figury i osie”?
Poznaj model tworzenia wykresów Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Figury i osie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.