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.
12345import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Uma grade de subplots 2 por 2 foi criada.
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.
12345678910111213141516import 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()
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 o array 2D de Axes em um array achatado contíguo 1D:
12345678910111213141516171819import 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()
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.
12345678910111213141516171819import 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()
Definir sharex=True compartilha o eixo x entre todos os subplots, o que é útil neste caso porque todos os subplots utilizam os mesmos valores no eixo x.
Também é possível 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.
Como de costume, sinta-se à vontade para explorar mais na
subplots() documentação caso queira.
Swipe to start coding
- Utilizar a função correta para criar uma grade de subplots.
- A grade deve conter 3 linhas e 1 coluna (especificar os dois primeiros parâmetros).
- Especificar o argumento nomeado mais à direita para que o eixo x seja compartilhado entre todos os subplots.
- Armazenar o resultado da função de criação dos subplots nas variáveis
figeaxs(da esquerda para a direita). - Posicionar o primeiro gráfico de linha para
data_linearna primeira linha (linha0) da grade de subplots. - Posicionar o segundo gráfico de linha para
data_squaredna segunda linha (linha1) da grade de subplots. - Posicionar o terceiro gráfico de linha para
data_expna terceira linha (linha2) da grade de subplots.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.85
Subplots
Deslize para mostrar o menu
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.
12345import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Uma grade de subplots 2 por 2 foi criada.
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.
12345678910111213141516import 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()
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 o array 2D de Axes em um array achatado contíguo 1D:
12345678910111213141516171819import 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()
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.
12345678910111213141516171819import 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()
Definir sharex=True compartilha o eixo x entre todos os subplots, o que é útil neste caso porque todos os subplots utilizam os mesmos valores no eixo x.
Também é possível 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.
Como de costume, sinta-se à vontade para explorar mais na
subplots() documentação caso queira.
Swipe to start coding
- Utilizar a função correta para criar uma grade de subplots.
- A grade deve conter 3 linhas e 1 coluna (especificar os dois primeiros parâmetros).
- Especificar o argumento nomeado mais à direita para que o eixo x seja compartilhado entre todos os subplots.
- Armazenar o resultado da função de criação dos subplots nas variáveis
figeaxs(da esquerda para a direita). - Posicionar o primeiro gráfico de linha para
data_linearna primeira linha (linha0) da grade de subplots. - Posicionar o segundo gráfico de linha para
data_squaredna segunda linha (linha1) da grade de subplots. - Posicionar o terceiro gráfico de linha para
data_expna terceira linha (linha2) da grade de subplots.
Solução
Obrigado pelo seu feedback!
single