Compartir tecnología

Explora Matplotlib: dibujo de mapas de calor

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Introducción

Los mapas de calor son una forma eficaz de mostrar datos matriciales mediante mapeo de colores. Matplotlibimshow Las funciones son una herramienta poderosa para crear varios mapas de calor. Antes de comenzar con el ejemplo, primero comprendamos los parámetros principales:

  • datos:Los datos de la matriz a trazar.
  • Mapa del cm:El mapeo de colores determina la distribución de colores en el mapa de calor.
  • interpolación:Método de interpolación, que afecta la suavidad del mapa de calor.
  • vmín y vmáx:Especifique los valores mínimo y máximo para el mapa de colores.

2. Mapa de calor básico

Primero, dibujemos un mapa de calor básico para mostrar la distribución general del conjunto de datos:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. data = np.random.random((10, 10)) # 生成随机矩阵数据
  4. plt.imshow(data, cmap='viridis', interpolation='nearest')
  5. plt.colorbar()
  6. plt.title('基本热力图')
  7. plt.show()

En este ejemplo simple, usamosviridismapa de colores ynearestmétodo de interpolación.

imagen-20240204002238552

3. Mapeo de colores personalizado

Matplotlib admite una variedad de mapas de colores integrados, pero también podemos personalizar el mapa de colores para que el mapa de calor sea más personalizado. A continuación se muestra un ejemplo de un mapa de colores personalizado:

  1. custom_cmap = plt.cm.get_cmap('coolwarm', 5) # 从'coolwarm'中选择5个颜色
  2. plt.imshow(data, cmap=custom_cmap, interpolation='bilinear')
  3. plt.colorbar()
  4. plt.title('自定义颜色映射')
  5. plt.show()

4. Añade comentarios

Agregar anotaciones a un mapa de calor puede transmitir más claramente el significado de los datos.nosotros podemos usarannotateLa función etiqueta los valores en el mapa de calor:

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(data, cmap='plasma', interpolation='bicubic')
  3. for i in range(len(data)):
  4. for j in range(len(data[i])):
  5. text = ax.text(j, i, f'{data[i, j]:.2f}', ha='center', va='center', color='w')
  6. plt.colorbar(im)
  7. plt.title('带有注释的热力图')
  8. plt.show()

5. Mapas de calor de diferentes formas.

Matplotlib también admite el dibujo de mapas de calor de diferentes formas, como puntos circulares o elípticos. Aquí hay un ejemplo:

  1. from matplotlib.patches import Ellipse
  2. fig, ax = plt.subplots()
  3. im = ax.imshow(data, cmap='YlGnBu', interpolation='bicubic')
  4. # 添加椭圆形状的点
  5. for i in range(len(data)):
  6. for j in range(len(data[i])):
  7. ellipse = Ellipse((j, i), 0.8, 0.8, edgecolor='w', facecolor='none')
  8. ax.add_patch(ellipse)
  9. plt.colorbar(im)
  10. plt.title('不同形状的热力图')
  11. plt.show()

6. Bloquear mapa de calor

A veces queremos resaltar ciertos bloques en una matriz para resaltar más la información clave.Podemos hacer esto usandoimshowdeextentParámetros para lograr esto:

  1. fig, ax = plt.subplots()
  2. block_data = np.random.random((5, 5)) # 生成块状数据
  3. ax.imshow(block_data, cmap='Reds', interpolation='nearest', extent=[2, 7, 2, 7])
  4. plt.colorbar()
  5. plt.title('分块热力图')
  6. plt.show()

imagen-20240204002304491

7. Mapa de calor de subgrafos múltiples

En algunos casos, es posible que necesitemos mostrar varios mapas de calor en el mismo gráfico para comparar o presentar diferentes aspectos de los datos.Esto se puede hacer a través de Matplotlibsubplotlograr:

  1. fig, axs = plt.subplots(1, 2, figsize=(10, 4)) # 一行两列的子图
  2. # 第一个子图
  3. axs[0].imshow(data, cmap='Blues', interpolation='nearest')
  4. axs[0].set_title('子图1')
  5. # 第二个子图
  6. axs[1].imshow(data.T, cmap='Oranges', interpolation='bicubic') # 转置数据以展示不同热力图
  7. axs[1].set_title('子图2')
  8. plt.show()

8. Mapa de calor 3D

Matplotlib también admite el dibujo de mapas de calor 3D, lo cual es muy útil para mostrar datos con estructura tridimensional:

  1. from mpl_toolkits.mplot3d import Axes3D
  2. fig = plt.figure(figsize=(8, 6))
  3. ax = fig.add_subplot(111, projection='3d')
  4. x, y = np.meshgrid(range(len(data)), range(len(data)))
  5. ax.plot_surface(x, y, data, cmap='viridis')
  6. ax.set_title('3D热力图')
  7. plt.show()

9. Configuración avanzada de asignación de colores y barra de colores

