2013-04-08 29 views
7

Wykreślam tablicę 2D z matplotlib. W dolnym prawym rogu okna wyświetlane są współrzędne X i Y kursora. W jaki sposób mogę dodać informacje do tego paska stanu o danych pod kursorem, np. Zamiast "x = 439.501 y = 317.744" wyświetlałoby się "x, y: [440,318] danych: 100"? Czy mogę w jakiś sposób dostać się do tego paska narzędziowego Nawigacja i napisać własną wiadomość do pokazania?Dodaj informacje do matplotlib Pasek narzędzi nawigacyjnych/pasek stanu?

Udało mi się dodać własną procedurę obsługi zdarzeń dla przycisku "button_press_event", aby wartość danych była drukowana w oknie terminala, ale to podejście wymaga po prostu kliknięcia myszką i zalania sesję interaktywną.

+0

możliwe duplikat [wartości matplotlib pod kursorem] (http: // StackOverflow. com/questions/14754931/matplotlib-values-under-cursor) – tacaswell

+0

również http://stackoverflow.com/questions/14349289/in-a-matplotlib-figure-window-with-imshow-how-can--remove- ukryj lub zmień definicję – tacaswell

Odpowiedz

10

Po prostu trzeba ponownie przypisać ax.format_coord, oddzwonić, aby narysować tę etykietę.

Patrz this example z dokumentacji, jak In a matplotlib figure window (with imshow), how can I remove, hide, or redefine the displayed position of the mouse? i matplotlib values under cursor

(kod podnoszone bezpośrednio z przykładu)

""" 
Show how to modify the coordinate formatter to report the image "z" 
value of the nearest pixel given x and y 
""" 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.cm as cm 

X = 10*np.random.rand(5,3) 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.imshow(X, cmap=cm.jet, interpolation='nearest') 

numrows, numcols = X.shape 
def format_coord(x, y): 
    col = int(x+0.5) 
    row = int(y+0.5) 
    if col>=0 and col<numcols and row>=0 and row<numrows: 
        z = X[row,col] 
        return 'x=%1.4f, y=%1.4f, z=%1.4f'%(x, y, z) 
    else: 
        return 'x=%1.4f, y=%1.4f'%(x, y) 

ax.format_coord = format_coord 
plt.show() 
+0

po tym wszystkim, że googlowałem, wciąż nie znalazłem tego! dzięki za rozwiązanie! – northaholic

+0

@northaholic Jeśli to rozwiązało twój problem, możesz to zaakceptować (duży szary znacznik po lewej stronie) – tacaswell

Powiązane problemy