1
resposta

erro

Configurando o gráfico com parâmetros que potencializam a visualização dos dados

Chamando a função do gráfico de barras

ax = grafico_vendas_regiao()

Personalizando a legenda

ax.legend(bbox_to_anchor=(1,1), reverse = True, title = "Região", title_fontsize = 12, fontsize = 12)

fig = ax.get_figure()

AttributeError Traceback (most recent call last)
/tmp/ipython-input-2786473445.py in <cell line: 0>()
5
6 # Personalizando a legenda
----> 7 ax.legend(bbox_to_anchor=(1,1), reverse = True, title = "Região", title_fontsize = 12, fontsize = 12)
8
9 fig = ax.get_figure()

AttributeError: 'NoneType' object has no attribute 'legend'

1 resposta

Olá, Lourenço! Tudo bem?

O erro "AttributeError: 'NoneType' object has no attribute 'legend'" indica que a variável ax está recebendo um valor None, ou seja, a função grafico_vendas_regiao() provavelmente não está retornando um objeto válido do tipo Axes.

Certifique-se de que a função de fato retorne um objeto Axes do Matplotlib, como aquele gerado por plt.gca() ou plt.subplots(). Se ela não tiver return, ou retornar implicitamente None, isso causará o erro.

O código da função deve ser:

def grafico_vendas_regiao():
  # Definindo as cores do gráfico
  cores = [AZUL2, AZUL3, AZUL4, CINZA3, CINZA4]

  # Gerando o gráfico de colunas empilhadas 
  ax = vendas_reg.plot(kind="bar", stacked=True, figsize=(10,6), color=cores)

  # Personalizando o gráfico
  ax.set_title('Vendas das lojas de departamentos por região\nde 2016 a 2019', loc='left', fontsize=22, color=CINZA1)
  ax.set_xlabel('')
  ax.set_ylabel('')
  ax.set_yticklabels([])
  ax.xaxis.set_tick_params(labelsize=14, labelcolor=CINZA2, rotation=0)
  ax.set_frame_on(False)

  # Remover todos os ticks dos eixos
  ax.tick_params(axis="both", which="both", length=0)

  # Anotando uma conclusão no gráfico
  ax.text(3.35, 1.1e6, '87%', fontweight='bold', fontsize=20, color=AZUL1)
  ax.text(3.35, 5.5e5,
          'das vendas nas lojas\n'
          'estão concentradas nas regiões\n'
          '$\\bf{Sudeste}$, $\\bf{Nordeste}$ e\n'
          '$\\bf{Centro-Oeste}$ em 2019.',
          fontsize=14,
          linespacing=1.45,
          color=AZUL1)
  
  return ax

Na sequência, é importante atribuir corretamente o retorno da função:

ax = grafico_vendas_regiao()

Caso já esteja fazendo isso corretamente, recomendo reiniciar a sessão e executar tudo novamente, seguindo os passos abaixo:

  1. No menu superior do Google Colab, clique em "Ambiente de execução";
  2. Selecione a opção "Reiniciar sessão e executar tudo".

Você pode se guiar pela imagem a seguir:

Reiniciar sessão e executar tudo, no Google Colaboratory

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!