Python · Temmuz 10, 2021 0

Python Matplotlib için draggable datacursor yapalım.

Selamlar. Python projelerinde kullandığım, veri görselleştirme işlemleri için muhteşem çözümler sunan matplotlib de kullandığım mpldatacursor modülü ile bazı sorunlar yaşamaya başladım. Bunun için bu modülü matplotlib in annotation sınıfıyla gerçekleştirmek için kolları sıvadım. İki günlük çalışma sonucu nihayete erdirdim.

Mpldatacursor bir çeşit bilgilendirme ekranı özelliği sağlıyor. Matplotlib üzerindeki herhangi bir nesneyi mouse ile seçtiğinizde, istenilen bilgileri yanında görmemize olanak sağlıyor. Grafikte, haritada interaktif sunumlar hazırlayabiliyorsunuz. Alt yapısında nasıl çalıştığına fazlaca takılmadan alıp kullanmıştım. Aşağıda basit bir kullanım örneği görmektesiniz.

Bazı problemler yaşamaya başlayınca altta neler olduğunu, nasıl yapabileceğimi araştırmaya başladım. Matplotlib in annotation sınıfıyla yapabileceğini gördüm. Annotation sınıfının benzer işlevi vardı. Şimdi yapmam gereken grafik üzerindeki nesneyi mouse ile seçebilmek, daha sonra annotation ile bilgiyi göstermek, sonrada eğer istenirse kapatmak olarak sıralayabileceğim bir planda işlemi gerçekleştirmekti. Şimdi adım adım kod satırlarının yanına açıklamalarını yazarak gerçekleştirelim.

  1. Matplotlib ile grafik oluşturmak için önce yapılması gereken bir veri seti oluşturmaktır. . Bu verileri oluşturmak için numpy modülünü kullanalım. Sonra bu verileri gösterelim.

     
  2. Matplotlib üzerinde mouse yada keyboard eventleri için mpl_connect sınıfı kullanılmakta. Burada pick_event olayı tetiklenmektedir. Unutmamak gerekirki pick eventin çalışması için “pick” lenecek nesnenin picker parametresine true ya da bir değer atanması gerekir. Önce matplotlib için gerekli olan tanımlamaları yapalım.

  1. Pick_event fonksiyonunu hazırlayalım.
  2. Datacursorleri silme/kapatma işlemi için ise keypres eventini kullanacağız. Bu event e bağlanmak için bir fonksiyon yazalım.

     
  3. Son olarak tüm bu olayları bağlayalım.

Sonuç olarak aşağıdaki foto da görülen bir pencereye sahip olacağız ve klavyeden bir tuşa bastığımızda datacursor lerin hepsi kaldırılacak.

 

Kodların tamamına ulaşmak için gitlab adresini ziyaret edebilirsiniz. Kalın sağlıcakla..

Ziyaretci : 36554