PythonのMatplotlibライブラリを使用して、ループ内でプロットをリアルタイムで更新する方法について説明します。この記事では、matplotlib.pyplot.draw()
関数とcanvas.flush_events()
関数を使用して、同じフィギュア上でプロットを更新する方法を中心に説明します。
まず、Matplotlibのインタラクティブモードを有効にする必要があります。これはplt.ion()
を呼び出すことで行います。次に、データを作成し、プロットを作成します。そして、ループ内でデータを更新し、canvas.draw()
を呼び出すことでキャンバスを更新します。
以下に、ループ内でプロットを更新するための基本的なコードスニペットを示します。
import numpy as np
import matplotlib.pyplot as plt
# Interactive Mode
plt.ion()
# Create figure and subplot
figure, ax = plt.subplots(figsize=(4,3))
x = []
y = []
# Plot
plot_1, = ax.plot(x, y)
plt.axis([0, 30, -2, 2])
for value in range(150):
update_y_value = np.sin(x-2.5*value)
plot_1.set_xdata(x)
plot_1.set_ydata(update_y_value)
figure.canvas.draw()
figure.canvas.flush_events()
time.sleep(0.1)
# Display
plt.show()
このコードは、ループ内でx
とy
の値を更新し、その結果をリアルタイムでプロットに反映させるものです。figure.canvas.draw()
とfigure.canvas.flush_events()
の呼び出しにより、プロットは各イテレーションで更新されます。
このように、PythonとMatplotlibを使用してリアルタイムでプロットを更新することは直感的で簡単です。このテクニックは、データが時間とともに変化する場合や、アニメーションを作成する場合など、さまざまなシナリオで役立ちます。.