Condivisione della tecnologia

Esplora Matplotlib: disegna mappe di calore

2024-07-12

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

1. Introduzione

Le mappe di calore sono un modo efficace per visualizzare i dati della matrice attraverso la mappatura dei colori. Matplotlibimshow Le funzioni sono uno strumento potente per creare varie mappe di calore. Prima di iniziare l’esempio, comprendiamo innanzitutto i parametri principali:

  • dati:I dati della matrice da tracciare.
  • mappa cmap:La mappatura dei colori determina la distribuzione dei colori nella mappa termica.
  • interpolazione:Metodo di interpolazione, che influisce sulla levigatezza della mappa termica.
  • vmin e vmax:Specificare i valori minimo e massimo per la mappa dei colori.

2. Mappa termica di base

Innanzitutto, disegniamo una mappa termica di base per mostrare la distribuzione complessiva del set di dati:

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

In questo semplice esempio, usiamoviridismappa colori enearestmetodo di interpolazione.

immagine-20240204002238552

3. Mappatura dei colori personalizzata

Matplotlib supporta una varietà di mappe colore integrate, ma possiamo anche personalizzare la mappa colore per rendere la mappa termica più personalizzata. Ecco un esempio di mappa colori personalizzata:

  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. Aggiungi commenti

L'aggiunta di annotazioni a una mappa termica può trasmettere più chiaramente il significato dei dati.possiamo usareannotateLa funzione etichetta i valori sulla mappa termica:

  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. Mappe termiche di diverse forme

Matplotlib supporta anche il disegno di mappe termiche di forme diverse, come punti circolari o ellittici. Ecco un esempio:

  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. Blocca la mappa termica

A volte vogliamo evidenziare determinati blocchi in una matrice per rendere più evidenti le informazioni chiave.Possiamo farlo utilizzandoimshowDiextentParametri per raggiungere questo obiettivo:

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

immagine-20240204002304491

7. Mappa termica multi-sottografo

In alcuni casi, potrebbe essere necessario visualizzare più mappe termiche nello stesso grafico per confrontare o presentare diversi aspetti dei dati.Questo può essere fatto tramite Matplotlibsubplotcompiere:

  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. Mappa termica 3D

Matplotlib supporta anche il disegno di mappe termiche 3D, molto utile per visualizzare i dati con struttura tridimensionale:

  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. Mappatura dei colori avanzata e impostazioni della barra dei colori

Matplotlib consente un'ulteriore esplorazione delle impostazioni avanzate di mappe di colore e barre di colore per soddisfare esigenze più complesse. Ecco un esempio che dimostra la personalizzazione di una barra dei colori e l'aggiunta di etichette alla barra dei colori:

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

immagine-20240204002506344

10. Visualizzazione dinamica della mappa termica

A volte vogliamo visualizzare le modifiche ai dati in modo dinamico, cosa che può essere eseguita utilizzando MatplotlibFuncAnimation compiere. Quello che segue è un semplice esempio di mappa termica dinamica:

  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. Interattività delle mappe di calore

Per rendere la mappa termica più interattiva, puoi utilizzare MatplotlibimshowcombinaremplcursorsLa libreria implementa la visualizzazione al passaggio del mouse dei punti dati:

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

In questo modo, quando il mouse passa sopra i punti dati della mappa termica, verranno visualizzati i valori corrispondenti.

immagine-20240204002444309

12. Intervallo di dati standardizzato

A volte, per mostrare più chiaramente le differenze nei dati, potrebbe essere necessario normalizzare l'intervallo di dati.Questo può essere fatto tramiteNormalizeclasse da implementare:

  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. Esporta mappa termica

Infine, possiamo esportare la mappa termica disegnata come file immagine tramite Matplotlib per ulteriore utilizzo o condivisione:

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

Quanto sopra è una serie di esempi e tecniche per disegnare diversi tipi di fantastiche mappe di calore con Matplotlib. Attraverso questi esempi, abbiamo acquisito una comprensione approfondita della potenza di Matplotlib e di come creare mappe di calore colorate, interattive e avanzate regolando i parametri e applicando tecniche diverse. Speriamo che questi esempi abbiano fornito indicazioni utili per il tuo lavoro nella visualizzazione dei dati.

Riassumere:

Attraverso l'introduzione di questo articolo, abbiamo una discussione approfondita delle varie tecniche e impostazioni dei parametri della libreria Matplotlib durante il disegno di diversi tipi di mappe di calore interessanti. Ecco i punti chiave che abbiamo imparato:

  1. Conoscenza di base:Abbiamo appreso i parametri di base per disegnare mappe di calore in Matplotlib, come ad esempiodatacmapinterpolationvminEvmax, questi parametri hanno un impatto importante sull'aspetto e sulla leggibilità della mappa termica.

  2. Tipi comuni di mappe di calore:Attraverso esempi, abbiamo discusso i metodi di disegno dei tipi comuni di mappe di calore come mappe di calore di base, mappatura dei colori personalizzata, annotazioni, mappe di calore di forme diverse, mappe di calore a blocchi, mappe di calore multi-sottomappa, mappe di calore 3D, ecc.

  3. impostazioni avanzate:Abbiamo imparato come eseguire la mappatura dei colori avanzata e le impostazioni della barra dei colori e come rendere le mappe di calore più personalizzate e leggibili regolando le etichette delle barre dei colori, la visualizzazione dinamica, l'interattività, gli intervalli di dati standardizzati e altre tecniche.

  4. Consigli pratici:Abbiamo introdotto alcune tecniche pratiche, come l'aggiunta di barre di colore, l'esportazione delle mappe di calore come file immagine, la visualizzazione interattiva delle mappe di calore, ecc., per migliorare l'usabilità e la condivisibilità dei grafici.