Я хочу получить координаты, щелкая мышкой в разных местах на фигуре Matplotlib внутри Jupyter Notebook. Я хочу использовать ipywidgets без с помощью какой-либо магической команды Matplotlib (например, %matplotlib ipympl) для переключения бэкэнда и без использования дополнительных пакетов, кроме Matplotlib, ipywidgets и Numpy.
Подробное объяснение
Я знаю, как этого добиться с помощью пакета ipympl и соответствующей магической команды Jupyter< /em> %matplotlib ipympl, чтобы переключить серверную часть со встроенного на ipympl (см. ЗДЕСЬ).
После установки ipympl, например с помощью conda install ipympl и переключившись на серверную часть ipympl, можно выполнить эту процедуру для захвата координат щелчка мыши в Matplotlib.
Код: Выделить всё
import matplotlib.pyplot as plt
# Function to store mouse-click coordinates
def onclick(event):
x, y = event.xdata, event.ydata
plt.plot(x, y, 'ro')
xy.append((x, y))
# %%
# Start Matplotlib interactive mode
%matplotlib ipympl
plt.plot([0, 1])
xy = [] # Initializes coordinates
plt.connect('button_press_event', onclick)

Однако я нахожу это переключение между встроенным и ipympl довольно запутанным в Notebook.
Альтернативой интерактивного построения графиков Matplotlib в Jupyter Notebook является использовать пакет ipywidgets. Например, с помощью команды взаимодействия можно легко создавать ползунки для графиков Matplotlib без необходимости переключать серверную часть cxh. (см. ЗДЕСЬ).
Код: Выделить всё
from ipywidgets import interact
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * np.pi)
def update(w=1.0):
plt.plot(np.sin(w * x))
plt.show()
interact(update);

Однако я не нашел способа использовать пакет ipywidgets для захвата координат (x,y) от щелчков мыши, что эквивалентно моему приведенному выше примеру с использованием ipympl.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -jupyter-n