¿Cómo agregar un marco a una figura de mapa de calor nacida en el mar en Python?

Un mapa de calor es una representación gráfica de datos donde los valores se representan por color. Facilitan la comprensión de datos complejos de un vistazo. Los mapas de calor se pueden dibujar fácilmente usando seaborn en python. En este artículo, vamos a agregar un marco a una figura de mapa de calor nacida en el mar en Python.

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.
  • 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 

Crear un mapa de calor

Para dibujar el mapa de calor, utilizaremos el conjunto de datos incorporado de seaborn. Seaborn tiene muchos conjuntos de datos integrados como titanic.csv, penguins.csv, flight.csv, exercise.csv. También podemos hacer que nuestro conjunto de datos sea simplemente un ndarray rectangular.

Python3

# Import libraries
import seaborn as sns
import matplotlib.pyplot as plt
  
# Preparing dataset
example = sns.load_dataset("flights")
example = example.pivot("month", "year",
                        "passengers")
  
# Creating plot
res = sns.heatmap(example)
  
# show plot
plt.show()

Producción:

mapa de calor básico

Hay dos formas de dibujar el marco alrededor de un mapa de calor:

  1. Usando axhline y axvline.
  2. Uso de lomos (más óptimo)

Método 1: Usar axhline y axvline

La función Axes.axhline() y Axes.axvline() en el módulo de ejes de la biblioteca matplotlib se usa para agregar una línea horizontal y vertical a través del eje respectivamente.

Podemos dibujar dos líneas horizontales desde y=0 y desde y= número de filas en nuestro conjunto de datos y dibujará un marco que cubre dos lados de nuestro mapa de calor. Luego, podemos dibujar dos líneas verticales desde x = 0 y x = número de columnas en nuestro conjunto de datos y dibujará un marco que cubra los dos lados restantes para que nuestro mapa de calor tenga un marco completo.

Nota: No es una forma óptima de dibujar un marco, ya que cuando aumentamos el ancho de la línea no se considera cuando se superpone al mapa de calor.

Ejemplo 1.

Python3

# Import libraries
import seaborn as sns
import matplotlib.pyplot as plt
  
# Preparing dataset
example = sns.load_dataset("flights")
example = example.pivot("month", "year",
                        "passengers")
  
# Creating plot
res = sns.heatmap(example, cmap = "BuPu")
  
# Drawing the frame
res.axhline(y = 0, color='k',linewidth = 10)
res.axhline(y = example.shape[1], color = 'k',
            linewidth = 10)
  
res.axvline(x = 0, color = 'k',
            linewidth = 10)
  
res.axvline(x = example.shape[0], 
            color = 'k', linewidth = 10)
  
# show plot
plt.show()

Producción:

Ejemplo 2:

Python3

# Import libraries
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
  
# Preparing dataset
example = np.random.rand(10, 12)
  
# Creating plot
res = sns.heatmap(example, cmap = "magma", 
                  linewidths = 0.5)
  
# Drawing the frame
res.axhline(y = 0, color = 'k', 
            linewidth = 15)
  
res.axhline(y = 10, color = 'k',
            linewidth = 15)
  
res.axvline(x = 0, color = 'k',
            linewidth = 15)
  
res.axvline(x = 12, color = 'k',
            linewidth = 15)
# show plot
plt.show()

Producción:

Método 2: Usando espinas

Las espinas son las líneas que conectan las marcas del eje y señalan los límites del área de datos. Se pueden colocar en posiciones arbitrarias.

Ejemplo 1:

El ancho de la línea se puede cambiar usando el parámetro set_linewidth que acepta un valor flotante como argumento.

Python3

# Import libraries
import seaborn as sns
import matplotlib.pyplot as plt
  
# Preparing dataset
example = sns.load_dataset("flights")
example = example.pivot("month", "year", 
                        "passengers")
  
# Creating plot
res = sns.heatmap(example, cmap = "Purples")
  
# Drawing the frame
for _, spine in res.spines.items():
    spine.set_visible(True)
    spine.set_linewidth(5)
  
# show plot
plt.show()

Producción:

Ejemplo 2:

Podemos especificar el estilo del marco usando el parámetro set_linestyle del lomo (sólido, discontinuo, discontinuo, punteado).

Python3

# Import libraries
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
  
# Preparing dataset
example = np.random.rand(10, 12)
  
# Creating plot
res = sns.heatmap(example, cmap = "Greens",
                  linewidths = 2,
                  linecolor = "white")
  
# Drawing the frame
for _, spine in res.spines.items():
    spine.set_visible(True)
    spine.set_linewidth(3)
    spine.set_linestyle("dashdot")
  
# show plot
plt.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por hg070401 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 *