Partage de technologie

Explorez Matplotlib - dessiner des cartes thermiques

2024-07-12

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

1. Introduction

Les cartes thermiques sont un moyen efficace d'afficher des données matricielles via un mappage de couleurs. Matplotlibimshow Les fonctions sont un outil puissant pour créer diverses cartes thermiques. Avant de commencer l’exemple, comprenons d’abord les principaux paramètres :

  • données:Les données matricielles à tracer.
  • cmap :La cartographie des couleurs détermine la répartition des couleurs dans la carte thermique.
  • interpolation:Méthode d'interpolation, affectant la douceur de la carte thermique.
  • vmin et vmax :Spécifiez les valeurs minimales et maximales pour la carte des couleurs.

2. Carte thermique de base

Tout d'abord, dessinons une carte thermique de base pour montrer la distribution globale de l'ensemble de données :

  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()

Dans cet exemple simple, nous utilisonsviridispalette de couleurs etnearestméthode d'interpolation.

image-20240204002238552

3. Cartographie des couleurs personnalisée

Matplotlib prend en charge une variété de cartes de couleurs intégrées, mais nous pouvons également personnaliser la carte de couleurs pour rendre la carte thermique plus personnalisée. Voici un exemple de carte de couleurs personnalisée :

  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. Ajouter des commentaires

L'ajout d'annotations à une carte thermique peut transmettre plus clairement la signification des données.on peut utiliserannotateLa fonction étiquette les valeurs sur la carte thermique :

  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. Cartes thermiques de différentes formes

Matplotlib prend également en charge le dessin de cartes thermiques de différentes formes, telles que des points circulaires ou elliptiques. Voici un exemple:

  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. Bloquer la carte thermique

Parfois, nous souhaitons mettre en évidence certains blocs dans une matrice pour mettre en évidence les informations clés.Nous pouvons le faire en utilisantimshowdeextentParamètres pour y parvenir :

  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()

image-20240204002304491

7. Carte thermique multi-sous-graphiques

Dans certains cas, nous pouvons avoir besoin d'afficher plusieurs cartes thermiques dans le même graphique pour comparer ou présenter différents aspects des données.Cela peut être fait via Matplotlibsubplotaccomplir:

  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. Carte thermique 3D

Matplotlib prend également en charge le dessin de cartes thermiques 3D, ce qui est très utile pour afficher des données avec une structure tridimensionnelle :

  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. Paramètres avancés de mappage des couleurs et de barre de couleurs

Matplotlib permet une exploration plus approfondie des paramètres avancés des cartes de couleurs et des barres de couleurs pour répondre à des besoins plus complexes. Voici un exemple illustrant la personnalisation d'une barre de couleurs et l'ajout d'étiquettes de barre de couleurs :

  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()

image-20240204002506344

10. Affichage dynamique de la carte thermique

Parfois, nous souhaitons afficher les modifications des données de manière dynamique, ce qui peut être fait en utilisant MatplotlibFuncAnimation accomplir. Voici un exemple simple de carte thermique dynamique :

  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. Interactivité des cartes thermiques

Pour rendre la carte thermique plus interactive, vous pouvez utiliser MatplotlibimshowcombinermplcursorsLa bibliothèque implémente l'affichage par survol des points de données :

  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 cette façon, lorsque la souris survole les points de données de la carte thermique, les valeurs correspondantes seront affichées.

image-20240204002444309

12. Plage de données standardisée

Parfois, afin de montrer plus clairement les différences entre les données, nous devrons peut-être normaliser la plage de données.Cela peut être fait viaNormalizeclasse à implémenter :

  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. Exporter la carte thermique

Enfin, nous pouvons exporter la carte thermique dessinée sous forme de fichier image via Matplotlib pour une utilisation ou un partage ultérieur :

  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')

Ce qui précède est une série d'exemples et de techniques pour dessiner différents types de cartes thermiques froides avec Matplotlib. Grâce à ces exemples, nous avons acquis une compréhension approfondie de la puissance de Matplotlib et de la manière de créer des cartes thermiques colorées, interactives et avancées en ajustant les paramètres et en appliquant différentes techniques. Espérons que ces exemples vous ont fourni des conseils utiles pour votre travail en visualisation de données.

Résumer:

Grâce à l'introduction de cet article, nous avons une discussion approfondie des différentes techniques et réglages de paramètres de la bibliothèque Matplotlib lors du dessin de différents types de cartes thermiques froides. Voici les points clés que nous avons appris :

  1. Notions de base:Nous avons découvert les paramètres de base pour dessiner des cartes thermiques dans Matplotlib, tels quedatacmapinterpolationvminetvmax, ces paramètres ont un impact important sur l’apparence et la lisibilité de la carte thermique.

  2. Types de cartes thermiques courants :À travers des exemples, nous avons discuté des méthodes de dessin de types de cartes thermiques courants tels que les cartes thermiques de base, les cartes thermiques personnalisées, les annotations, les cartes thermiques de différentes formes, les cartes thermiques en bloc, les cartes thermiques multi-sous-cartes, les cartes thermiques 3D, etc.

  3. réglages avancés:Nous avons appris à effectuer des paramètres avancés de cartographie des couleurs et de barres de couleurs, et à rendre les cartes thermiques plus personnalisées et plus lisibles en ajustant les étiquettes des barres de couleurs, l'affichage dynamique, l'interactivité, les plages de données standardisées et d'autres techniques.

  4. Conseils pratiques :Nous avons introduit quelques techniques pratiques, telles que l'ajout de barres de couleurs, l'exportation de cartes thermiques sous forme de fichiers image, l'affichage interactif de cartes thermiques, etc., pour améliorer la convivialité et le partage des graphiques.