Oiiee, tudo bem?
Uma forma de deixar o código mais limpo e eficiente, reduzindo repetições e melhorando a legibilidade, seria essa:
paises = ['Brasil', 'Colômbia', 'Argentina', 'Peru']
ymin, ymax = 0, 7000
fig, axs = plt.subplots(2, 2, figsize=(10, 6))
fig.subplots_adjust(hspace=0.5, wspace=0.3)
fig.suptitle('Imigração dos quatro maiores países da América do Sul para o Canadá de 1980 a 2013')
for ax, pais in zip(axs.flat, paises):
ax.plot(df.loc[pais, anos])
ax.set_title(pais)
ax.set_xlabel('Ano')
ax.set_ylabel('Número de imigrantes')
ax.set_ylim(ymin, ymax)
ax.xaxis.set_major_locator(plt.MultipleLocator(5))
plt.show()
Otimizações realizadas:
- Loop Unificado: Combinei os loops em um único loop para configuração de título, etiquetas e limites do eixo. Isso reduz a repetição de código e facilita as modificações futuras.
- Iteração Direta: Usei o zip para iterar diretamente sobre os eixos (axs.flat) e os países. Isso elimina a necessidade de indexação explícita, tornando o código mais claro e menos propenso a erros.
- Definição de Variáveis Comuns: Movi as configurações comuns de xlabel, ylabel, ylim, e o localizador do eixo x para dentro do loop, garantindo que cada subplot seja ajustado adequadamente sem repetir código fora do loop.
Esse código mantém toda a funcionalidade do original, mas com uma abordagem mais enxuta e fácil de manter.
Qualquer dúvida, não existe em perguntar!
Bons estudos :)