Matplotlib - Interface orientada a objetos

Embora seja fácil gerar gráficos rapidamente com o matplotlib.pyplotmódulo, o uso de abordagem orientada a objetos é recomendado, pois dá mais controle e personalização de seus gráficos. A maioria das funções também estão disponíveis no matplotlib.axes.Axes classe.

A ideia principal por trás do uso do método orientado a objetos mais formal é criar objetos de figura e, em seguida, apenas chamar métodos ou atributos desse objeto. Essa abordagem ajuda melhor a lidar com uma tela que contém vários gráficos.

Na interface orientada a objetos, Pyplot é usado apenas para algumas funções, como criação de figura, e o usuário cria explicitamente e mantém o controle da figura e dos objetos de eixo. Neste nível, o usuário utiliza o Pyplot para criar figuras, e através dessas figuras, um ou mais objetos de eixos podem ser criados. Esses objetos de eixos são então usados ​​para a maioria das ações de plotagem.

Para começar, criamos uma instância de figura que fornece uma tela vazia.

fig = plt.figure()

Agora adicione eixos à figura. oadd_axes()método requer um objeto de lista de 4 elementos correspondentes à esquerda, fundo, largura e altura da figura. Cada número deve estar entre 0 e 1 -

ax=fig.add_axes([0,0,1,1])

Defina rótulos para os eixos xey e também para o título -

ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')

Invoque o método plot () do objeto de eixos.

ax.plot(x,y)

Se você estiver usando o notebook Jupyter, a diretiva inline% matplotlib deve ser emitida; a função otherwistshow () do módulo pyplot exibe o gráfico.

Considere executar o seguinte código -

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()

Resultado

A linha de código acima gera a seguinte saída -

O mesmo código quando executado no notebook Jupyter mostra a saída conforme mostrado abaixo -