Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Subplots | Personalização de Gráficos
Visualização Definitiva com Python

bookSubplots

A função subplots() do pyplot é utilizada para criar múltiplos gráficos em uma única figura. Você já a viu ao criar um canvas; agora, examinamos em mais detalhes.

Linhas e Colunas

Os principais argumentos são nrows e ncolumns, que definem a grade dos subplots. Por padrão, ambos são 1, produzindo um único Axes. subplots() retorna um Figure e um objeto Axes ou um array deles, dependendo do layout.

12345
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
copy

Uma grade de subplots 2 por 2 foi criada.

Note
Nota

Como há vários subplots, subplots retorna um array de objetos Axes, geralmente armazenado em uma variável chamada axs (o singular ax é usado para um único gráfico).

Neste caso, axs é um array bidimensional, portanto, é necessário tanto o índice da linha quanto o da coluna para acessar um subplot específico.

1234567891011121314
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear**2 fig, axs = plt.subplots(2, 2) axs[0, 0].plot(data_linear) axs[0, 1].plot(data_squared) axs[1, 0].scatter(data_linear, data_linear) axs[1, 1].scatter(data_linear, data_squared) plt.show()
copy

A primeira linha contém dois gráficos de linha; a segunda linha contém dois gráficos de dispersão. Cada gráfico deve ser desenhado utilizando o método do respectivo objeto Axes, e não plt.plot() ou plt.scatter().

Convertendo para Array 1D

É possível achatar o array 2D de Axes utilizando .ravel() para simplificar a indexação:

123456789
fig, axs = plt.subplots(2, 2) axs = axs.ravel() axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
copy

Com um array 2x2, axs.ravel() converte-o em um array 1D contendo quatro elementos.

Compartilhando um Eixo

A função subplots() também possui os parâmetros sharex e sharey. Eles controlam se os eixos x ou y são compartilhados entre os subplots. Ambos estão definidos como False por padrão.

123456789
fig, axs = plt.subplots(2, 2, sharex=True) axs = axs.ravel() axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
copy

Definir sharex=True compartilha o eixo x entre todos os subplots. Também é possível passar 'row' ou 'col' para compartilhar os eixos apenas dentro das linhas ou colunas.

Note
Estude Mais

Como de costume, sinta-se à vontade para explorar mais na subplots() documentação caso queira.

Tarefa

Swipe to start coding

  1. Utilize a função correta para criar uma grade de subplots.
  2. A grade deve conter 3 linhas e 1 coluna (especifique os dois primeiros parâmetros).
  3. Especifique o argumento nomeado mais à direita para que o eixo x seja compartilhado entre todos os subplots.
  4. Armazene o resultado da função de criação dos subplots nas variáveis fig e axs (da esquerda para a direita).
  5. Posicione o primeiro gráfico de linha para data_linear na primeira linha (linha 0) da grade de subplots.
  6. Posicione o segundo gráfico de linha para data_squared na segunda linha (linha 1) da grade de subplots.
  7. Posicione o terceiro gráfico de linha para data_exp na terceira linha (linha 2) da grade de subplots.

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 6
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain more about how to access individual subplots in the 2D array?

What happens if I create a grid with more rows or columns?

How do I customize the appearance of each subplot?

close

bookSubplots

Deslize para mostrar o menu

A função subplots() do pyplot é utilizada para criar múltiplos gráficos em uma única figura. Você já a viu ao criar um canvas; agora, examinamos em mais detalhes.

Linhas e Colunas

Os principais argumentos são nrows e ncolumns, que definem a grade dos subplots. Por padrão, ambos são 1, produzindo um único Axes. subplots() retorna um Figure e um objeto Axes ou um array deles, dependendo do layout.

12345
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
copy

Uma grade de subplots 2 por 2 foi criada.

Note
Nota

Como há vários subplots, subplots retorna um array de objetos Axes, geralmente armazenado em uma variável chamada axs (o singular ax é usado para um único gráfico).

Neste caso, axs é um array bidimensional, portanto, é necessário tanto o índice da linha quanto o da coluna para acessar um subplot específico.

1234567891011121314
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear**2 fig, axs = plt.subplots(2, 2) axs[0, 0].plot(data_linear) axs[0, 1].plot(data_squared) axs[1, 0].scatter(data_linear, data_linear) axs[1, 1].scatter(data_linear, data_squared) plt.show()
copy

A primeira linha contém dois gráficos de linha; a segunda linha contém dois gráficos de dispersão. Cada gráfico deve ser desenhado utilizando o método do respectivo objeto Axes, e não plt.plot() ou plt.scatter().

Convertendo para Array 1D

É possível achatar o array 2D de Axes utilizando .ravel() para simplificar a indexação:

123456789
fig, axs = plt.subplots(2, 2) axs = axs.ravel() axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
copy

Com um array 2x2, axs.ravel() converte-o em um array 1D contendo quatro elementos.

Compartilhando um Eixo

A função subplots() também possui os parâmetros sharex e sharey. Eles controlam se os eixos x ou y são compartilhados entre os subplots. Ambos estão definidos como False por padrão.

123456789
fig, axs = plt.subplots(2, 2, sharex=True) axs = axs.ravel() axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
copy

Definir sharex=True compartilha o eixo x entre todos os subplots. Também é possível passar 'row' ou 'col' para compartilhar os eixos apenas dentro das linhas ou colunas.

Note
Estude Mais

Como de costume, sinta-se à vontade para explorar mais na subplots() documentação caso queira.

Tarefa

Swipe to start coding

  1. Utilize a função correta para criar uma grade de subplots.
  2. A grade deve conter 3 linhas e 1 coluna (especifique os dois primeiros parâmetros).
  3. Especifique o argumento nomeado mais à direita para que o eixo x seja compartilhado entre todos os subplots.
  4. Armazene o resultado da função de criação dos subplots nas variáveis fig e axs (da esquerda para a direita).
  5. Posicione o primeiro gráfico de linha para data_linear na primeira linha (linha 0) da grade de subplots.
  6. Posicione o segundo gráfico de linha para data_squared na segunda linha (linha 1) da grade de subplots.
  7. Posicione o terceiro gráfico de linha para data_exp na terceira linha (linha 2) da grade de subplots.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 6
single

single

some-alt