Pythonでインタラクティブに3Dプロットを作成するには?
Pythonでは,以下の方法を使用してインタラクティブな三次元プロットを作成できます。
- 必要なライブラリをインポートする:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
- 空の 3D グラフィックス オブジェクトを作成します。
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
- 空の Line オブジェクトを作成する:
line, = ax.plot([], [], [], 'b-', lw=2)
- コンストラクタ関数の定義でグラフィックオブジェクトの状態を初期化
def init():
line.set_data([], [])
line.set_3d_properties([])
return line,
- グラフィックオブジェクトの状態を更新するために、更新関数を定義します:
def update(frame):
# 根据帧数frame计算新的数据点
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x + frame * 0.1)
z = np.cos(x + frame * 0.1)
# 更新线条对象的数据
line.set_data(x, y)
line.set_3d_properties(z)
return line,
- アニメーションオブジェクトを作成してパラメーターを設定する。
ani = FuncAnimation(fig, update, frames=100, init_func=init, blit=True)
- アニメーションを表示する
plt.show()
コードサンプルの丸ごと:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
line, = ax.plot([], [], [], 'b-', lw=2)
def init():
line.set_data([], [])
line.set_3d_properties([])
return line,
def update(frame):
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x + frame * 0.1)
z = np.cos(x + frame * 0.1)
line.set_data(x, y)
line.set_3d_properties(z)
return line,
ani = FuncAnimation(fig, update, frames=100, init_func=init, blit=True)
plt.show()
上記のコードを実行すると、動的な 3 次元正弦曲線グラフが生成されます。必要に応じて、計算ロジックを更新する関数の中で調整することで、目的の動的効果を得ることができます。