我有一个散景图,该图以图表中的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
是散景选择器小部件。
这在bokeh图表本身中效果很好,但不会更新图例。图例始终与首次渲染时相同。它保留了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()
Legend()
方法制作的图例替换图例请注意,这些调用没有收到任何错误,它们只是在图例中没有任何区别。添加多个图例并隐藏/取消隐藏它们是可行的,但使用plot.add_layout()
我宁愿不使用交互式服务器来执行此操作,而是宁愿使用客户端来进行切换。我的用例经常来回移动,并且可能希望具有脱机功能。
有人能指出我正确的方向吗?我在python 3.6.5的bokeh 0.12.16和0.13.0中对此进行了测试。
谢谢
答案 0 :(得分:0)
一种可能的解决方案是预先制作所有图例并将其全部隐藏
#ifndef HELLO_LIB_H
#define HELLO_LIB_H
#include <string>
using namespace std;
class Hello {
std::string _name;
public:
Hello(std::string name);
void Print();
};
#endif
然后在回调中
The type or namespace name 'Droid' does not exist in the namespace 'Lottie.Forms' (are you missing an assembly reference?)
我认为这不是一个特别好的解决方案,但是它可以解决我似乎无法动态更新图例的问题。
答案 1 :(得分:0)
从0.13.0开始,这仍然是一个未解决的问题,不可能: