2013-02-02 4 views
5

ho trama semplice come questo:matplotlib coordina formato

matplotlib.pyplot as plt 

pt_no = [1,2,3] 
coord_x = [6035763.111, 6035765.251, 6035762.801] 
coord_y = [6439524.100, 6439522.251, 6439518.298] 

fig, ax = plt.subplots() 
ax.scatter(coord_y, coord_x, marker='x') 
ax.axes.get_xaxis().set_visible(False) 
ax.axes.get_yaxis().set_visible(False) 
for i, txt in enumerate(pt_no): 
    ax.annotate(txt, (coord_y[i], coord_x[i])) 

plt.show() 

ma coordinate visualizzate nell'angolo bootom a destra della finestra del grafico mentre ci si sposta o tenere il cursore sopra l'aspetto figura come 6.43953e + 06.
Come posso avere le mie coordinate di input visualizzate esattamente così com'è, ad esempio
6439518.298 invece 6.43953e + 0
?
Grazie in anticipo

risposta

9

L'attributo ax.fmt_xdata può essere impostato su una funzione che formatta la stringa visualizzata.

Ad esempio:

ax.fmt_xdata = lambda x: "{0:f}".format(x) 
ax.fmt_ydata = lambda x: "{0:f}".format(x) 
+0

Grazie, è esattamente quello che volevo. – daikini

+0

Ma un'altra domanda: mentre esamini il mio codice vedrai che ho scambiato gli assi passando le mie coordinate x, y come y, x a matplotlib per rendere la mia trama orientata verso nord. Come risultato le mie corde sono visualizzate inversamente nella finestra del grafico. Può essere facilmente modificato? – daikini

7

Potete anche ignorare completamente l'etichettatura di default impostando format_coord

ax.format_coord = lambda x, y: "({0:f}, ".format(y) + "{0:f})".format(x) 

example, api doc

+0

Grazie mille è un ottimo suggerimento, che mi permetterà di ottenere tutto ciò di cui ho bisogno in questa materia. – daikini