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

Matplotlibで3Dプロットを回転させて表示・保存する方法

Matplotlibを使えば、3Dプロットを自動的に回転させながら表示することができます。本記事では、view_init()メソッドとplt.pause()を組み合わせて、3Dワイヤーフレームを滑らかに回転させる方法を、具体的なコード例とともに解説します。

3D回転プロットを作成する手順

Matplotlibで3D回転プロットを実現するには、以下の手順に従います。

  • 図のサイズと余白の設定plt.rcParamsでフィギュアサイズを指定し、サブプロット間および周囲のパディングを調整します。
  • フィギュアの作成:新しい図を作成するか、既存の図をアクティブにします。
  • Axes(軸)の追加:サブプロット構成の一部として、3D投影用のAxesをフィギュアに追加します。
  • テストデータの取得axes3d.get_test_data()を使って、テスト用データセット(X, Y, Z)を取得します。
  • 3Dワイヤーフレームの描画plot_wireframe()でワイヤーフレームをプロットします。
  • 軸の回転view_init()に角度を渡して視点を回転させます。
  • 再描画plt.draw()で現在のフィギュアを再描画します。
  • 一時停止plt.pause()でGUIイベントループを短時間実行し、アニメーション効果を生み出します。
  • 表示plt.show()メソッドで最終的な図を表示します。

サンプルコード

以下は、3Dワイヤーフレームを360度回転させて表示する完全なコード例です。

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

# フィギュアサイズとレイアウトの自動調整を設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

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

# テストデータを取得してワイヤーフレームを描画
X, Y, Z = axes3d.get_test_data(0.1)
ax.plot_wireframe(X, Y, Z, rstride=5, cstride=5)

# 0度から359度まで視点を回転
for angle in range(0, 360):
    ax.view_init(30, angle)
    plt.draw()
    plt.pause(.001)

plt.show()

コードのポイント解説

  • projection='3d':サブプロットを3Dモードで作成するために必須の引数です。
  • rstride=5, cstride=5:行方向・列方向のワイヤー間隔を指定し、描画の密度を調整しています。値を大きくすると線が粗くなり、描画が軽くなります。
  • ax.view_init(30, angle):第1引数は仰角(elev)、第2引数は方位角(azim)です。ここでは仰角を30度に固定し、方位角を0〜359度まで変化させることで水平方向に回転しています。
  • plt.pause(.001):GUIイベントループを0.001秒間実行します。この値を大きくすると回転速度が遅くなります。

実行結果

上記のコードを実行すると、3Dワイヤーフレームが水平方向にぐるりと1回転するアニメーションが表示されます。回転中の各フレームはリアルタイムに再描画され、最後に静止した状態でウィンドウが表示されます。

なお、回転アニメーションを動画ファイルとして保存したい場合は、matplotlib.animation.FuncAnimationffmpegPillowWriterを組み合わせることで、GIFやMP4形式への書き出しも可能です。

  1. Matplotlibで3D軸に点をプロットする方法を解説

    Matplotlibを使って3D空間上に点をプロットするには、以下の手順に従います。 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。 figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。 add_subplot() メソッドに projection=3d を指定して、3D投影のAxesを図に追加します。 scatter() メソッドを使用して、3D座標(x, y, z)の位置に点を描画します。 show() メソッドを使用して、図を画面に表示します。 コード例 from matplotlib import pyplot

  2. MatplotlibでRectangle(長方形)に色を設定する方法

    Matplotlibで長方形(Rectangle)に色を設定するには、以下の手順に従います。手順figure() メソッドを使用して、新しい図(Figure)を作成するか、既存の図をアクティブにします。add_subplot() メソッドを使用して、サブプロット構成の一部として図に ~.axes.Axes を追加します。長方形は、アンカーポイント(基準座標)と幅・高さを指定することで定義できます。作成したRectangleパッチを add_patch() でプロットに追加します。xlim() および ylim() メソッドを使用して、x軸とy軸の表示範囲を設定します。図を表示するには、show