Я пытаюсь нанести несколько точек в Matplotlib на диаграмму рассеяния и показать значения координат при наведении курсора на точки. Я передаю аннотацию в качестве аргумента для обратного вызова, и когда я пытаюсь обновить значения / text / et c. аннотации внутри функции обратного вызова, значения меняются, но я не вижу изменений на графике. Я что-то пропустил? Я попытался annotation.remove (), но он тоже не работает (он удаляется, но я все еще вижу его на графике).
Вот фрагмент кода:
annotation = plot_zoom.annotate('point offset from data', xy=(50, 93),
xycoords='data',
xytext=(-15, 25), textcoords='offset points',
arrowprops=dict(facecolor='black', shrink=0.05),
horizontalalignment='right', verticalalignment='bottom',
bbox=dict(boxstyle="round", fc="w")
)
local_figure.canvas.mpl_connect('button_press_event',
lambda event: on_plot_hover(event, plot_zoom, local_figure, annotation))
def on_plot_hover(event, plot, figure, annotation):
if not event.dblclick:
# do something
print(annotation)
annotation.set_text("IT HAS CHANGED")
print(annotation)
И как вывод я получаю это:
Annotation(50, 93, 'point offset from data')
Annotation(50, 93, 'IT HAS CHANGED')
но на графике я не вижу изменений, я все еще вижу «смещение точки от данных». Что может быть причиной этого?
Большое спасибо!