Mengupdate Plot Dinamis menggunakan Matplotlib

Mengupdate Plot Dinamis menggunakan Matplotlib

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.