技術共有

Matplotlib の探索 - ヒート マップの描画

2024-07-12

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

1 はじめに

ヒートマップは、カラー マッピングを通じてマトリックス データを表示する効果的な方法です。 マットプロットリブimshow関数は、さまざまなヒートマップを作成するための強力なツールです。例を開始する前に、まず主なパラメータを理解しましょう。

  • データ:プロットする行列データ。
  • 場所:カラー マッピングは、ヒート マップ内の色の分布を決定します。
  • 補間:補間方法。ヒート マップの滑らかさに影響します。
  • vmin と vmax:カラーマップの最小値と最大値を指定します。

2. 基本的なヒートマップ

まず、基本的なヒート マップを描いて、データ セットの全体的な分布を示しましょう。

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

この簡単な例では、次を使用します。viridisカラーマップとnearest補間法。

画像-20240204002238552

3. カスタムカラーマッピング

Matplotlib はさまざまな組み込みカラー マップをサポートしていますが、カラー マップをカスタマイズしてヒート マップをよりパーソナライズすることもできます。カスタム カラー マップの例を次に示します。

  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. コメントを追加する

ヒート マップに注釈を追加すると、データの意味をより明確に伝えることができます。私たちは使うことができますannotateこの関数は、ヒート マップ上の値にラベルを付けます。

  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. さまざまな形状のヒートマップ

Matplotlib は、円形や楕円形の点など、さまざまな形状のヒート マップの描画もサポートしています。以下に例を示します。

  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. ブロックヒートマップ

重要な情報をより目立たせるために、マトリックス内の特定のブロックを強調表示したい場合があります。これを行うには、次のようにします。imshowextentこれを実現するためのパラメータは次のとおりです。

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

画像-20240204002304491

7. マルチサブグラフのヒートマップ

場合によっては、データのさまざまな側面を比較または表示するために、同じグラフに複数のヒート マップを表示する必要がある場合があります。これは Matplotlib 経由で実行できますsubplot成し遂げる:

  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ヒートマップ

Matplotlib は、3D ヒート マップの描画もサポートしています。これは、3 次元構造のデータを表示するのに非常に役立ちます。

  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. 高度なカラーマッピングとカラーバー設定

Matplotlib を使用すると、カラーマップとカラーバーの高度な設定をさらに探索して、より複雑なニーズを満たすことができます。以下は、カラーバーのカスタマイズとカラーバー ラベルの追加を示す例です。

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

画像-20240204002506344

10. ヒートマップの動的表示

場合によっては、データの変更を動的に表示したいことがあります。これは Matplotlib を使用して行うことができます。FuncAnimation成し遂げる。以下は、単純な動的ヒート マップの例です。

  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. ヒートマップのインタラクティブ性

ヒートマップをよりインタラクティブにするには、Matplotlib のimshow組み合わせるmplcursorsライブラリはデータ ポイントのホバー表示を実装します。

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

このようにして、ヒート マップのデータ ポイントの上にマウスを置くと、対応する値が表示されます。

画像-20240204002444309

12. 標準化されたデータ範囲

場合によっては、データの違いをより明確に示すために、データ範囲を正規化する必要がある場合があります。これは次の方法で実行できますNormalize実装するクラス:

  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. ヒートマップのエクスポート

最後に、描画したヒート マップを Matplotlib 経由で画像ファイルとしてエクスポートし、さらに使用したり共有したりできます。

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

上記は、Matplotlib を使用してさまざまなタイプのクール ヒート マップを描画するための一連の例とテクニックです。これらの例を通じて、Matplotlib の能力と、パラメーターを調整してさまざまなテクニックを適用することで、カラフルでインタラクティブな高度なヒート マップを作成する方法を深く理解しました。これらの例が、データ視覚化の作業に役立つガイダンスになれば幸いです。

要約:

この記事の導入を通じて、さまざまなタイプのクール ヒート マップを描画する際の Matplotlib ライブラリのさまざまなテクニックとパラメーター設定について詳しく説明します。私たちが学んだ重要なポイントは次のとおりです。

  1. 基本知識:Matplotlib でヒート マップを描画するための基本的なパラメーターについて学習しました。datacmapinterpolationvminそしてvmax、これらのパラメーターは、ヒート マップの外観と読みやすさに重要な影響を与えます。

  2. 一般的なヒート マップのタイプ:例を通して、基本的なヒート マップ、カスタム カラー マッピング、注釈、さまざまな形状のヒート マップ、ブロック ヒート マップ、マルチサブマップ ヒート マップ、3D ヒート マップなどの一般的なヒート マップ タイプの描画方法について説明しました。

  3. 高度な設定:高度なカラー マッピングとカラー バー設定を実行する方法、およびカラー バー ラベル、動的表示、対話性、標準化されたデータ範囲、その他のテクニックを調整することでヒート マップをよりパーソナライズして読みやすくする方法を学びました。

  4. 実践的なヒント:カラーバーの追加、ヒートマップの画像ファイルとしてのエクスポート、ヒートマップのインタラクティブ表示など、グラフの使いやすさと共有性を向上させるための実践的なテクニックを紹介しました。