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

Deslize para mostrar o menu

book
Subplots

A função subplots() do pyplot serve exatamente para esse propósito. Ela foi utilizada anteriormente para criar um canvas na primeira seção, e agora será analisada em mais detalhes.

Linhas e Colunas

Os argumentos mais importantes dessa função são nrows e ncolumns, que definem o número de linhas e colunas na grade de subplots. Por padrão, ambos são 1, resultando em um único gráfico (Axes).

A função subplots() retorna um objeto Figure e um objeto Axes ou um array de objetos Axes, dependendo do tamanho da grade.

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á múltiplos 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.

12345678910111213141516
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Creating a different plot for each Axes object 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 (linha 0) possui dois gráficos de linha, e a segunda linha (linha 1) possui dois gráficos de dispersão.

Como cada gráfico é colocado em um subplot separado, não é possível utilizar plt.plot() ou plt.scatter() diretamente. A abordagem adequada é chamar o método correspondente em cada objeto Axes individualmente.

Convertendo para Array 1D

Também é possível utilizar o método .ravel() para converter um array 2D de Axes em um array achatado contíguo 1D:

12345678910111213141516171819
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Flattening axs to a 1D array for easier indexing axs = axs.ravel() # Creating a different plot for each Axes object 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() o converte 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.

12345678910111213141516171819
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Create a 2x2 subplot grid with shared x-axis across all subplots fig, axs = plt.subplots(2, 2, sharex=True) # Flatten axs array for easier indexing axs = axs.ravel() # Plotting different data on each subplot 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, o que é útil aqui porque todos os subplots utilizam os mesmos valores no eixo x.

Você também pode definir sharex ou sharey como 'row' para compartilhar o eixo dentro de cada linha de subplot, ou 'col' para compartilhar dentro de cada coluna de subplot.

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
Sentimos muito que algo saiu errado. O que aconteceu?

Pergunte à IA

expand
ChatGPT

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

book
Subplots

A função subplots() do pyplot serve exatamente para esse propósito. Ela foi utilizada anteriormente para criar um canvas na primeira seção, e agora será analisada em mais detalhes.

Linhas e Colunas

Os argumentos mais importantes dessa função são nrows e ncolumns, que definem o número de linhas e colunas na grade de subplots. Por padrão, ambos são 1, resultando em um único gráfico (Axes).

A função subplots() retorna um objeto Figure e um objeto Axes ou um array de objetos Axes, dependendo do tamanho da grade.

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á múltiplos 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.

12345678910111213141516
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Creating a different plot for each Axes object 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 (linha 0) possui dois gráficos de linha, e a segunda linha (linha 1) possui dois gráficos de dispersão.

Como cada gráfico é colocado em um subplot separado, não é possível utilizar plt.plot() ou plt.scatter() diretamente. A abordagem adequada é chamar o método correspondente em cada objeto Axes individualmente.

Convertendo para Array 1D

Também é possível utilizar o método .ravel() para converter um array 2D de Axes em um array achatado contíguo 1D:

12345678910111213141516171819
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Flattening axs to a 1D array for easier indexing axs = axs.ravel() # Creating a different plot for each Axes object 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() o converte 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.

12345678910111213141516171819
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Create a 2x2 subplot grid with shared x-axis across all subplots fig, axs = plt.subplots(2, 2, sharex=True) # Flatten axs array for easier indexing axs = axs.ravel() # Plotting different data on each subplot 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, o que é útil aqui porque todos os subplots utilizam os mesmos valores no eixo x.

Você também pode definir sharex ou sharey como 'row' para compartilhar o eixo dentro de cada linha de subplot, ou 'col' para compartilhar dentro de cada coluna de subplot.

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
Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Sentimos muito que algo saiu errado. O que aconteceu?
some-alt