我想使用带有Bokeh服务器的TapTool来运行一个带有一些附加功能的回调。
我想选择的字形是在背景图像的顶部。
如果我用TapTool选择一个字形,该字形会保持其不透明度,但所有其他字形的不透明度会降低。问题是,当这些字形变得更不透明时,它们在背景图像上不能被很好地看到。
有没有办法让所有字形的alpha值都保持在100%,而改变所选字形的颜色?
下面是我找到的一些示例代码作为开始 此处
from bokeh import plotting as bplt
from bokeh import layouts as blayouts
from bokeh import models as bmodels
from bokeh import io as bio
fig = bplt.figure(tools="tap")
source = bmodels.ColumnDataSource(dict(x=[0,1], y=[0,1]))
r = fig.circle('x', 'y', source=source, size=10)
def handler(attr, old, new):
print('attr: {} old: {} new: {}'.format(attr, old, new))
# r.data_source.on_change('selected', handler)
r.data_source.selected.on_change('indices', handler)
bio.curdoc().add_root(blayouts.layout([[fig]]))
这是一个bokeh 2.0.1的工作例子。
from bokeh import plotting as bplt
from bokeh import layouts as blayouts
from bokeh import models as bmodels
from bokeh import io as bio
fig = bplt.figure(tools="tap")
source = bmodels.ColumnDataSource(dict(x=[0,1], y=[0,1]))
r = fig.circle('x', 'y', source=source, size=10, color='#000000',
# set visual properties for selected glyphs
selection_color="#2bff00",
# set visual properties for non-selected glyphs
nonselection_fill_alpha=1.0,
nonselection_fill_color="#000000")
def handler(attr, old, new):
print('attr: {} old: {} new: {}'.format(attr, old, new))
# r.data_source.on_change('selected', handler)
r.data_source.selected.on_change('indices', handler)
bio.curdoc().add_root(blayouts.layout([[fig]]))