Matplotlib ile algoritma animasyonları

Matplotlib, kullanım kolaylığı, arayüzünün güzelliği ve en önemlisi bir Python kütüphanesi olması sebebiyle en sevdiğim kütüphanelerden bir tanesi :). Büyük boyutta veriyle çalışırken çok uygun olacağını düşünmüyorum fakat özellikle algoritma geliştirirken, küçük dataset'ler üzerinde denemeler yaparken gayet uygun.

Matplotlib'in grafik çizme dışındaki yeteneklerinden biri de animasyon oluşturabilmesi. Grafik çizerken yapılan işlerin aynısını matplotlib'in sağladığı bir callback mekanizması içinde yaparak istenilen parametreler ile animasyonlar oluşturulabiliyor.

Kullanılacak fonksiyonlar matplotlib.animation modülü içerisinde bulunuyor.

Sonrasında, pyplot ile bir figür nesnesi yaratıp bunu aşağıdaki gibi animasyona vermek gerekiyor

Buradaki değişkenlere bakacak olursak;

generate_random : Her bir adımda çağırılacak fonksiyon. Bu isim benim denediğim örnekte yazdığım bir fonksiyonun ismiydi yani matplotlib'e özel bir şey değil.

25 : Fonksiyonun kaç kez çağırılacağını belirten parametre.

fargs : Fonksiyon çağrısında fonksiyona geçilecek argümanlar.

interval : Fonksiyon çağrısının kaç milisaniyede bir yapılacağı.

blit : Fonksiyonun, çizilecek nesneleri bir iterator içinde dönüp dönmeyeceği.

Ben örnekte Metropolis Algoritması'nı uyguladım. Algoritma basitçe her adımda bir doğru oluşturup ekrana çiziyor. Bu fonksiyon aşağıdaki gibi.

blit = True  verdiğimiz için bu fonksiyon her seferinde geriye,  Line2D  nesnelerinden oluşan bir liste dönüyor ve her seferinde bu liste ekrana çiziliyor.

Animasyonu ekrana çizdirdiğimiz gibi çeşitli formatlarda dosyalara da kaydedebiliyoruz. Aşağıda görülen gif dosyasını kaydetmek için şöyle bir kod yazmak gerekiyor;

Oluşan animasyon ise şöyle bir şey :)

animation

 

Örnek koda şuradan ulaşılabilir.