1
resposta

[Projeto] Desafio: criando um gráfico de linhas com a biblioteca Seaborn

Filtramos los 4 países

top_4_sulamerica = america_sul.sort_values('Total', ascending=False).head(4)

sns.set_theme(style='darkgrid')
sns.set_palette('deep')

fig, ax = plt.subplots(figsize=(10, 5))

ax = sns.lineplot(df.loc['Brasil', anos], label='Brasil', lw=3)
ax = sns.lineplot(df.loc['Argentina', anos], label='Argentina', lw=3)
ax = sns.lineplot(df.loc['Peru', anos], label='Peru', lw=3)
ax = sns.lineplot(df.loc['Colômbia', anos], label='Colômbia', lw=3)

ax.set_title('Imigração dos maiores países da América do Sul\npara o Canadá de 1980 a 2013', loc='left', fontsize=20)
ax.set_xlabel('Ano', fontsize=14)
ax.set_ylabel('Número de imigrantes', fontsize=14)

ax.xaxis.set_major_locator(plt.MultipleLocator(5))

ax.legend(title='Países', loc='upper right', bbox_to_anchor=(1.18, 1.02))

plt.show()

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

1 resposta

Olá, Humberly. Como vai?

Parabéns pela resolução do desafio! O gráfico ficou excelente e demonstra que você compreendeu muito bem como utilizar a biblioteca Seaborn para criar visualizações claras e informativas.

A escolha do estilo darkgrid e da paleta de cores facilitou bastante a leitura das tendências individuais de cada país. Gostaria de destacar alguns pontos técnicos muito interessantes na sua implementação:

  • Manipulação de Eixos: O uso de plt.MultipleLocator(5) foi uma ótima decisão de design, pois evita o excesso de informações no eixo X, mantendo a escala temporal nítida.
  • Posicionamento da Legenda: Ao utilizar o bbox_to_anchor, você resolveu um problema comum em visualização de dados: a legenda sobrepondo as linhas do gráfico. Isso garante que toda a área de dados seja aproveitada.
  • Hierarquia Visual: Os títulos e rótulos dos eixos com fontes maiores facilitam a acessibilidade e a interpretação rápida do gráfico.

Como uma sugestão para aprofundar ainda mais seus conhecimentos em Seaborn e tornar o código mais dinâmico (o famoso estilo Pythonic), você poderia utilizar um laço de repetição para plotar as linhas. Isso evita a repetição manual de sns.lineplot para cada país:

fig, ax = plt.subplots(figsize=(10, 5))

# Iterando sobre o index do seu DataFrame filtrado
for pais in top_4_sulamerica.index:
    sns.lineplot(x=anos, y=df.loc[pais, anos], label=pais, lw=3, ax=ax)

# O restante das configurações de título e eixos permanecem iguais

Essa abordagem é especialmente útil quando você precisa lidar com uma lista maior de categorias, tornando seu código mais fácil de manter. Note que, na imagem que você compartilhou, o destaque da Colômbia a partir dos anos 2000 é muito evidente, o que mostra como uma boa visualização conta uma história sobre os dados.

Continue com esse ótimo trabalho e explorando as diversas possibilidades de customização que o Matplotlib e o Seaborn oferecem!

Espero que possa ter lhe ajudado!