Python
 Computer >> コンピューター >  >> プログラミング >> Python

Seabornのヒートマップや相関行列をMatplotlibでアニメーション化する方法

Seabornで作成したヒートマップや相関行列をアニメーションとして表示したい場合、MatplotlibのFuncAnimationクラスを利用すると簡単に実現できます。以下の手順に沿って実装していきましょう。

アニメーション化の手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • 新しい図を作成するか、既存の図をアクティブにします。
  • データの次元を表すタプルを定義します。
  • Seabornのヒートマップを作成します。
  • 最初のフレーム用にinit()メソッドを定義します。
  • FuncAnimation()クラスを使い、animate関数を繰り返し呼び出してアニメーションを生成します。animate関数内ではランダムなデータセットを作成し、そのたびに新しいヒートマップを描画します。
  • 最後にshow()メソッドで図を表示します。

サンプルコード

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib import animation

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig = plt.figure()
dimension = (5, 5)
data = np.random.rand(dimension[0], dimension[1])
sns.heatmap(data, vmax=.8)

def init():
    sns.heatmap(np.zeros(dimension), vmax=.8, cbar=False)

def animate(i):
    data = np.random.rand(dimension[0], dimension[1])
    sns.heatmap(data, vmax=.8, cbar=False)

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=20, repeat=False)

plt.show()

実行結果

このコードを実行すると、5×5のランダムな値を持つヒートマップが20フレーム分切り替わりながら表示され、値の変化をアニメーションとして確認できます。カラーバーが毎フレーム再描画されるのを防ぐため、animate関数内ではcbar=Falseを指定している点にも注目してください。

ポイントの解説

  • init()関数:アニメーションの初期状態を定義します。ここではゼロのみの配列でヒートマップを描画しています。
  • animate(i)関数:各フレームで呼び出される関数です。引数iにはフレーム番号が渡されますが、この例では使用せず、毎回新しい乱数データを生成しています。
  • frames=20:アニメーションの総フレーム数を指定します。
  • repeat=False:アニメーションを1回だけ再生し、繰り返さない設定です。連続再生したい場合はTrueに変更してください。

実際のデータ分析では、時系列ごとの相関行列の変化などを可視化する際に、この手法が非常に役立ちます。ぜひ自分のデータに置き換えて試してみてください。

  1. Seabornで2つのグラフを横に並べてプロットする方法(Matplotlib)

    データ分析では、複数のグラフを1つの図の中に並べて比較できると非常に便利です。この記事では、SeabornとMatplotlibを組み合わせて、2つのグラフを横並び(1行2列)で表示する方法を解説します。 実装の流れ 2つのグラフを並べて描画するには、以下の手順を実行します。 plt.subplots(1, 2) を使い、figureサイズ(7, 7)で1行2列のサブプロットを作成します。 Pandasを使って、col1 と col2 のキーを持つデータフレームを作成します。 countplot() メソッドを使用し、カテゴリごとの観測値の件数を棒グラフで可視化します。 subplots_a

  2. Matplotlibでpcolormeshをアニメーション化する方法【コード例付き解説】

    Matplotlibでpcolormesh(擬似カラープロット)をアニメーション化する方法を、具体的な手順とサンプルコード付きで解説します。 アニメーション化の基本的な流れ pcolormeshをアニメーションさせるには、以下の手順に従います。 figureオブジェクトとサブプロットを作成する numpyを使ってx、y、tのデータポイントを生成する meshgrid関数で座標ベクトルから座標行列(X3、Y3、T3)を作成する pcolormesh()メソッドを使って、不規則な矩形グリッド上に擬似カラープロットを描画する カラーバーをfigureに追加する FuncAnimationクラスを使