Есть ли способ указать, как непокрытые точки должны появляться в боке? - PullRequest
0 голосов
/ 02 апреля 2019

Я вижу, как настроить вид наведенной точки на графике Боке, например, с чем-то вроде

p.add_glyph(ColumnDataSource(source), initial_circle, hover_glyph=hovered_circle, ...)

, но не вижу ничего о настройке un -положенных точек при наведении точки.

Есть ли способ указать, как должны отображаться неперемещенные точки, в отличие от их стандартного ("начального") вида, аналогично nonselection_glyph против selection_glyph?

1 Ответ

1 голос
/ 02 апреля 2019

В документации Bokeh GlyphRenderer ничего подобного не указано. Простая альтернатива - создать свой собственный обратный вызов HoverTool, чтобы придать кружочкам без наведения желаемый вид, как в этом примере (работает для Bokeh v1.0.4)

from bokeh.models import ColumnDataSource, HoverTool, CustomJS
from bokeh.plotting import show, figure

source = ColumnDataSource(dict(x = [1, 2], y = [3, 4], color = ['blue', 'blue']))
p = figure(tools = 'hover')
c = p.circle(x = 'x', y = 'y', color = 'color', size = 20, source = source)

code = '''  if (cb_data.index.indices.length > 0){ 
                selected_index = cb_data.index.indices[0];

                for (index in source.data['color']){
                    if (index == selected_index)
                        source.data['color'][index] = 'red';
                    else
                        source.data['color'][index] = 'yellow';             
                source.change.emit();
            }
            else{
                for (index in source.data['color'])
                    source.data['color'][index] = 'blue';
            } '''
p.select(HoverTool).callback = CustomJS(args = dict(source = source), code = code)
show(p)

Результат;

enter image description here

...