“Ç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