2025年4月5日土曜日

python の slider で時系列データを可視化

doc.md

インストール

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 件のコメント:

コメントを投稿