Как я могу получить координаты щелчка в графике на стороне питона? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть график с кругами на нем, и я хочу, чтобы пользователи могли выбирать круги, а затем я хочу сделать кое-что на стороне питона в зависимости от круга.

Я пробовал обратные вызовы JS, но я получаю сообщение об ошибке:

**

ПРЕДУПРЕЖДЕНИЕ: bokeh.embed.util: Вы генерируете автономный вывод HTML / JS, но пытаетесь использовать настоящий Python обратные вызовы (т.е. с on_change или on_event). Эта комбинация не может работать. Только автономные обратные вызовы JavaScript могут использоваться с автономным выводом. Для большего информация об обратных вызовах JavaScript с Bokeh, см .:

http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks.html В качестве альтернативы, чтобы использовать реальные обратные вызовы Python, серверное приложение Bokeh может использоваться. Для получения дополнительной информации о создании и запуске приложений Bokeh см .: http://bokeh.pydata.org/en/latest/docs/user_guide/server.html

**

Вот код, если вы хотите попробовать это сделать.

from bokeh.plotting import figure, output_file, show

output_file("openurl.html")

p = figure(plot_width=400, plot_height=400, tools="tap", title="Click the Dots")

source = ColumnDataSource(data=dict(
    x=[1, 2, 3, 4, 5],
    y=[2, 5, 8, 2, 7],
    color=["navy", "orange", "olive", "firebrick", "gold"]
    ))

p.circle('x', 'y', color='color', size=20, source=source)```

1 Ответ

0 голосов
/ 22 июня 2019

Я не совсем понял ваш вопрос, но вы можете использовать инструмент для наведения курсора, чтобы добавить взаимодействие, или LabelSet, чтобы отобразить ваш x / y вместе с точками.

from bokeh.plotting import figure
from bokeh.io import show, output_notebook
output_notebook()

p = figure(plot_width=400, plot_height=400, tools="tap, reset, hover", title="Click 
the Dots", tooltips = [('x', '@x'),('y','@y')])

source = ColumnDataSource(data=dict(
    x=[1, 2, 3, 4, 5],
    y=[2, 5, 8, 2, 7],
    color=["navy", "orange", "olive", "firebrick", "gold"]
    ))

p.circle('x', 'y', color='color', size=20, source=source)
show(p)
...