English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Multiplots do Matplotlib

Neste capítulo, vamos aprender como criar múltiplos subgráficos no mesmo canvas.

A função subplot() retorna o objeto axes na posição da grade fornecida. A assinatura dessa função é -

# Nome do arquivo: example.py
# Copyright: 2020 By w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
plt.subplot(subplot(nrows, ncols, index)

No gráfico atual, essa função cria e retorna um objeto Axes na posição de índice da grade ncolsxaxes em nrows. O índice começa de1até nrows * ncols, aumentando em ordem de linha. Se nrows, ncols e index forem todos menores que10O índice também pode ser fornecido como um único, conectado, ou três números.

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

A criação de subplots remove qualquer subplot pré-existente que se sobreponha, em vez de compartilhar limites.

Veja o exemplo de código a seguir:

# Nome do arquivo: example.py
# Copyright: 2020 By w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
#! /usr/bin/env python
 #coding=utf-8
 import matplotlib.pyplot as plt
 # Exibir configuração de chinês...
 plt.rcParams['font.sans-serif'] = ['SimHei'] # Passo um (substituição de sans-em estilo serif)
 plt.rcParams['axes.unicode_minus'] = False # Passo dois (solução para o problema de exibição do sinal negativo do número negativo no eixo) Texto original de 【立地货】,reprodução comercial, entre em contato com o autor para obter permissão, uso não comercial, mantenha o link original
 # 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') # cria 2nd subplot com fundo amarelo
 plt.plot(range(12))
 plt.show()

Executar o código de exemplo acima, obter os seguintes resultados:

# A função add_subplot() da classe figure não cobre o gráfico existente, veja o código a seguir -

# Nome do arquivo: example.py
# Copyright: 2020 By w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
#! /usr/bin/env python
 #coding=utf-8
 import matplotlib.pyplot as plt
 # Exibir configuração de chinês...
 plt.rcParams['font.sans-serif'] = ['SimHei'] # Passo um (substituição de sans-em estilo serif)
 plt.rcParams['axes.unicode_minus'] = False # Passo dois (solução para o problema de exibição do sinal negativo nas escalas negativas)
 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])
 plt.show()

Executar o código de exemplo acima, obter os seguintes resultados:

Pode-se adicionar uma inserção gráfica no mesmo canvas gráfico adicionando outro objeto eixo no mesmo gráfico. Veja a implementação do código a seguir -

# Nome do arquivo: example.py
# Copyright: 2020 By w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
#! /usr/bin/env python
 #coding=utf-8
 import matplotlib.pyplot as plt
 import numpy as np
 import math
 # Exibir configuração de chinês...
 plt.rcParams['font.sans-serif'] = ['SimHei'] # Passo um (substituição de sans-em estilo serif)
 plt.rcParams['axes.unicode_minus'] = False # Passo dois (solução para o problema de exibição do sinal negativo nas escalas negativas)
 x = np.arange(0, math.pi*2, 0.05)
 fig = plt.figure()
 axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # eixos principais
 axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # eixos de inserção
 y = np.sin(x)
 axes1.plot(x, y, 'b')
 axes2.plot(x, np.cos(x), 'r')
 axes1.set_title('Seno')
 axes2.set_title("Cosseno")
 plt.show()

Executar o código de exemplo acima, obter os seguintes resultados: