Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

deu erro ao explodir o grafico pie

usei o código da aula

fig = plt.figure(figsize=(5,4))
eixo = fig.add_axes([0,0,1,1])

explodir = [0.1, 0, 0, 0, 0, 0.1, 0.1]

eixo.pie(temperatura_por_dia_da_semana, labels=temperatura_por_dia_da_semana.index,
         autopct='%.1f%%', explode=explodir, shadow=True)
eixo.set_title('Temperatura por dia da semana', fontsize=15, pad=10)

Mas está dando esse erro:

ValueError                                Traceback (most recent call last)
Input In [44], in <cell line: 6>()
      2 eixo = fig.add_axes([0,0,1,1])
      4 explodir = [0.1, 0, 0, 0, 0, 0.1, 0.1]
----> 6 eixo.pie(temperatura_por_dia_da_semana, labels=temperatura_por_dia_da_semana.index,
      7          autopct='%.1f%%', explode=explodir, shadow=True)
      8 eixo.set_title('Temperatura por dia da semana', fontsize=15, pad=10)

File D:\Anaconda\lib\site-packages\matplotlib\__init__.py:1412, in _preprocess_data.<locals>.inner(ax, data, *args, **kwargs)
   1409 @functools.wraps(func)
   1410 def inner(ax, *args, data=None, **kwargs):
   1411     if data is None:
-> 1412         return func(ax, *map(sanitize_sequence, args), **kwargs)
   1414     bound = new_sig.bind(ax, *args, **kwargs)
   1415     auto_label = (bound.arguments.get(label_namer)
   1416                   or bound.kwargs.get(label_namer))

File D:\Anaconda\lib\site-packages\matplotlib\axes\_axes.py:3062, in Axes.pie(self, x, explode, labels, colors, autopct, pctdistance, shadow, labeldistance, startangle, radius, counterclock, wedgeprops, textprops, center, frame, rotatelabels, normalize)
   3060     raise ValueError("'label' must be of length 'x'")
   3061 if len(x) != len(explode):
-> 3062     raise ValueError("'explode' must be of length 'x'")
   3063 if colors is None:
   3064     get_next_color = self._get_patches_for_fill.get_next_color

ValueError: 'explode' must be of length 'x'
4 respostas

Olá, Viviana, tudo bem?

Que estranho esse erro... Você consegue verificar para mim se a sua coluna de dia_da_semana tem 7 valores, correspondentes aos dias da semana? É só digitar em uma célula a parte dados["dia_da_semana"].unique() e ver essa saída.

Pelo erro ele está apontando que a quantidade de explode que você está pedindo é diferente das possibilidades de valores que você tem, ou seja, é como se tivessem mais ou menos diferentes dias no seu dataset. Caso, não apresente essa diferença que o erro apontou, você pode tentar essas duas situações:

  1. Reiniciar o kernel ou a execução e voltar a rodar o código antes do erro.
  2. Verificar o caso anterior a esse erro do plot do gráfico de pizza e me mandar uma imagem por aqui para que eu possa ver se teve alguma inconsistência.

Espero ter ajudado e qualquer dúvida é só chamar!

Forte abraço!

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

Boa tarde,

  • df['dia_da_semana'].unique() array(['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta',
     'Sábado'], dtype=object)
  • o grafico anterior da pizza, sem explodir, deu certo Grafico pizza sem explodir
  • somente o que explode nao deu certo, reinicie, enfim, continua dando o mesmo erro. Tudo antes da aula deu certo. Obrigado
solução!

Hummm...

Como você pode notar em seu gráfico, mesmo que os valores do dia de sábado estejam presentes no dataset df, quando utilizamos o DataFrame temperatura_por_dia_da_semana eles não estão presentes.

Você conseguiria verificar se na criação do temperatura_por_dia_da_semana, você possa ter esquecido de adicionar o dia de sábado? É bem na parte em que o professor desenha o gráfico de barras, onde o código realmente seria:

temperatura_por_dia_da_semana = dados.groupby('dia_da_semana')['temperatura'].mean()
nome_dias = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado']
temperatura_por_dia_da_semana = temperatura_por_dia_da_semana[nome_dias]

Fico no aguardo!

Realmente esqueci o sábado. Muito obrigado pelo retorno!