Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Gostaria de saber como fazer

Na atividade realizei a construção dos gráficos um a um sem a utilização do for, na hora de customiza-lo queria colocar as marcações de cada mês, mas quando fui fazer apenas a marcação do ultimo gráfico fico visível, gostaria de saber como faço para coloca-los em todos os gráficos um a um:

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

Mas na hora da exibição do gráfico, apenas o valor da Loja D foi replicado para todos os gráficos, gostaria de saber como posso fazer para que cada um fique com seu valor correto. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

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