2011-06-08 19 views
25

¿Es posible, con Matplotlib, imprimir los valores de cada punto en el gráfico?Escribir valores numéricos en la gráfica con Matplotlib

Por ejemplo, si tengo:

x = numpy.range(0,10) 
y = numpy.array([5,3,4,2,7,5,4,6,3,2]) 
pyplot.plot(x,y) 

¿Cómo puedo mostrar valores de y en la trama (por ejemplo imprimir un 5 cerca de la 0,5) punto (, imprimir un 3 cerca de la (1,3) punto, etc.)?

Respuesta

29

Puede usar el comando annotate para colocar anotaciones de texto en cualquier valor xey que desee. Para colocarlos exactamente en los puntos de datos que podría hacer este

import numpy 
from matplotlib import pyplot 

x = numpy.arange(10) 
y = numpy.array([5,3,4,2,7,5,4,6,3,2]) 

fig = pyplot.figure() 
ax = fig.add_subplot(111) 
ax.set_ylim(0,10) 
pyplot.plot(x,y) 
for i,j in zip(x,y): 
    ax.annotate(str(j),xy=(i,j)) 

pyplot.show() 

Si desea que las anotaciones compensan un poco, se puede cambiar la línea annotate a algo así como

ax.annotate(str(j),xy=(i,j+0.5)) 
+6

+1 Como nota al margen, anotar tiene "un poco de compensación en las anotaciones" incorporadas. Simplemente haga 'ax.annotate (str (j), xy = (i, j), xytext = (10,10), textcoords = 'puntos de compensación')' para compensar las anotaciones por 10 _points_ en las direcciones xey. Esto a menudo es más útil que la compensación en coordenadas de datos (aunque también es una opción). –

+0

Ah, gracias. No sabía acerca de esa opción. –

3

Uso pylot.text()

x=[1,2,3] 
y=[9,8,7] 

pyplot.plot(x,y) 
for a,b in zip(x, y): 
    pyplot.text(a, b, str(b)) 
pyplot.show() 
Cuestiones relacionadas