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.FuncAnimationとffmpegやPillowWriterを組み合わせることで、GIFやMP4形式への書き出しも可能です。
-
Matplotlibで3D軸に点をプロットする方法を解説
Matplotlibを使って3D空間上に点をプロットするには、以下の手順に従います。 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。 figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。 add_subplot() メソッドに projection=3d を指定して、3D投影のAxesを図に追加します。 scatter() メソッドを使用して、3D座標(x, y, z)の位置に点を描画します。 show() メソッドを使用して、図を画面に表示します。 コード例 from matplotlib import pyplot
-
MatplotlibでRectangle(長方形)に色を設定する方法
Matplotlibで長方形(Rectangle)に色を設定するには、以下の手順に従います。手順figure() メソッドを使用して、新しい図(Figure)を作成するか、既存の図をアクティブにします。add_subplot() メソッドを使用して、サブプロット構成の一部として図に ~.axes.Axes を追加します。長方形は、アンカーポイント(基準座標)と幅・高さを指定することで定義できます。作成したRectangleパッチを add_patch() でプロットに追加します。xlim() および ylim() メソッドを使用して、x軸とy軸の表示範囲を設定します。図を表示するには、show