2013-04-08 7 views
7

Ich zeichne ein 2D-Array mit Matplotlib. In der unteren rechten Ecke des Fensters werden die x- und y-Koordinaten des Cursors angezeigt. Wie kann ich dieser Statusleiste Informationen über die Daten unter dem Cursor hinzufügen, z. B. anstelle von 'x = 439.501 y = 317.744' würde es 'x, y: [440, 318] Daten anzeigen: 100'? Kann ich diese Navigationssymbolleiste irgendwie in die Finger bekommen und meine eigene Nachricht schreiben, um angezeigt zu werden?Informationen zu matplotlib hinzufügen Navigationssymbolleiste/Statusleiste?

Ich habe es geschafft, meinen eigenen Event-Handler für 'button_press_event' hinzuzufügen, so dass der Datenwert auf dem Terminalfenster gedruckt wird, aber dieser Ansatz erfordert nur viel Mausklick und überflutet die interaktive Sitzung.

+0

möglich Duplikat [matplotlib Werte unter Cursor] (http: // Stackoverflow. com/fragen/14754931/matplotlib-werte-unter-cursor) – tacaswell

+0

auch http://stackoverflow.com/questions/14349289/in-amatplotlib-figure-window-with-imshow-how-can-i-remove- verstecken oder neu definieren – tacaswell

Antwort

10

Sie müssen einfach ax.format_coord, den Rückruf, der zum Zeichnen dieses Etiketts verwendet wird, neu zuweisen.

Siehe this example aus der Dokumentation sowie In a matplotlib figure window (with imshow), how can I remove, hide, or redefine the displayed position of the mouse? und matplotlib values under cursor

(Code angehoben direkt von Beispiel)

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

nach all dem googeln, ich habe immer noch nicht gefunden! Danke für die Lösung! – northaholic

+0

@northaholic Wenn dies Ihr Problem gelöst hat, können Sie es akzeptieren (das große graue Häkchen auf der linken Seite) – tacaswell

Verwandte Themen