Bir temel harita çiziminde bir açılır kutunun nasıl oluşturulacağını öğrenmek istiyorum. Faremi bir konumun üzerine getirdiğimde, açılır kutuyu tetiklemesi gerekir.Matplotlib taban haritası: Açılan kutu
Bu mümkün mü?
Bir temel harita çiziminde bir açılır kutunun nasıl oluşturulacağını öğrenmek istiyorum. Faremi bir konumun üzerine getirdiğimde, açılır kutuyu tetiklemesi gerekir.Matplotlib taban haritası: Açılan kutu
Bu mümkün mü?
Evet bu çerçeveyi ele Matplotlib etkinlikte sayesinde mümkündür. Özellikle yazdığınız bir şeyi daha önce yazdığım bir yazı bulamadım, bu yüzden bir tane yazdım (matplotlib kaynağına eklenmek üzere ileri süreceğim).
Ben en iyi ne olup bittiğini anlamak için iyice http://matplotlib.sourceforge.net/users/event_handling.html okurdu. Unutmayın ki "pick_event" mükemmel bir çözüm gibi geliyorsa da fare tıklamaları için değil, fare tıklamaları için değil, bu durumda işe yaramıyor.
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes()
points_with_annotation = []
for i in range(10):
point, = plt.plot(i, i, 'o', markersize=10)
annotation = ax.annotate("Mouseover point %s" % i,
xy=(i, i), xycoords='data',
xytext=(i + 1, i), textcoords='data',
horizontalalignment="left",
arrowprops=dict(arrowstyle="simple",
connectionstyle="arc3,rad=-0.2"),
bbox=dict(boxstyle="round", facecolor="w",
edgecolor="0.5", alpha=0.9)
)
# by default, disable the annotation visibility
annotation.set_visible(False)
points_with_annotation.append([point, annotation])
def on_move(event):
visibility_changed = False
for point, annotation in points_with_annotation:
should_be_visible = (point.contains(event)[0] == True)
if should_be_visible != annotation.get_visible():
visibility_changed = True
annotation.set_visible(should_be_visible)
if visibility_changed:
plt.draw()
on_move_id = fig.canvas.mpl_connect('motion_notify_event', on_move)
plt.show()
Umarım her şey oldukça okunabilir olmalıdır: gibi çok güzel bir istesin nesneleştirilmiştirler olabilir
Kodum, görünüyor. kodun yüksek seviyede genel gider:
Ah güzel (yöntem documented here olduğu içerir), kod ve açıklama için @pelson teşekkür ederim. Yani bu, arsa üzerinde bir konum üzerinde gezinmek için doğrudan olay işleyicisi olmadığı anlamına gelir. Dolaylı olarak yapılması gerekiyor. –
Hayır. Fare olayının x ve y koordinatlarına 'on_move' işlevinde erişebilirsiniz. Ondan herşeyi yapabilirsin. Benim durumumda tüm sanatçılara baktım ve herhangi bir fare pozisyonunu içermediğimi belirledim, ancak tek bir açıklama örneğinin x ve y verilen pozisyonunu eşit olarak güncelleyebilirsiniz. – pelson
Evet, bu noktada haklısınız, ama "hover_event" gibi bir etkinlikle belirli bir sanatçıya bir geri arama kaydettirmek gibi bir şey arıyordum. Bu, doğrudan bir etkinlik olan –