Etiquetar puntos de datos de python en la gráfica


Busqué edades (horas que es como edades) para encontrar la respuesta a un problema realmente molesto (aparentemente básico), y porque no puedo encontrar una pregunta que se ajuste bastante a la respuesta, estoy publicando una pregunta y respondiéndola con la esperanza de que le ahorrará a alguien más la gran cantidad de tiempo que acabo de pasar en mis habilidades de trazado de novatos.

Si desea etiquetar sus puntos de trazado utilizando python matplotlib

from matplotlib import pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

A = anyarray
B = anyotherarray

plt.plot(A,B)
for i,j in zip(A,B):
    ax.annotate('%s)' %j, xy=(i,j), xytext=(30,0), textcoords='offset points')
    ax.annotate('(%s,' %i, xy=(i,j))

plt.grid()
plt.show()

Sé que xytext=(30,0) va junto con los textcoords, usa esos 30,0 valores para posicionar el punto de la etiqueta de datos, por lo que su en el eje y 0 y 30 sobre el eje x en su propia pequeña área.

Necesita las dos líneas que trazan i y j, de lo contrario, solo trazará la etiqueta de datos x o y.

Se obtiene algo como esto (tenga en cuenta las etiquetas solo):
Mi propia gráfica con puntos de datos etiquetados

No es ideal, todavía hay algo de superposición - pero es mejor que nada que es lo que tenía..

Author: ashley, 2014-03-08

1 answers

¿Qué tal imprimir (x, y) de una vez?

from matplotlib import pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

A = -0.75, -0.25, 0, 0.25, 0.5, 0.75, 1.0
B = 0.73, 0.97, 1.0, 0.97, 0.88, 0.73, 0.54

plt.plot(A,B)
for xy in zip(A, B):                                       # <--
    ax.annotate('(%s, %s)' % xy, xy=xy, textcoords='data') # <--

plt.grid()
plt.show()

introduzca la descripción de la imagen aquí

 71
Author: falsetru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-04 11:35:47