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:
Bom, essa seria um forma de fazer isso que você pensou...
Fique à vontade para testar outras coisas e bons estudos :)