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

[Dúvida] Dificuldade de criação do gráfico heatmap com seaborn

Olá,

Estou com dificuldade na criação do gráfico heatmap com seaborn.

Só aparece o valor na primeira linha, quando preciso que os valores sejam exibidos em todas as linhas. Pesquisando na internet, todas as referências que vi foi o parâmetro annot=True, ainda assim continua aparecendo só na primeira linha.

Exemplo:

Create an annotated heatmap

plt.figure(figsize = (14, 14))
plt.rcParams.update({'font.size': 9})
sns.heatmap(corr, vmin = -1, vmax = 1, center = 0, annot=True, fmt=".2f", square=True, linewidths=.5)
plt.show()

Gráfico heatmap com seaborn - 1

plt.figure(figsize=(6, 5))
sns.heatmap(matriz_confusao, annot=True, fmt='d', cmap='Blues', xticklabels=['Não Churn','Churn'], yticklabels=['Não Churn','Churn'])
plt.ylabel('Real')
plt.xlabel('Predito')
plt.title('Matriz de Confusão')
plt.show()

Gráfico heatmap com seaborn - 2

Segue versões do Python e biblioetcas matplolib e seaborn instaladas.

Versões do Python e biblioetcas matplolib e seaborn instaladas

2 respostas
solução!

Oi Jean, tudo bem?

Não encontrei esse código no curso, então imagino que seja de um projeto externo, certo?

Pesquisando sobre esse comportamento, encontrei relatos em fóruns que apontam para um bug de incompatibilidade entre seaborn 0.12.x e matplotlib 3.8. Nessa combinação, as annotations do heatmap às vezes só aparecem na primeira linha (ou somem em parte da figura), mesmo com annot=True.

Segue uma sugestão de como resolver:

1. Atualizar o seaborn para 0.13+

pip install -U seaborn

ou

2. Fazer downgrade do matplotlib para 3.7.x

pip install "matplotlib<3.8"

Escolha apenas uma das soluções acima.

Depois disso, reinicie o seu notebook para aplicar as alterações. Ao rodar o mesmo código, as anotações devem aparecer em todas as células normalmente.

Sobre a matriz de confusão o código está correto. Apenas garanta que a matriz (matriz_confusao) seja do tipo int ou np.int64 e use fmt='d' (como você já fez). Se notar algum valor “sumido”, provavelmente é o mesmo bug acima, e a atualização do seaborn/matplotlib também deve corrigir.

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!

Oi Monalisa, obrigado pela atenção.

Atualizei a versão do seaborn e fiz o downgrade do matplotlib e funcionou perfeitamente.

Muito obrigado.