【发布时间】:2018-09-18 00:52:27
【问题描述】:
我有一个散景图,它以图表中的 7 条线系列开始。选择小部件通过 customjs 回调更改数据并仅显示 4 个系列
for i in range(7):
if i < 4:
js_code += """data['y%d']=data.%s;""" % (i,newseriesnames[i])
js_code += """line%d.visible = %s;""" % (i,'true' if i < 4 else 'false')
js_code += 'source.change.emit();'
callback = CustomJS(args = args,code=js_code)
select.js_on_change('value',callback)
其中line0 到line6 是图中与data['y0'] 到data['y6'] 的数据对象相关联的线条,select 是散景选择器小部件。
这在散景图本身中效果很好,但不会更新图例。图例始终与第一次渲染时相同。它保留了7个元素。即使它们隐藏在图表中。
我试图更新图例的事情:
- 设置
legend.items[4].renderers[0].visible=false - 设置
legend.items[4].visible=false - 呼叫
legend.change.emit()、legend.items[4].change.emit()和legend.items[4].renderers[0].change.emit() - 使用 bokeh 的 python
Legend()方法制作的不同图例覆盖图例
请注意,这些调用没有出现任何错误,它们只是不会在图例中产生任何差异。添加多个图例并隐藏/取消隐藏它们是可行的,但使用plot.add_layout()时它们的位置是错误的@
我宁愿不使用交互式服务器来执行此操作,而是使用客户端进行切换。我的用例经常来回切换,并且可能希望具有离线功能。
谁能指出我正确的方向?我在 python 3.6.5 的散景 0.12.16 和 0.13.0 中对此进行了测试。
谢谢
【问题讨论】:
标签: bokeh