在散景中隐藏注释
hide annotations in bokeh
我有一个散景图,我在其中以 LabelSet 和 BoxAnnotation 的形式添加了一些数据作为叠加层,但我希望能够动态地 enable/disable 这个叠加层。
我可以enable/hide情节中的某些行,但注释系统似乎不同。我已经做到了
正在初始化
from ipywidgets import interact
from bokeh.plotting import figure as bf
from bokeh.layouts import layout as bl
from bokeh.models import Toggle, BoxAnnotation, CustomJS
from bokeh.io import push_notebook, show, output_notebook
output_notebook()
小部件生成
p = bf(title='test', x_range=(0,1), y_range=(0,1))
x = [1/3, 2/3]
y=[1/3, 2/3]
p.circle(x=x, y=y, size=15)
box = BoxAnnotation(left=None, right=0.5, fill_color='red', fill_alpha=0.1)
p.add_layout(box)
互动性
code = '''\
if toggle.active
box.visible = true
console.log 'enabling box'
else
box.visible = false
console.log 'disabling box'
'''
callback = CustomJS.from_coffeescript(code=code, args={})
toggle = Toggle(label="Red Box", button_type="success", callback=callback)
callback.args = {'toggle': toggle, 'box': box}
layout = bl([p], [toggle])
show(layout)
当我检查 JS 控制台时,if/else 子句按预期触发,因此 Toggle
有效,但红色框保留在原位,无论是在 Firefox 中还是在 IE 中
我认为可能有一些管道没有连接到 BokehJS 端以响应 visible
。如果是这样,那就是一个错误。请在 Project Issue Tracker.
中对所有这些信息提出问题
同时,您可以通过操纵 alpha
值来实现相同的视觉效果:
code = '''\
if toggle.active
box.fill_alpha = 0.1
box.line_alpha = 1
console.log 'enabling box'
else
box.fill_alpha = 0
box.line_alpha = 0
console.log 'disabling box'
'''
callback = CustomJS.from_coffeescript(code=code, args={})
toggle = Toggle(label="Red Box", button_type="success", callback=callback)
callback.args = {'toggle': toggle, 'box': box}
layout = bl([p], [toggle])
show(layout)
我有一个散景图,我在其中以 LabelSet 和 BoxAnnotation 的形式添加了一些数据作为叠加层,但我希望能够动态地 enable/disable 这个叠加层。
我可以enable/hide情节中的某些行
正在初始化
from ipywidgets import interact
from bokeh.plotting import figure as bf
from bokeh.layouts import layout as bl
from bokeh.models import Toggle, BoxAnnotation, CustomJS
from bokeh.io import push_notebook, show, output_notebook
output_notebook()
小部件生成
p = bf(title='test', x_range=(0,1), y_range=(0,1))
x = [1/3, 2/3]
y=[1/3, 2/3]
p.circle(x=x, y=y, size=15)
box = BoxAnnotation(left=None, right=0.5, fill_color='red', fill_alpha=0.1)
p.add_layout(box)
互动性
code = '''\
if toggle.active
box.visible = true
console.log 'enabling box'
else
box.visible = false
console.log 'disabling box'
'''
callback = CustomJS.from_coffeescript(code=code, args={})
toggle = Toggle(label="Red Box", button_type="success", callback=callback)
callback.args = {'toggle': toggle, 'box': box}
layout = bl([p], [toggle])
show(layout)
当我检查 JS 控制台时,if/else 子句按预期触发,因此 Toggle
有效,但红色框保留在原位,无论是在 Firefox 中还是在 IE 中
我认为可能有一些管道没有连接到 BokehJS 端以响应 visible
。如果是这样,那就是一个错误。请在 Project Issue Tracker.
同时,您可以通过操纵 alpha
值来实现相同的视觉效果:
code = '''\
if toggle.active
box.fill_alpha = 0.1
box.line_alpha = 1
console.log 'enabling box'
else
box.fill_alpha = 0
box.line_alpha = 0
console.log 'disabling box'
'''
callback = CustomJS.from_coffeescript(code=code, args={})
toggle = Toggle(label="Red Box", button_type="success", callback=callback)
callback.args = {'toggle': toggle, 'box': box}
layout = bl([p], [toggle])
show(layout)