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 -