Mapa de calor de Seaborn: una guía completa

El mapa de calor se define como una representación gráfica de datos que utiliza colores para visualizar el valor de la array. En este, para representar valores más comunes o actividades mayores se utilizan colores más brillantes básicamente colores rojizos y para representar valores menos comunes o de actividad se prefieren colores más oscuros. El mapa de calor también se define por el nombre de la array de sombreado. Los mapas de calor en Seaborn se pueden trazar utilizando la función seaborn.heatmap().

seaborn.mapa de calor()

Sintaxis: seaborn.heatmap( data , * , vmin=Ninguno , vmax=Ninguno , cmap=Ninguno , center=Ninguno , annot_kws=Ninguno , linewidths =0 , linecolor=’white’ , cbar=True , **kwargs )

Parámetros importantes:

  • datos: conjunto de datos 2D que se puede convertir en un ndarray.
  • vmin , vmax: valores para anclar el mapa de colores; de lo contrario, se deducen de los datos y otros argumentos de palabras clave.
  • cmap: el mapeo de valores de datos al espacio de color.
  • centro: el valor en el que centrar el mapa de colores al trazar datos divergentes.
  • annot: si es verdadero, escriba el valor de los datos en cada celda.
  • fmt: código de formato de string para usar al agregar anotaciones.
  • linewidths: Ancho de las líneas que dividirán cada celda.
  • linecolor: Color de las líneas que dividirán cada celda.
  • cbar: Ya sea para dibujar una barra de colores.

Todos los parámetros excepto los datos son opcionales.

Devuelve: un objeto de tipo matplotlib.axes._subplots.AxesSubplot 

Entendamos el mapa de calor con ejemplos.

Mapa de calor básico

Realización de un mapa de calor con los parámetros por defecto. Crearemos datos 2D de 10 × 10 utilizando la función randint() del módulo NumPy.

Python3

# importing the modules
import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
  
# generating 2-D 10x10 matrix of random numbers
# from 1 to 100
data = np.random.randint(low = 1,
                         high = 100,
                         size = (10, 10))
print("The data to be plotted:\n")
print(data)
  
# plotting the heatmap
hm = sn.heatmap(data = data)
  
# displaying the plotted heatmap
plt.show()

Producción:

The data to be plotted:

[[46 30 55 86 42 94 31 56 21  7]
[68 42 95 28 93 13 90 27 14 65]
[73 84 92 66 16 15 57 36 46 84]
[ 7 11 41 37  8 41 96 53 51 72]
[52 64  1 80 33 30 91 80 28 88]
[19 93 64 23 72 15 39 35 62  3]
[51 45 51 17 83 37 81 31 62 10]
[ 9 28 30 47 73 96 10 43 30  2]
[74 28 34 26  2 70 82 53 97 96]
[86 13 60 51 95 26 22 29 14 29]]

Usaremos estos mismos datos en todos los ejemplos.

Anclaje del mapa de colores

Si establecemos el valor de vmin en 30 y el valor de vmax en 70, solo se mostrarán las celdas con valores entre 30 y 70. Esto se llama anclar el mapa de colores.

Python3

# importing the modules
import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
  
# generating 2-D 10x10 matrix of random numbers
# from 1 to 100
data = np.random.randint(low=1,
                         high=100,
                         size=(10, 10))
  
# setting the parameter values
vmin = 30
vmax = 70
  
# plotting the heatmap
hm = sn.heatmap(data=data,
                vmin=vmin,
                vmax=vmax)
  
# displaying the plotted heatmap
plt.show()

Producción:

Elegir el mapa de colores

En esto, veremos el parámetro cmap . Matplotlib nos proporciona múltiples mapas de colores, puede verlos todos aquí . En nuestro ejemplo, usaremos tab20 .

Python3

# importing the modules
import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
  
# generating 2-D 10x10 matrix of random numbers
# from 1 to 100
data = np.random.randint(low=1,
                         high=100,
                         size=(10, 10))
  
# setting the parameter values
cmap = "tab20"
  
# plotting the heatmap
hm = sn.heatmap(data=data,
                cmap=cmap)
  
# displaying the plotted heatmap
plt.show()

Producción:

Centrar el mapa de colores

Centrar el cmap en 0 pasando el parámetro center como 0.

Python3

# importing the modules
import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
  
# generating 2-D 10x10 matrix of random numbers
# from 1 to 100
data = np.random.randint(low=1,
                         high=100,
                         size=(10, 10))
  
# setting the parameter values
cmap = "tab20"
center = 0
  
# plotting the heatmap
hm = sn.heatmap(data=data,
                cmap=cmap,
                center=center)
  
# displaying the plotted heatmap
plt.show()

Producción:

Mostrar los valores de las celdas

Si queremos mostrar el valor de las celdas, pasamos el parámetro annot como True. fmt se utiliza para seleccionar el tipo de datos del contenido de las celdas mostradas. 

Python3

# importing the modules
import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
  
# generating 2-D 10x10 matrix of random numbers
# from 1 to 100
data = np.random.randint(low=1,
                         high=100,
                         size=(10, 10))
  
# setting the parameter values
annot = True
  
# plotting the heatmap
hm = sn.heatmap(data=data,
                annot=annot)
  
# displaying the plotted heatmap
plt.show()

Producción:

Personalización de la línea de separación

Podemos cambiar el grosor y el color de las líneas que separan las celdas usando los parámetros linewidths y linecolor respectivamente.

Python3

# importing the modules
import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
  
# generating 2-D 10x10 matrix of random numbers
# from 1 to 100
data = np.random.randint(low=1,
                         high=100,
                         size=(10, 10))
  
# setting the parameter values
linewidths = 2
linecolor = "yellow"
  
# plotting the heatmap
hm = sn.heatmap(data=data,
                linewidths=linewidths,
                linecolor=linecolor)
  
# displaying the plotted heatmap
plt.show()

Producción:

Ocultar la barra de colores

Podemos deshabilitar la barra de colores configurando el parámetro cbar en False.

Python3

# importing the modules
import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
  
# generating 2-D 10x10 matrix of random numbers
# from 1 to 100
data = np.random.randint(low=1,
                         high=100,
                         size=(10, 10))
  
# setting the parameter values
cbar = False
  
# plotting the heatmap
hm = sn.heatmap(data=data,
                cbar=cbar)
  
# displaying the plotted heatmap
plt.show()

Producción:

Quitar las etiquetas

Podemos deshabilitar la etiqueta x y la etiqueta y pasando False en los parámetros xticklabels e yticklabels respectivamente.

Python3

# importing the modules
import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
  
# generating 2-D 10x10 matrix of random numbers
# from 1 to 100
data = np.random.randint(low=1,
                         high=100,
                         size=(10, 10))
  
# setting the parameter values
xticklabels = False
yticklabels = False
  
# plotting the heatmap
hm = sn.heatmap(data=data,
                xticklabels=xticklabels,
                yticklabels=yticklabels)
  
# displaying the plotted heatmap
plt.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por Yash_R y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *