Como criar subplots em Python?
Subplots são múltiplos gráficos exibidos em uma mesma figura, cada um ocupando uma área distinta. Em vez de criar vários gráficos em janelas separadas, você pode criar uma figura com várias “divisões” para mostrar diferentes gráficos em um único layout.
No contexto do matplotlib (biblioteca de visualização em Python), subplots são criados com a função plt.subplot()
ou plt.subplots()
. Essas funções permitem dividir a figura em várias partes, cada uma contendo um gráfico diferente.
O que você vai aprender?
Explicação:
Neste exercício, você vai criar um DataFrame contendo apenas os imóveis do tipo escolhido pelo usuário e gerar subplots horizontais que mostram três gráficos diferentes para o tipo de imóvel selecionado:
- Um gráfico de dispersão que mostra a relação entre o número de quartos e o valor de aluguel.
- Um gráfico de dispersão que mostra a relação entre o número de vagas e o valor de aluguel.
- Um histograma da distribuição dos valores de aluguel.
PASSOS:- Exiba as opções de tipos de imóveis disponíveis no DataFrame. O usuário escolherá um tipo de imóvel com base na lista apresentada.
- Filtre os imóveis pelo tipo escolhido pelo usuário.
- Crie um dicionário contendo os dados filtrados (Bairro, Quartos, Vagas, Valor) e, a partir desse dicionário, crie um novo DataFrame.
- Gere três subplots em uma linha:
- O primeiro gráfico de dispersão mostra a relação entre o número de quartos e o valor de aluguel.
- O segundo gráfico de dispersão mostra a relação entre o número de vagas e o valor de aluguel.
- O terceiro gráfico é um histograma que mostra a distribuição dos valores de aluguel.
- Exiba os primeiros registros do novo DataFrame filtrado.
Passo 1: Importando e Manipulando Dados com Pandas
Primeiro, usamos a função importar_dados()
para carregar nosso arquivo CSV com informações sobre aluguel de imóveis. Usando o pd.read_csv()
, podemos importar os dados diretamente de um link!
import pandas as pd
def importar_dados():
dados = 'aluguel.csv'
leitura_dados = pd.read_csv(dados, sep=";")
return leitura_dados
- Pandas será usado para manipular nossos dados em formato de DataFrame.
- Matplotlib é a biblioteca responsável por criar os gráficos.
Passo 2: Filtrando os dados
Para deixar nossa análise mais interessante, vamos dar ao usuário a possibilidade de escolher o tipo de imóvel que ele quer analisar. Criamos a função escolher_tipo_imovel()
que exibe as opções de imóveis disponíveis.
def escolher_tipo_imovel(df):
tipos_disponiveis = df['Tipo'].unique()
print("Tipos de imóveis disponíveis:")
for i, tipo in enumerate(tipos_disponiveis):
print(f"{i + 1}. {tipo}")
escolha = int(input("\nEscolha o número correspondente ao tipo de imóvel que você deseja filtrar: ")) - 1
tipo_escolhido = tipos_disponiveis[escolha]
return tipo_escolhido
Esse código permite que o usuário escolha o tipo de imóvel para gerar gráficos específicos.
Passo 3: Criando subplots
Agora, vamos ao ponto central: criar subplots para visualizar dados diferentes em gráficos separados, mas na mesma figura. A função filtrar_imoveis_por_tipo()
cria três subplots:
def filtrar_imoveis_por_tipo(df, tipo):
df_tipo = df[df['Tipo'] == tipo]
# Criando um DataFrame com os dados filtrados
tipo_dict = {
'Bairro': df_tipo['Bairro'].tolist(),
'Quartos': df_tipo['Quartos'].tolist(),
'Vagas': df_tipo['Vagas'].tolist(),
'Valor': df_tipo['Valor'].tolist()
}
df_tipo_novo = pd.DataFrame(tipo_dict)
# Gerando os subplots
fig, axs = plt.subplots(1, 3, figsize=(18, 6))
# Subplot 1: Número de Quartos vs. Valor de Aluguel
axs[0].scatter(df_tipo_novo['Quartos'], df_tipo_novo['Valor'], alpha=0.6)
axs[0].set_title(f"Nº de Quartos vs. Valor de Aluguel - {tipo}")
axs[0].set_xlabel("Número de Quartos")
axs[0].set_ylabel("Valor de Aluguel (R$)")
axs[0].grid(True)
# Subplot 2: Número de Vagas vs. Valor de Aluguel
axs[1].scatter(df_tipo_novo['Vagas'], df_tipo_novo['Valor'], alpha=0.6)
axs[1].set_title(f"Nº de Vagas vs. Valor de Aluguel - {tipo}")
axs[1].set_xlabel("Número de Vagas")
axs[1].set_ylabel("Valor de Aluguel (R$)")
axs[1].grid(True)
# Subplot 3: Histograma da Distribuição dos Valores de Aluguel
axs[2].hist(df_tipo_novo['Valor'], bins=20, edgecolor='black')
axs[2].set_title(f"Distribuição dos Valores de Aluguel - {tipo}")
axs[2].set_xlabel("Valor de Aluguel (R$)")
axs[2].set_ylabel("Frequência")
plt.tight_layout()
plt.show()
return df_tipo_novo
Explicando cada gráfico:
- Gráfico 1: Número de Quartos vs. Valor de Aluguel.
- Gráfico 2: Número de Vagas vs. Valor de Aluguel.
- Gráfico 3: Distribuição dos Valores de Aluguel (Histograma).
Esses gráficos ajudam a visualizar as correlações entre variáveis importantes, como quartos, vagas e valor de aluguel.
Passo 4: Executando o programa
Agora que temos todas as funções prontas, basta executarmos a função principal. Isso permitirá que o usuário escolha o tipo de imóvel e visualize os dados filtrados em forma de gráficos.
def main():
df = pd.read_csv('aluguel.csv', sep=';')
# Exibir os tipos de imóveis e permitir ao usuário escolher
tipo_escolhido = escolher_tipo_imovel(df)
# Filtrar o DataFrame e gerar os subplots
df_tipo_novo = filtrar_imoveis_por_tipo(df, tipo_escolhido)
print(df_tipo_novo.head())
if __name__ == "__main__":
main()
RESULTADO

Você gostou do desafio de Python?
Clique no botão abaixo para baixar o projeto completo!