Olá, Pedro, tudo bem?
O loop está aplicando as anotações apenas no último gráfico, pois está usando índices fixos para os subplots.
Para corrigir isso, você pode usar um loop for
para iterar sobre cada subplot e aplicar as anotações corretamente. Deixo como sugestão de o código:
fig, axs = plt.subplots(2, 2, figsize=[16, 8])
fig.subplots_adjust(hspace=0.8, wspace=0.4)
fig.suptitle('Vendas Anual por Loja', fontsize=18)
lojas = ['A', 'B', 'C', 'D']
cores = ['r', 'b', 'g', 'c']
for i, (loja, cor) in enumerate(zip(lojas, cores)):
ax = axs.flat[i]
ax.plot(df.loc[loja], lw=3, color=cor)
ax.set_title(f'Vendas Loja {loja}', loc='left')
ax.set_xlabel('Meses')
ax.set_ylabel('Vendas')
ax.grid(linestyle='--')
for x, y in enumerate(df.loc[loja]):
ax.annotate(str(y), xy=(x, y), ha='center', va='center')
ymin = 0
ymax = 500
for ax in axs.ravel():
ax.set_ylim(ymin, ymax)
plt.show()
Dessa forma, cada subplot terá suas próprias anotações de valores, e você poderá visualizar as marcações corretamente em todos os gráficos.
Espero ter ajudado.
Qualquer dúvida, não hesite em compartilhar no fórum.
Abraços!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado