Matplotlib による 3 次元プロットのアニメーション

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Matplotlibを使って3次元プロットを全ての軸について回転させる簡単なアニメーションを作成する方法を学びます。サンプルデータセットを使って基本的なワイヤーフレームを作成し、軸のラベルを設定し、軸を回転させます。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

時々、Jupyter Notebookが読み込み終わるまで数秒待つ必要があります。Jupyter Notebookの制限により、操作の検証は自動化できません。

学習中に問題に遭遇した場合は、Labbyにお尋ねください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

ライブラリとデータセットのインポート

まず、必要なライブラリとデータセットをインポートする必要があります。この例では、3次元プロットを作成するためにmatplotlibmpl_toolkits.mplot3dライブラリを使用し、サンプルデータセットを生成するためにaxes3d.get_test_data()関数を使用します。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d

## Generate sample dataset
X, Y, Z = axes3d.get_test_data(0.05)

3次元プロットの作成

次に、plt.figure()fig.add_subplot()関数を使って3次元プロットを作成します。また、ax.plot_wireframe()関数を使ってデータセットをワイヤーフレームとしてプロットします。

## Create 3D plot
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

## Plot wireframe
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)

軸ラベルの設定

次に、ax.set_xlabel()ax.set_ylabel()、およびax.set_zlabel()関数を使って3次元プロットの軸ラベルを設定します。

## Set axis labels
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

軸を回転させてプロットを更新する

最後に、仰角、方位角、ロールの完全な回転を繰り返すforループを使って軸を回転させ、プロットを更新します。ax.view_init()関数を使って軸のビューとタイトルを更新し、plt.title()plt.draw()、およびplt.pause()関数を使ってアニメーションを表示します。

## Rotate the axes and update the plot
for angle in range(0, 360*4 + 1):
    ## Normalize the angle to the range [-180, 180] for display
    angle_norm = (angle + 180) % 360 - 180

    ## Cycle through a full rotation of elevation, then azimuth, roll, and all
    elev = azim = roll = 0
    if angle <= 360:
        elev = angle_norm
    elif angle <= 360*2:
        azim = angle_norm
    elif angle <= 360*3:
        roll = angle_norm
    else:
        elev = azim = roll = angle_norm

    ## Update the axis view and title
    ax.view_init(elev, azim, roll)
    plt.title('Elevation: %d°, Azimuth: %d°, Roll: %d°' % (elev, azim, roll))

    ## Display animation
    plt.draw()
    plt.pause(.001)

まとめ

この実験では、Matplotlibを使って3つの軸について回転する簡単な3次元プロットのアニメーションを作成する方法を学びました。サンプルデータセットを使って基本的なワイヤーフレームを作成し、軸ラベルを設定し、軸を回転させました。また、ax.view_init()plt.title()plt.draw()、およびplt.pause()関数を使ってプロットを更新し、アニメーションを表示する方法も学びました。