Observação
Clique aqui para baixar o código de exemplo completo
Criando várias subtramas usando plt.subplots
#
pyplot.subplots
cria uma figura e uma grade de subtramas com uma única chamada, enquanto fornece controle razoável sobre como as parcelas individuais são criadas. Para casos de uso mais avançados, você pode usar GridSpec
para um layout de subtrama mais geral ou Figure.add_subplot
para adicionar subtramas em locais arbitrários dentro da figura.
Uma figura com apenas uma subtrama #
subplots()
sem argumentos retorna um Figure
e um único
Axes
.
Esta é realmente a maneira mais simples e recomendada de criar uma única Figura e Eixos.
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('A single plot')
Text(0.5, 1.0, 'A single plot')
Empilhando subparcelas em uma direção #
Os dois primeiros argumentos opcionais de pyplot.subplots
definem o número de linhas e colunas da grade da subtrama.
Ao empilhar em apenas uma direção, o retornado axs
é um array numpy 1D contendo a lista de eixos criados.
fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
[<matplotlib.lines.Line2D object at 0x7f2d00efd510>]
Se você estiver criando apenas alguns eixos, é útil descompactá-los imediatamente em variáveis dedicadas para cada eixo. Dessa forma, podemos usar ax1
em vez do mais detalhado axs[0]
.
fig, (ax1, ax2) = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)
[<matplotlib.lines.Line2D object at 0x7f2d00a95b70>]
Para obter subtramas lado a lado, passe parâmetros para uma linha e duas colunas.1, 2
fig, (ax1, ax2) = plt.subplots(1, 2)
fig.suptitle('Horizontally stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)
[<matplotlib.lines.Line2D object at 0x7f2cfb43d330>]
Empilhando subtramas em duas direções #
Ao empilhar em duas direções, o retornado axs
é um array NumPy 2D.
Se você tiver que definir parâmetros para cada subplot, é útil iterar todos os subplots em uma grade 2D usando .for ax in axs.flat:
fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 0].set_title('Axis [0, 0]')
axs[0, 1].plot(x, y, 'tab:orange')
axs[0, 1].set_title('Axis [0, 1]')
axs[1, 0].plot(x, -y, 'tab:green')
axs[1, 0].set_title('Axis [1, 0]')
axs[1, 1].plot(x, -y, 'tab:red')
axs[1, 1].set_title('Axis [1, 1]')
for ax in axs.flat:
ax.set(xlabel='x-label', ylabel='y-label')
# Hide x labels and tick labels for top plots and y ticks for right plots.
for ax in axs.flat:
ax.label_outer()
Você pode usar a descompactação de tupla também em 2D para atribuir todas as subtramas a variáveis dedicadas:
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
fig.suptitle('Sharing x per column, y per row')
ax1.plot(x, y)
ax2.plot(x, y**2, 'tab:orange')
ax3.plot(x, -y, 'tab:green')
ax4.plot(x, -y**2, 'tab:red')
for ax in fig.get_axes():
ax.label_outer()
Eixos polares #
O parâmetro subplot_kw de pyplot.subplots
controla as propriedades da subtrama (consulte também Figure.add_subplot
). Em particular, isso pode ser usado para criar uma grade de eixos polares.
Tempo total de execução do script: (0 minutos 7,774 segundos)