インストール
pip install numpy
pip install matplotlib
ボールの放物線運動
fortranで計算しておいた。
program ball
real(8) :: t=0.d0, x=0.d0, y=0.d0, g=9.8d0
real(8) :: vx=3.d0, vy=50.d0, dt=0.2d0
do i = 1, 51
write(100,'(3f16.4)') t, x, y
x = x + vx*dt
y = y + vy*dt
vx = vx
vy = vy - g*dt
t = t + dt
end do
end program ball
プロット
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
data = np.loadtxt('fort.100')
time = data[:, 0]
x = data[:, 1]
y = data[:, 2]
fig, ax = plt.subplots(figsize=(10, 5))
plt.subplots_adjust(bottom=0.25)
line, = ax.plot([], [], marker='o', markersize=5, label='')
ax.set_xlim(min(x), max(x))
ax.set_ylim(min(y), max(y))
ax.grid()
ax_step = plt.axes([0.25, 0.1, 0.65, 0.03])
step_slider = Slider(ax_step, 'time', 0, len(data) - 1, valinit=0, valstep=1)
def update(val):
step = int(step_slider.val)
line.set_data(x[:step + 1].tolist(), y[:step + 1].tolist())
ax.set_title(f'time = {time[step]:.2f} s')
fig.canvas.draw_idle()
step_slider.on_changed(update)
plt.show()
結果
スライダーをずらすとその時刻までの軌道をプロットしてくれる。
時系列データのプロットに便利かも。
0 件のコメント:
コメントを投稿