2015-12-29 1 views
0

У меня проблема с Bokeh 0.10.0. Мне нужно построить две серии прямоугольников (пусть, красная серия и синяя серия), и показать подсказки инструментов над ними. Я думаю, эта цифра будет более легко понять:Инструмент для зависания Bokeh работает только в одной серии, но не в комбинированных сериях

enter image description here

Я не могу понять, как иметь инструмент-подсказки на всех прямоугольников. Следующий минимальный пример (jupyter ноутбук) показывает инструмент-подсказку на только красный серии:

import bokeh 
    from bokeh.charts import show, output_notebook 
    from bokeh.models import HoverTool 
    from bokeh.plotting import figure, ColumnDataSource 
    from collections import OrderedDict 
    from bokeh.plotting import figure, output_file, show 

    print('bokeh version: %s' % bokeh.__version__) # 0.10.0 

    plot = figure(width=300, height=300, tools="hover, save") 

    x_axis = [1, 2, 3] 
    # length of rectangles, starting from 0 
    max_ = [1, 2, 3] 
    min_ = [-0.5, -1, -7] 
    # middle of rectangles 
    ytop = [e/2. for e in max_] 
    ybot = [e/2. for e in min_] 

    # first set of data (red upper rectangles) 
    source = ColumnDataSource(data=dict(sval=max_,)) 
    plot.rect(x=x_axis, y=ytop, width=0.8, height=max_, color="red",source=source) 
    # second set of data (blue lower rectangles) 
    source = ColumnDataSource(data=dict(sval=min_,)) 
    plot.rect(x=x_axis, y=ybot, width=0.8, height=min_, color="navy", source=source) 
    # create hover tooltips 
    hover = plot.select(dict(type=HoverTool)) 
    hover.tooltips = OrderedDict([('X', '@x'), ('Valeur', '@sval')]) 
    # show in notebook  
    output_notebook() 
    show(plot) 

ответ

2

Я думаю, что его, потому что вы задаете отрицательную высоту, которая, кажется, чтобы увидеть хорошо, но хит-тестированию для висения инструмент, похоже, не работает.

Если вы изменили свой min_ на положительные значения (для height=) и ваши ybot на отрицательные значения, это сработает для меня.

Например:

min_ = [abs(x) for x in [-0.5, -1, -2]] 
ybot = [-e/2. for e in min_] 

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

Я тестировал его на Bokeh 0.11.0dev9, который, кажется, ведет себя аналогично 0.10.

Редактировать: Если в данных имеется не менее 1 положительной высоты, все зависания отображаются правильно, а также с отрицательной высотой. Таким образом, это только кажется неудачным на всех отрицательных высотах.

У меня есть создать проблемы на Github, см:

https://github.com/bokeh/bokeh/issues/3517