Matplotlib - interfejs zorientowany obiektowo
Chociaż łatwo jest szybko generować wykresy z rozszerzeniem matplotlib.pyplotmodułu, zaleca się stosowanie podejścia zorientowanego obiektowo, ponieważ zapewnia ono większą kontrolę i dostosowanie wykresów. Większość funkcji jest również dostępna wmatplotlib.axes.Axes klasa.
Główną ideą stosowania bardziej formalnej metody zorientowanej obiektowo jest tworzenie obiektów figur, a następnie wywoływanie metod lub atrybutów z tego obiektu. Takie podejście pomaga lepiej radzić sobie z płótnem, na którym znajduje się wiele działek.
W interfejsie obiektowym Pyplot jest używany tylko do kilku funkcji, takich jak tworzenie figur, a użytkownik jawnie tworzy i śledzi obiekty figury i osi. Na tym poziomie użytkownik używa Pyplot do tworzenia figur, a za pomocą tych figur można utworzyć jeden lub więcej obiektów osi. Te obiekty osi są następnie używane do większości operacji kreślenia.
Na początek tworzymy instancję figury, która zapewnia puste płótno.
fig = plt.figure()
Teraz dodaj osie do figury. Plikadd_axes()metoda wymaga obiektu listy składającego się z 4 elementów odpowiadających lewej, dolnej, szerokości i wysokości figury. Każda liczba musi zawierać się w przedziale od 0 do 1 -
ax=fig.add_axes([0,0,1,1])
Ustaw etykiety dla osi X i Y oraz tytułu -
ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')
Wywołaj metodę plot () obiektu axes.
ax.plot(x,y)
Jeśli używasz notatnika Jupyter, musi zostać wydana dyrektywa inline% matplotlib; funkcja otherwistshow () modułu pyplot wyświetla wykres.
Rozważ wykonanie następującego kodu -
from matplotlib import pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.plot(x,y)
ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')
plt.show()
Wynik
Powyższy wiersz kodu generuje następujące dane wyjściowe -
Ten sam kod po uruchomieniu w notatniku Jupyter pokazuje dane wyjściowe, jak pokazano poniżej -