Как обработать событие мыши на осях графика matplotlib?

Рейтинг: 1Ответов: 0Опубликовано: 14.03.2023

Мне нужно обработать событие колеса мыши на осях графика, которые показаны красным цветом на рисунке. И при этом нужно определить, на какой оси - вертикальной или горизонтальной - произошло это событие.

В основном везде написано, что нужно использовать на атрибуте canvas графика метод mpl_connect. Я так и сделал и обнаружил, что при нахождении указателя мыши над указанными областями только значения x и y параметра event имеют определённое значение (остальные имеют значение None). Атрибут inaxes имеет определённое значение только когда указатель мыши находится над розовой областью. Так что я не знаю, как таким способом можно определить, над какой осью произошло событие.

Конечно, я мог бы попытаться рассчитать координаты этих осей и определять место возникновения события по атрибутам xy, но убеждён, что эти оси сами по себе являются объектами, а значит, могут сами устанавливать обработчики событий. Только как до них достучаться?

Plot with areas

def zoom(event)
    print(event)

p, ax = plt.subplots()
t = [0, 1, 2, 3, 4, 5]
v = [3, 5, 4, 3, 1, 6]
plt.plot(t, v)
p.canvas.mpl_connect('scroll_event', zoom)
plt.show()

Ответы

Ответов пока нет.