2011-11-28 53 views
5

Tôi muốn tạo hành động di chuột tùy chỉnh trong matplotlib bằng cách sử dụng chức năng onmove bên dưới. Cách tốt nhất để chuyển đổi giá trị datapoint hiện tại là xevent.x sang hệ tọa độ khác như điểm để tôi có thể phát hiện khi event.x nằm trong số p điểm của bất kỳ điểm dữ liệu nào? Tôi biết về sự kiện bộ chọn, nhưng không muốn sử dụng sự kiện này, vì nó dựa trên một lần nhấp, không phải là di chuột.Phát hiện vị trí chuột tương đối trên vải matplotlib

fig = figure() 
ax1 = subplot(111) 
x = linspace(0,10,11) 
y = x**2 
ax1.plot(x,y) 
fig.canvas.mpl_connect('motion_notify_event', onmove) 
p = 5 

def onmove(event): 
    if event.inaxes: 
    #Detect if mouse was moved within p points of any value in x 

Trả lời

3

Tôi đã trả lời related question the other day.

Chuyển đổi tọa độ "điểm" (hoặc thiết bị) của bạn phụ thuộc vào hệ tọa độ gốc của x và y. Nếu (x, y) là giá trị dữ liệu trên một trục, ax, thì bạn có thể chuyển đổi chúng với ax.transData.transform_point([x, y]). Nếu (x, y) nằm trong tọa độ trục (0-1) thì ax.transAxes là những gì bạn đang theo dõi.

Các sự kiện onmove nhận được sẽ có thuộc tính của xy đó sẽ là (x, y) trong thiết bị (pixel) phối

Các tài liệu có liên quan cung cấp thông tin này có thể được tìm thấy: http://matplotlib.sourceforge.net/users/transforms_tutorial.htmlhttp://matplotlib.sourceforge.net/users/event_handling.html

Nghệ sĩ khác (đường kẻ, bản vá lỗi, v.v.) có phương pháp chứa có thể bạn quan tâm: http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.artist.Artist.contains.

Các vấn đề liên quan