Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Utilizando for para criar gráficos de linha em uma figura com Seaborn

Olá boa tarde!

Eu decidi fazer uns testes usando o Seaborn, e decidi utilizar um for para criar 4 gráficos de linhas utilizando como base a Atividade da Aula 4, que era para criar um gráfico de linha contendo as tendências de imigração para os 4 maiores países da América: Brasil, Colômbia, Argentina e Peru.

Eu filtrei os dados da tabela para facilitar conforme abaixo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Porém, parece que não estava dando certo e o código estava me retornando apenas um dos gráficos:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Gostaria de saber se é possível fazer essa iteração junto com o Seaborn. Porque até onde vi, usando o Matplotlib é tranquilo.

2 respostas
solução!

Olá, José!

Tudo bom?

O desafio era plotar todos os países no mesmo gráfico, mas se você quiser fazer em subplots usando um for, pode ser um código como esse abaixo:

sns.set_theme()
sns.set_palette('Dark2')

fig = plt.figure(figsize=(12, 8))

countries = ['Brasil', 'Argentina', 'Peru', 'Colômbia']
colors = sns.color_palette('Dark2', len(countries))

for i, country in enumerate(countries):
    ax = plt.subplot(2, 2, i + 1)
    ax.set_ylim(0, 7000)
    ax.plot(df.loc[country, anos], color=colors[i], lw=3)
    ax.set_title(country)
    ax.xaxis.set_major_locator(plt.MultipleLocator(5))
    ax.set_xlabel('Ano', fontsize=14)
    ax.set_ylabel('Número de imigrantes', fontsize=14)

fig.suptitle('Imigração dos maiores países da América do Sul para o Canadá de 1980 a 2013', fontsize=18)

plt.tight_layout(pad=2.0)
plt.show()

Neste código, usamos plt.subplot(2, 2, i + 1) para criar um subplot na posição i + 1 da matriz 2x2. O parâmetro i + 1 é usado para garantir que os subplots sejam indexados de 1 a 4 em vez de 0 a 3.

Note que, ao usar essa abordagem, precisamos criar a figura usando plt.figure() antes do loop for. Em seguida, referenciamos a figura usando fig no loop para adicionar subplots a ela.

Dentro do loop, definimos o limite do eixo y para cada subplot como 0 e 7000 usando ax.set_ylim(0, 7000). Em seguida, plotamos a linha correspondente ao país usando ax.plot e passamos a cor da linha através do parâmetro color. Definimos o título do subplot com o nome do país usando ax.set_title.

Por fim, adicionamos um título geral para o conjunto de subplots usando fig.suptitle e ajustamos o espaçamento entre os subplots usando plt.tight_layout(pad=2.0).

O resultado dele seria essa figura: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Bom, essa seria um forma de fazer isso que você pensou... Fique à vontade para testar outras coisas e bons estudos :)

Ahh entendi. Bem diferente do que eu havia imaginado.

Muito obrigado por me mostrar essa dica prof. Abraço !