アニメーション3Dグラフ
Google Colab環境を使って、アニメーションする3Dグラフを描画します。
1 | # Google Colabでの設定 |
このコードでは、np.sqrt(x**2 + y**2)
のようなより複雑な関数を使い、カラーマップviridis
を適用しています。
これにより、アニメーションがカラフルで視覚的に魅力的になります。
【実行手順】
- Google Colabを開きます。
- 新しいノートブックを作成します。
- 上記のコードをセルにコピーして貼り付けます。
- セルを実行します。
アニメーション3Dグラフがカラフルで複雑な形状で表示されるはずです。
[実行結果]
ソースコード解説
ソースコードを詳しく説明します。
1. 必要なライブラリのインポート
1 | from IPython.display import HTML |
IPython.display
のHTML
:Google ColabやJupyter NotebookでHTML形式の出力を表示するためのモジュール。numpy
(np
): 数値計算ライブラリ。数値データの生成と操作に使用。matplotlib.pyplot
(plt
): データの可視化ライブラリ。プロットの生成に使用。mpl_toolkits.mplot3d
のAxes3D
: 3Dプロットを生成するためのツールキット。matplotlib.animation
のFuncAnimation
: アニメーションを生成するためのモジュール。
2. データの生成
1 | x = np.linspace(-2 * np.pi, 2 * np.pi, 200) |
np.linspace(-2 * np.pi, 2 * np.pi, 200)
:-2π
から2π
までの範囲を200等分した配列を生成。np.meshgrid(x, y)
: 2次元グリッドを生成。x
とy
の全ての組み合わせを含む。np.sqrt(x**2 + y**2)
: 各グリッドポイントのx
とy
の二乗和の平方根を計算。np.sin(...)
: 平方根の値をサイン関数に適用し、z
の値を計算。
3. プロットの設定
1 | fig = plt.figure() |
plt.figure()
: 新しい図(figure)を作成。fig.add_subplot(111, projection='3d')
: 3Dプロットを作成するための軸(axes)を追加。
4. 初期状態のプロット
1 | line = ax.plot_surface(x, y, z, cmap='viridis') |
ax.plot_surface(x, y, z, cmap='viridis')
:x
,y
,z
のデータを用いて3Dサーフェスプロットを作成。cmap='viridis'
はカラーマップを指定。
5. アニメーションの更新関数
1 | def update(frame): |
update(frame)
: アニメーションの各フレームで呼び出される関数。ax.clear()
: 現在のプロットをクリア。z = np.sin(np.sqrt(x**2 + y**2) + frame / 10.0)
:z
の値をフレームごとに更新。line = ax.plot_surface(x, y, z, cmap='viridis')
: 更新されたz
の値で新しいサーフェスプロットを作成。ax.set_zlim(-1, 1)
:z
軸の範囲を設定。return line,
: 更新されたプロットを返す。
6. アニメーションの設定
1 | ani = FuncAnimation(fig, update, frames=200, interval=50, blit=False) |
FuncAnimation(fig, update, frames=200, interval=50, blit=False)
: アニメーションを作成するための関数。fig
: アニメーションを表示する図。update
: フレームごとに呼び出される更新関数。frames=200
: フレームの数。interval=50
: フレーム間の時間間隔(ミリ秒)。blit=False
: フル再描画を行うかどうか。
7. アニメーションをHTMLとして表示
1 | HTML(ani.to_jshtml()) |
HTML(ani.to_jshtml())
: アニメーションをHTML形式に変換し、Google ColabやJupyter Notebookで表示。