Как получить координаты X и Y на кране в боке - PullRequest
0 голосов
/ 27 мая 2019

У меня проблема с отображением координат x и y на графике в боке с использованием инструмента Tap

Я попробовал следующий код. Теперь я хочу написать обратный звонок для инструмента нажмите, как мне это сделать. как показать при нажатии на квадрат координаты x и y

  from bokeh.models import ColumnDataSource, OpenURL, TapTool
  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]))


  p.square('x', 'y', color='green', size=20, source=source)

  taptool = p.select(type=TapTool)

  show(p)

1 Ответ

0 голосов
/ 27 мая 2019

Вы можете получить координаты x и y при нажатии, написав обратный вызов, который вызывается при изменении выбора. Индексы выбранных в данный момент глифов можно найти в source.selected.indices. Эти индексы могут быть использованы для получения координат x и y из source.data. Этот фрагмент кода печатает координаты x и y в консоли вашего браузера (F12).

from bokeh.models import ColumnDataSource, TapTool, CustomJS
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]))

p.square('x', 'y', color='green', size=20, source=source)

callback = CustomJS(args=dict(source=source), code="""
    var selectedIndex = source.selected.indices;
    for (var i = 0; i < selectedIndex.length; i++) {
        console.log("Index:", selectedIndex[i]);
        console.log("x:", source.data['x'][selectedIndex[i]]);
        console.log("y:", source.data['y'][selectedIndex[i]]);
    }
""")

taptool = p.select(type=TapTool)
source.selected.js_on_change('indices', callback)
show(p)
...