3D ワイヤーフレームプロットをアニメーション化する

PythonPythonBeginner
今すぐ練習

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

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

はじめに

この実験では、Python の人気のあるデータ可視化ライブラリである Matplotlib を使って 3D ワイヤーフレームプロットをアニメーション化する方法を学びます。

VM のヒント

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

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

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

ライブラリのインポート

最初のステップは、必要なライブラリをインポートすることです。Matplotlib、NumPy、および time です。

import time
import matplotlib.pyplot as plt
import numpy as np

グラフとサブプロットの設定

2 番目のステップは、グラフとサブプロットを設定することです。add_subplot を使って 3D プロットを作成します。

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

メッシュグリッドの作成

3 番目のステップは、linspace を使ってメッシュグリッドを作成することです。

xs = np.linspace(-1, 1, 50)
ys = np.linspace(-1, 1, 50)
X, Y = np.meshgrid(xs, ys)

Z 軸の範囲を設定する

4 番目のステップは、z 軸の範囲を設定して、各フレームで再計算されないようにすることです。

ax.set_zlim(-1, 1)

プロットをアニメーション化する

5 番目のステップは、プロットをアニメーション化することです。phi の値の範囲を for ループで反復処理します。各反復では、前の線のコレクションを削除し、新しいデータを生成し、新しいワイヤーフレームを描画し、続ける前に短時間一時停止します。

wframe = None
tstart = time.time()
for phi in np.linspace(0, 180. / np.pi, 100):
    if wframe:
        wframe.remove()
    Z = np.cos(2 * np.pi * X + phi) * (1 - np.hypot(X, Y))
    wframe = ax.plot_wireframe(X, Y, Z, rstride=2, cstride=2)
    plt.pause(.001)

平均 FPS を表示する

6 番目のステップは、アニメーションを実行するのにかかった合計時間を使って、平均 1 秒当たりのフレーム数 (FPS) を表示することです。

print('Average FPS: %f' % (100 / (time.time() - tstart)))

まとめ

この実験では、Matplotlib を使って 3D のワイヤーフレームプロットをアニメーション化する方法を学びました。phi の値の範囲を for ループで反復処理し、新しいデータを生成し、新しいワイヤーフレームを描画し、続ける前に短時間一時停止しました。最後に、アニメーションを実行するのにかかった合計時間を使って、平均 1 秒当たりのフレーム数 (FPS) を表示しました。