Ich habe nach Alter gesucht (Stunden, die wie Alter sind), um die Antwort auf ein wirklich nerviges (scheinbar grundlegendes) Problem zu finden, und weil ich keine Frage finde, die ganz zur Antwort passt, poste ich eine Frage und beantworte sie in der Hoffnung, dass sie es ist spart jemand anderem die enorme Zeit, die ich gerade für meine Noobie-Plot-Fähigkeiten aufgewendet habe.
Wenn Sie Ihre Plotpunkte mit Python Matplotlib beschriften möchten
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()
Ich weiß, dass xytext = (30,0) mit den Textkoordinaten einhergeht. Sie verwenden diese 30,0-Werte, um den Datenbeschriftungspunkt so zu positionieren, dass er auf der 0 y-Achse und 30 auf der x-Achse auf seiner eigenen kleinen Fläche liegt.
Sie benötigen beide Linien, die i und j darstellen, andernfalls zeichnen Sie nur die x- oder y-Datenbeschriftung.
Sie erhalten so etwas heraus (beachten Sie nur die Etiketten):
Es ist nicht ideal, es gibt immer noch einige Überlappungen - aber es ist besser als nichts, was ich hatte.
ax.annotate('(%s, %s)' % (i, j), ...)
? (Oder wenn Sie die neuere Zeichenfolgenformatierung verwenden ,'({}, {})'.format(i, j)
.)