Matplotlib adalah sebuah library Python yang digunakan untuk membuat gambar statistik dan visualisasi data. Salah satu fitur yang paling populer dalam matplotlib adalah kemampuan mengupdate plot dinamis, yaitu membuat plot berubah secara langsung sesuai dengan perubahan data.
Dalam artikel ini, kita akan melihat beberapa cara untuk mengupdate plot menggunakan Matplotlib:
- Menggunakan package FuncAnimation
- Menggunakan mode interaktif pyplot
- Menggunakan fungsi Figure.canvas.draw
Menggunakan Package FuncAnimation
Kita dapat menggunakan fungsi FuncAnimation
dari package matplotlib.animations
untuk mengupdate plot. Pertama, impor fungsi tersebut menggunakan from matplotlib.animations import FuncAnimation
. Lalu, inisialisasi data untuk frame pertama (setidaknya). Plotkan frame pertama. Definisikan sebuah fungsi (misalnya update
) yang menerima nomor frame sebagai input dan membuat frame baru. Fungsi ini mengupdate data setiap kali dijalankan dan kemudian plotkan plot baru sesuai. Panggil fungsi FuncAnimation
dengan argumen yang mengandung fungsi tadi dan panggil plt.show()
.
Contoh:
from matplotlib.animation import FuncAnimation
import matplotlib.pyplot as plt
import random
x = [1]
y = [random.randint(1,10)]
fig, ax = plt.subplots()
graph = ax.plot(x,y,color='g')[0]
plt.ylim(0,10)
def update(frame):
global graph
x.append(x[-1] + 1)
y.append(random.randint(1,10))
graph.set_xdata(x)
graph.set_ydata(y)
plt.xlim(x[0], x[-1])
anim = FuncAnimation(fig, update, frames=None)
plt.show()
Output: Grafik garis statis yang dapat diupdate secara dinamis.
Menggunakan Mode Interaktif Pyplot
Dalam mode interaktif pyplot, figura akan ditarik dan diupdate secara langsung setiap kali kita membuat perubahan. Kita dapat mengaktifkan mode interaktif dengan cara menggunakan fungsi ion()
pada plot. Kemudian, kita dapat membuat loop yang terus-menerus update data dan plot.
Contoh:
import matplotlib.pyplot as plt
import random
plt.ion()
y = [random.randint(1,10) for i in range(20)]
x = [*range(1,21)]
graph = plt.plot(x,y)[0]
plt.ylim(0,10)
plt.pause(1)
while(True):
y.append(random.randint(1,10))
x.append(x[-1]+1)
graph.remove()
graph = plt.plot(x,y,color='g')[0]
plt.xlim(x[0], x[-1])
plt.pause(0.25)
Output: Grafik garis yang dapat diupdate secara dinamis.
Menggunakan Fungsi Figure.canvas.draw
Dalam contoh ini, kita akan update grafik scatter dengan menggunakan fungsi Figure.canvas.draw()
. Definisikan fungsi update
yang mengupdate data, lalu bersihkan axes, buat grafik baru berdasarkan data yang diupdate dan akhirnya paksa artist untuk merefresh menggunakan fungsi figure.canvas.draw()
.
Contoh:
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import random
x = [random.randint(1,100)]
y = [random.randint(1,100)]
fig, ax = plt.subplots()
def update(frame):
x.append(random.randint(1,100))
y.append(random.randint(1,100))
ax.clear()
ax.scatter(x,y, s=y, c='b', alpha=0.5)
fig.canvas.draw()
anim = FuncAnimation(fig, update)
plt.show()
Output: Grafik scatter yang dapat diupdate secara dinamis.
Kesimpulan
Ada minimal tiga cara untuk mengupdate plot dinamis menggunakan Matplotlib – Pertama dengan menggunakan package FuncAnimation, kedua dengan menggunakan mode interaktif pyplot dan ketiga dengan menggunakan fungsi figure.canvas.draw()
. Dengan menggunakan salah satu dari metode tersebut, kita dapat membuat plot yang dapat diupdate secara dinamis.