Mapa de Calor
Um heatmap é um método para visualizar dados bidimensionais utilizando cores para representar a magnitude de cada valor.
Este exemplo utiliza um heatmap para representar as correlações pareadas entre variáveis em um conjunto de dados.
Criando um Heatmap Simples
O seaborn
possui uma função chamada heatmap()
. Seu único parâmetro obrigatório é data
, que deve ser um conjunto de dados 2D (retangular).
Talvez o uso mais comum de um heatmap seja com uma matriz de correlação, como no exemplo acima. Dado um DataFrame
, deve-se primeiro chamar seu método corr()
para obter uma matriz de correlação e, somente então, passar essa matriz como argumento para a função heatmap()
:
Um caso de uso comum para um heatmap é exibir uma matriz de correlação. Dado um DataFrame
, primeiro chame seu método corr()
para obter a matriz de correlação e, em seguida, passe essa matriz como argumento para a função heatmap()
.
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Loading the dataset with the countries data url = 'https://content-media-cdn.codefinity.com/courses/47339f29-4722-4e72-a0d4-6112c70ff738/countries_data.csv' countries_df = pd.read_csv(url, index_col=0) # Creating a correlation matrix with all numeric variables correlation_matrix = countries_df.corr(numeric_only=True) # Creating a heatmap based on the correlation matrix sns.heatmap(correlation_matrix) plt.show()
A matriz de correlação foi criada utilizando apenas as colunas numéricas do DataFrame
. As colunas que contêm strings foram excluídas ao definir numeric_only=True
.
Anotação e Cores
Este mapa de calor pode ser tornado mais informativo ao exibir o valor apropriado (coeficiente de correlação, neste caso) em cada célula. Isso pode ser feito simplesmente definindo o parâmetro annot
como True
.
Também é possível alterar as cores do nosso mapa de calor configurando o parâmetro cmap
(você pode explorá-lo no artigo "Escolhendo paletas de cores").
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Loading the dataset with the countries data url = 'https://content-media-cdn.codefinity.com/courses/47339f29-4722-4e72-a0d4-6112c70ff738/countries_data.csv' countries_df = pd.read_csv(url, index_col=0) # Creating a correlation matrix with all numeric variables correlation_matrix = countries_df.corr(numeric_only=True) # Setting annotation and color palette sns.heatmap(correlation_matrix, annot=True, cmap='viridis') plt.show()
A barra de cores à direita pode ser removida configurando cbar=False
.
Na maioria dos casos, isso é tudo o que você precisará em termos de personalização de heatmap, porém, você sempre pode explorar mais na documentação do heatmap()
.
Melhorando a Legibilidade
O último aspecto que pode melhorar a legibilidade do nosso heatmap é rotacionar os ticks utilizando as funções xticks()
e yticks()
já conhecidas:
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Loading the dataset with the countries data url = 'https://content-media-cdn.codefinity.com/courses/47339f29-4722-4e72-a0d4-6112c70ff738/countries_data.csv' countries_df = pd.read_csv(url, index_col=0) # Creating a correlation matrix with all numeric variables correlation_matrix = countries_df.corr(numeric_only=True) # Creating a heatmap based on the correlation matrix sns.heatmap(correlation_matrix, annot=True, cmap='viridis') # Rotating the ticks by 20 degrees counterclockwise plt.xticks(rotation=20) plt.yticks(rotation=20) plt.show()
Swipe to start coding
- Utilize o método correto para criar uma matriz de correlação.
- Defina o argumento do método para incluir apenas variáveis numéricas.
- Utilize a função apropriada para criar um mapa de calor.
- Defina
correlation_matrix
como os dados do mapa de calor especificando o primeiro argumento. - Adicione os valores em cada célula da matriz especificando o segundo argumento.
- Defina a paleta (mapa de cores) do mapa de calor como
'crest'
especificando o terceiro (último) argumento. - Gire os rótulos dos eixos x e y em 15 graus no sentido anti-horário especificando um argumento nomeado em
xticks()
eyticks()
.
Solução
Obrigado pelo seu feedback!