Matplotlib permite una mayor exploración de configuraciones avanzadas de mapas de colores y barras de colores para satisfacer necesidades más complejas. A continuación se muestra un ejemplo que demuestra cómo personalizar una barra de colores y agregar etiquetas de barra de colores:

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
  3. # 自定义颜色栏
  4. cbar = plt.colorbar(im, ax=ax, fraction=0.046, pad=0.04)
  5. cbar.set_label('数据值', rotation=270, labelpad=15)
  6. plt.title('高级颜色栏设置')
  7. plt.show()

imagen-20240204002506344

10. Visualización dinámica del mapa de calor.

A veces, queremos mostrar cambios en los datos de forma dinámica, lo que se puede hacer usando Matplotlib.FuncAnimation lograr. El siguiente es un ejemplo simple de mapa de calor dinámico:

  1. from matplotlib.animation import FuncAnimation
  2. fig, ax = plt.subplots()
  3. data_frames = [np.random.random((10, 10)) for _ in range(10)] # 生成多帧数据
  4. def update(frame):
  5. ax.clear()
  6. im = ax.imshow(data_frames[frame], cmap='Blues', interpolation='nearest')
  7. plt.title(f'动态热力图 - 帧 {frame}')
  8. ani = FuncAnimation(fig, update, frames=len(data_frames), interval=500, repeat=False)
  9. plt.show()

11. Interactividad de mapas de calor

Para hacer que el mapa de calor sea más interactivo, puede utilizar Matplotlib.imshowcombinarmplcursorsLa biblioteca implementa la visualización flotante de puntos de datos:

  1. import mplcursors
  2. fig, ax = plt.subplots()
  3. im = ax.imshow(data, cmap='Greens', interpolation='nearest')
  4. mplcursors.cursor(hover=True).connect("add", lambda sel: sel.annotation.set_text(f'{sel.artist.get_array()[sel.target.index]:.2f}'))
  5. plt.title('交互式热力图')
  6. plt.show()

De esta forma, cuando el ratón pase sobre los puntos de datos del mapa de calor, se mostrarán los valores correspondientes.

imagen-20240204002444309

12. Rango de datos estandarizados

A veces, para mostrar las diferencias en los datos con mayor claridad, es posible que necesitemos normalizar el rango de datos.Esto se puede hacer a través deNormalizeclase a implementar:

  1. from matplotlib.colors import Normalize
  2. normalized_data = Normalize()(data) # 将数据标准化
  3. fig, ax = plt.subplots()
  4. im = ax.imshow(normalized_data, cmap='YlGnBu', interpolation='bicubic')
  5. plt.colorbar(im, label='标准化值范围')
  6. plt.title('标准化热力图')
  7. plt.show()

13. Exportar mapa de calor

Finalmente, podemos exportar el mapa de calor dibujado como un archivo de imagen a través de Matplotlib para usarlo o compartirlo posteriormente:

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
  3. plt.colorbar(im)
  4. plt.title('导出热力图')
  5. plt.savefig('heatmap.png')

Lo anterior es una serie de ejemplos y técnicas para dibujar diferentes tipos de mapas de calor fríos con Matplotlib. A través de estos ejemplos, obtuvimos una comprensión profunda del poder de Matplotlib y cómo crear mapas de calor coloridos, interactivos y avanzados ajustando parámetros y aplicando diferentes técnicas. Esperamos que estos ejemplos le hayan proporcionado una guía útil para su trabajo en visualización de datos.

Resumir:

A través de la introducción de este artículo, analizamos en profundidad las diversas técnicas y configuraciones de parámetros de la biblioteca Matplotlib al dibujar diferentes tipos de mapas de calor fríos. Estos son los puntos clave que aprendimos:

  1. Conocimiento básico:Aprendimos sobre los parámetros básicos para dibujar mapas de calor en Matplotlib, comodatacmapinterpolationvminyvmax, estos parámetros tienen un impacto importante en la apariencia y legibilidad del mapa de calor.

  2. Tipos de mapas de calor comunes:A través de ejemplos, analizamos los métodos de dibujo de tipos de mapas de calor comunes, como mapas de calor básicos, mapas de color personalizados, anotaciones, mapas de calor de diferentes formas, mapas de calor de bloques, mapas de calor de submapas múltiples, mapas de calor 3D, etc.

  3. ajustes avanzados:Aprendimos cómo realizar asignaciones de color avanzadas y configuraciones de barras de colores, y cómo hacer que los mapas de calor sean más personalizados y legibles ajustando las etiquetas de las barras de colores, la visualización dinámica, la interactividad, los rangos de datos estandarizados y otras técnicas.

  4. Consejos prácticos:Introdujimos algunas técnicas prácticas, como agregar barras de colores, exportar mapas de calor como archivos de imagen, visualización interactiva de mapas de calor, etc., para mejorar la usabilidad y la capacidad de compartir de los gráficos.