Метки точек данных python на графике


Я искал века (часы, которые похожи на возраст), чтобы найти ответ на действительно раздражающую (казалось бы, основную) проблему, и потому что я не могу найти вопрос, который вполне соответствует ответу, я отправляю вопрос и отвечаю на него в надежде, что это сэкономит кому-то еще огромное количество времени, которое я только что потратил на свои навыки построения noobie.

Если вы хотите пометить свои точки участка с помощью 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()

Я знаю, что xytext=(30,0) идет вместе с textcoords, вы используете эти 30,0 значения для размещения точки метки данных, поэтому ее на оси 0 y и 30 на оси x на своей собственной небольшой площади.

вам нужны обе линии, изображающие i и j в противном случае вы только строите метку данных x или y.

вы получаете что-то вроде этого (обратите внимание только на метки):

это не идеально, есть еще некоторые перекрытия - но это лучше, чем ничего, что у меня было..

1 52

1 ответ:

Как насчет печати (x, y) сразу.

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()

enter image description here