Matplotlib - Multiplots

Neste capítulo, aprenderemos como criar vários subtramas na mesma tela.

o subplot()função retorna o objeto de eixos em uma determinada posição da grade. A assinatura de chamada desta função é -

plt.subplot(subplot(nrows, ncols, index)

Na figura atual, a função cria e retorna um objeto Axes, no índice de posição de uma grade de nrows por ncolsaxes. Os índices vão de 1 a nrows * ncols, aumentando na ordem da linha principal. Se nrows, ncols e índice são todos menores que 10. Os índices também podem ser fornecidos como único, concatenado, número de três dígitos.

Por exemplo, o subplot (2, 3, 3) e o subplot (233) criam um eixo no canto superior direito da figura atual, ocupando metade da altura da figura e um terço da largura da figura.

A criação de uma subtrama excluirá qualquer subtrama pré-existente que se sobrepõe a ela além de compartilhar um limite.

import matplotlib.pyplot as plt
# plot a line, implicitly creating a subplot(111)
plt.plot([1,2,3])
# now create a subplot which represents the top plot of a grid with 2 rows and 1 column.
#Since this subplot will overlap the first, the plot (and its axes) previously 
created, will be removed
plt.subplot(211)
plt.plot(range(12))
plt.subplot(212, facecolor='y') # creates 2nd subplot with yellow background
plt.plot(range(12))

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

A função add_subplot () da classe de figura não sobrescreverá o gráfico existente -

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot([1,2,3])
ax2 = fig.add_subplot(221, facecolor='y')
ax2.plot([1,2,3])

Quando a linha de código acima é executada, ela gera a seguinte saída -

Você pode adicionar um gráfico de inserção na mesma figura adicionando outro objeto de eixos na mesma tela de figura.

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
y = np.sin(x)
axes1.plot(x, y, 'b')
axes2.plot(x,np.cos(x),'r')
axes1.set_title('sine')
axes2.set_title("cosine")
plt.show()

Após a execução da linha de código acima, a seguinte saída é gerada -