Боке - Как заставить инструмент парения работать только для определенных точек? - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть следующий код:

bk.reset_output()
bk.output_notebook()
source1 = ColumnDataSource(data=dict(x=xnew, y=y_smooth))
source2 = ColumnDataSource(data=dict(x=xmax, y=ymax, desc=xmax, imgs = ['../Documents/cat.jpeg',
                                                                    '../Documents/lebowski.jpg']))

# create a new plot with a title and axis labels
p = bk.figure(plot_width=500, plot_height=500, title='foobar')
# add a line and a Hover tool that will display the value of x and y at any point along the line
#p.line(x='CCS', y='Intensity', line_width=2, source=source)

    p.add_tools(HoverTool(
    tooltips="""
    <div>
        <span style="font-size: 17px; font-weight: bold;">@desc</span>
    </div>
         <img
                src="@imgs" height="100" alt="@imgs" width="100"
                style="float: left; margin: 0px 15px 15px 0px;"
                border="2"
            ></img>
            """
))

p.scatter(x='x', y='y', source=source2, marker="inverted_triangle", size=12)
p.line(x='x', y='y', source=source1)
p.xaxis.axis_label = 'CCSD'
p.yaxis.axis_label = 'Intensity'
# show the results
show(p)

Это дает мне этот график:

enter image description here

Как вы можете видеть, яиметь совпадениеЯ хочу, чтобы там было только всплывающее окно, соответствующее треугольникам (оно включает в себя изображение), вместо этого оно дает мне один для каждой точки вдоль линии, а также для треугольников, поэтому, почему я получаю оверлей с ???неожиданно возникнуть.По сути, я хочу, чтобы инструмент наведения работал только для графика p.scatter, а не для обоих.Есть ли какой-нибудь возможный способ сделать это?

Я новичок в Bokeh и вообще программирую, поэтому чувствую себя довольно застрявшим.

1 Ответ

0 голосов
/ 30 ноября 2018

Присвойте глифу, которому требуется средство для наведения, имя:

p.scatter(x='x', y='y', source=source2, marker="inverted_triangle", size=12, name='needshover')

Создайте средство для наведения и укажите его на глиф:

hover = HoverTool(names=['needshover'], tooltips="""
    <div>
        <span style="font-size: 17px; font-weight: bold;">@desc</span>
    </div>
         <img
                src="@imgs" height="100" alt="@imgs" width="100"
                style="float: left; margin: 0px 15px 15px 0px;"
                border="2"
            ></img>
          """))

Добавьте средство наведения:

p.add_tools(hover)

...