PythonのデータビジュアライゼーションライブラリであるMatplotlibを使用して、リアルタイムにプロットを更新する方法について説明します。
プロットの更新
Matplotlibのプロットを更新するための基本的な方法は2つあります。
-
データを再プロットする: これは最も簡単で堅牢なオプションですが、最も遅い方法でもあります。データを再プロットするためには、
graph1.clear()
とgraph2.clear()
を呼び出してからデータを再プロットします。 -
プロットオブジェクトのデータを更新する: この方法は、毎回全てを再プロットするよりもはるかに高速です。ただし、プロットするデータの形状は変更できず、データの範囲が変更される場合は、x軸とy軸の限界を手動でリセットする必要があります。
以下に、プロットオブジェクトのデータを更新する方法の例を示します。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 6*np.pi, 100)
y = np.sin(x)
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'r-')
for phase in np.linspace(0, 10*np.pi, 500):
line1.set_ydata(np.sin(x + phase))
fig.canvas.draw()
fig.canvas.flush_events()
このコードでは、np.linspace(0, 6*np.pi, 100)
で生成されたx値に対するsin関数の値をプロットしています。ループ内で、line1.set_ydata(np.sin(x + phase))
を使用してyデータを更新し、fig.canvas.draw()
とfig.canvas.flush_events()
を使用して図を更新しています。
まとめ
PythonのMatplotlibを使用してリアルタイムにプロットを更新する方法は、データを再プロットする方法とプロットオブジェクトのデータを更新する方法の2つがあります。どちらの方法を選択するかは、プロジェクトの要件とリソースによります。.