2013-04-08 16 views
7

Sto progettando un array 2D con matplotlib. Nell'angolo in basso a destra della finestra vengono visualizzate le coordinate xey del cursore. Come posso aggiungere informazioni a questa barra di stato sui dati al di sotto del cursore, ad esempio, anziché 'x = 439,501 y = 317.744' mostrerebbe 'x, y: [440,318] dati: 100'? Posso in qualche modo mettere le mani su questa barra degli strumenti di navigazione e scrivere il mio messaggio da mostrare?Aggiungi informazioni a matplotlib Barra degli strumenti di navigazione/barra di stato?

Sono riuscito ad aggiungere il mio gestore di eventi per 'button_press_event', in modo che il valore dei dati sia stampato sulla finestra del terminale, ma questo approccio richiede solo molto clic del mouse e allaga la sessione interattiva.

+0

possibile duplicato del [valori matplotlib sotto il cursore] (http: // StackOverflow. it/questions/14754931/matplotlib-values-under-cursor) – tacaswell

+0

anche http://stackoverflow.com/questions/14349289/in-a-matplotlib-figure-window-with-imshow-how-can-i-remove- hide-or-redefine – tacaswell

risposta

10

È sufficiente riassegnare ax.format_coord, la richiamata utilizzata per disegnare quell'etichetta.

Vedi this example dalla documentazione, così come In a matplotlib figure window (with imshow), how can I remove, hide, or redefine the displayed position of the mouse? e matplotlib values under cursor

(codice sollevato direttamente da esempio)

""" 
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

dopo tutto quel googling, non ho ancora trovato questo! grazie per la soluzione! – northaholic

+0

@northaholic Se questo problema è stato risolto puoi accettarlo (il grande segno di spunta grigio a sinistra) – tacaswell

Problemi correlati