Значения аннотации изменены, но они не обновляются на графике - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь нанести несколько точек в 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')

но на графике я не вижу изменений, я все еще вижу «смещение точки от данных». Что может быть причиной этого?

Большое спасибо!

1 Ответ

0 голосов
/ 05 марта 2020

Похоже, я нашел решение, поэтому я публикую его для всех, кто может столкнуться с этой проблемой в будущем. Как только вы закончите с обновлением аннотации, вам нужно перерисовать холст, к которому подключен обратный вызов:

event.canvas.draw()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...