Technologieaustausch

Entdecken Sie Matplotlib – Zeichnen von Heatmaps

2024-07-12

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

1. Einleitung

Heatmaps sind eine effektive Möglichkeit, Matrixdaten durch Farbzuordnung anzuzeigen. Matplotlibimshow Funktionen sind ein leistungsstarkes Werkzeug zum Erstellen verschiedener Heatmaps. Bevor wir mit dem Beispiel beginnen, wollen wir zunächst die Hauptparameter verstehen:

  • Daten:Die zu plottenden Matrixdaten.
  • cmap:Die Farbzuordnung bestimmt die Verteilung der Farben in der Wärmekarte.
  • Interpolation:Interpolationsmethode, die die Glätte der Wärmekarte beeinflusst.
  • vmin und vmax:Geben Sie die Mindest- und Höchstwerte für die Farbkarte an.

2. Grundlegende Wärmekarte

Zeichnen wir zunächst eine einfache Heatmap, um die Gesamtverteilung des Datensatzes darzustellen:

  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 diesem einfachen Beispiel verwenden wirviridisFarbkarte undnearestInterpolationsmethode.

Bild-20240204002238552

3. Benutzerdefinierte Farbzuordnung

Matplotlib unterstützt eine Vielzahl integrierter Farbkarten, wir können die Farbkarte jedoch auch anpassen, um die Heatmap personalisierter zu gestalten. Hier ist ein Beispiel einer benutzerdefinierten Farbkarte:

  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. Kommentare hinzufügen

Das Hinzufügen von Anmerkungen zu einer Heatmap kann die Bedeutung der Daten klarer vermitteln.wir können benutzenannotateDie Funktion beschriftet Werte auf der Heatmap:

  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. Heatmaps in verschiedenen Formen

Matplotlib unterstützt auch das Zeichnen von Heatmaps unterschiedlicher Form, beispielsweise kreisförmiger oder elliptischer Punkte. Hier ist ein Beispiel:

  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. Blockieren Sie die Heatmap

Manchmal möchten wir bestimmte Blöcke in einer Matrix hervorheben, um wichtige Informationen hervorzuheben.Wir können dies tun, indem wir verwendenimshowvonextentParameter, um dies zu erreichen:

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

Bild-20240204002304491

7. Multi-Subgraph-Heatmap

In einigen Fällen müssen wir möglicherweise mehrere Heatmaps im selben Diagramm anzeigen, um verschiedene Aspekte der Daten zu vergleichen oder darzustellen.Dies kann über Matplotlib erfolgensubploterreichen:

  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. 3D-Heatmap

Matplotlib unterstützt auch das Zeichnen von 3D-Heatmaps, was für die Anzeige von Daten mit dreidimensionaler Struktur sehr nützlich ist:

  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. Erweiterte Farbzuordnungs- und Farbbalkeneinstellungen

Matplotlib ermöglicht die weitere Erkundung erweiterter Einstellungen von Farbkarten und Farbbalken, um komplexere Anforderungen zu erfüllen. Hier ist ein Beispiel, das das Anpassen einer Farbleiste und das Hinzufügen von Farbleistenbeschriftungen zeigt:

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

Bild-20240204002506344

10. Dynamische Anzeige der Heatmap

Manchmal möchten wir Änderungen in Daten dynamisch anzeigen. Dies kann mithilfe von Matplotlib erfolgenFuncAnimation erreichen. Das Folgende ist ein einfaches Beispiel für eine dynamische Heatmap:

  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. Interaktivität von Heatmaps

Um die Heatmap interaktiver zu gestalten, können Sie Matplotlibs verwendenimshowkombinierenmplcursorsDie Bibliothek implementiert die Hover-Anzeige von Datenpunkten:

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

Wenn Sie mit der Maus über die Datenpunkte der Heatmap fahren, werden auf diese Weise die entsprechenden Werte angezeigt.

Bild-20240204002444309

12. Standardisierter Datenbereich

Manchmal müssen wir den Datenbereich normalisieren, um die Unterschiede in den Daten deutlicher darzustellen.Dies kann über erfolgenNormalizeZu implementierende Klasse:

  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. Heatmap exportieren

Schließlich können wir die gezeichnete Heatmap über Matplotlib als Bilddatei zur weiteren Verwendung oder Weitergabe exportieren:

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

Das Obige ist eine Reihe von Beispielen und Techniken zum Zeichnen verschiedener Arten von coolen Heatmaps mit Matplotlib. Durch diese Beispiele haben wir ein tiefes Verständnis für die Leistungsfähigkeit von Matplotlib gewonnen und erfahren, wie man durch die Anpassung von Parametern und die Anwendung verschiedener Techniken farbenfrohe, interaktive und fortschrittliche Heatmaps erstellt. Wir hoffen, dass Ihnen diese Beispiele bei Ihrer Arbeit in der Datenvisualisierung eine nützliche Hilfestellung bieten.

Zusammenfassen:

In der Einleitung dieses Artikels diskutieren wir ausführlich die verschiedenen Techniken und Parametereinstellungen der Matplotlib-Bibliothek beim Zeichnen verschiedener Arten von coolen Heatmaps. Hier sind die wichtigsten Punkte, die wir gelernt haben:

  1. Grundwissen:Wir haben etwas über die grundlegenden Parameter zum Zeichnen von Heatmaps in Matplotlib gelernt, wie zdatacmapinterpolationvminUndvmaxDiese Parameter haben einen wichtigen Einfluss auf das Erscheinungsbild und die Lesbarkeit der Heatmap.

  2. Gängige Heatmap-Typen:Anhand von Beispielen haben wir die Zeichenmethoden gängiger Heatmap-Typen besprochen, z. B. einfache Heatmaps, benutzerdefinierte Farbzuordnungen, Anmerkungen, Heatmaps verschiedener Formen, Block-Heatmaps, Multi-Submap-Heatmaps, 3D-Heatmaps usw.

  3. erweiterte Einstellungen:Wir haben gelernt, wie man erweiterte Farbzuordnungen und Farbbalkeneinstellungen durchführt und wie man Heatmaps personalisierter und lesbarer macht, indem man Farbbalkenbeschriftungen, dynamische Anzeige, Interaktivität, standardisierte Datenbereiche und andere Techniken anpasst.

  4. Praktische Tipps:Wir haben einige praktische Techniken eingeführt, wie das Hinzufügen von Farbbalken, den Export von Heatmaps als Bilddateien, die interaktive Anzeige von Heatmaps usw., um die Benutzerfreundlichkeit und Teilbarkeit von Diagrammen zu verbessern.