Çok Boyutlu Verilerin t-SNE ile Görselleştirilmesi – 2

Çok Boyutlu Verilerin t-SNE ile Görselleştirilmesi – 1” de yer alan örnek “kelimeVec-1.txt” veri seti kullanılarak sklearn kütüphanesinin t-SNE algoritması ile görselleştirilmesi ile ilgili yazı paylaşılmıştı. Bu yazıda da aynı veri seti kullanılarak grafik üzerindeki noktalara mouse  geldiğinde etiketlerin gösterilmesi ile ilgili örnek bir çalışma yapılmıştır.

“hover” fonksiyon ile grafik üzerindeki mouse hareketi yakalanır.

def hover(event): # mouse hareketini yakalar
    vis = annot.get_visible()
    if event.inaxes == ax:
        cont, ind = sc.contains(event)
        if cont:
            update_annot(ind)
            annot.set_visible(True)
            fig.canvas.draw_idle()
        else:
            if vis:
                annot.set_visible(False)
                fig.canvas.draw_idle()

“update_annot” fonksiyonu ile mouse un bulunduğu noktanın etiket bilgileri gelmektedir.

def update_annot(ind):# bulundugu noktanın etiket bilgisini getirir
    pos = sc.get_offsets()[ind["ind"][0]]
    annot.xy = pos
    text = "{}, {}".format(" ".join(list(map(str, ind["ind"]))), 
                           " ".join([arr_y[n] for n in ind["ind"]]))
    annot.set_text(text)
    annot.get_bbox_patch().set_facecolor(cmap(norm(c[ind["ind"][0]])))
    annot.get_bbox_patch().set_alpha(0.4)

Bir önceki çalışmadaki kod üzerinde yapılan değişiklikler sonrası elde edilen grafiğin görüntüsü aşağıdaki gibidir.

Yapılan bu çalışmanın tüm kaynak kodlarına github adresimde ulaşabilirsiniz.

KAYNAK:

https://stackoverflow.com/questions/7908636/possible-to-make-labels-appear-when-hovering-over-a-point-in-matplotlib

PART_1