用javascript回调散景更新高级图表

时间:2017-03-24 08:12:47

标签: bokeh

我使用散景来绘制带有数据帧的高级图表(Line)。 我还有一个小部件来过滤图表显示的数据。 我知道如何使用基本字形而不是高级图表。 实际上,基本图使用ColumnDataSource作为输入,javascript回调可以将其作为参数并触发它。但是对于数据框作为输入,似乎不可能。 如果我想传递数据帧df:

的args,我有以下错误

ValueError:期望Dict(String,Instance(Model))的元素得到{' df':......

有什么想法吗? 谢谢。 大卫

3 个答案:

答案 0 :(得分:0)

我认为唯一的方法是每次重新创建整个图并替换它。例如,请参阅https://groups.google.com/a/continuum.io/forum/#!topic/bokeh/Hn14aDN_5lk。我会坚持使用ColumnDataSource。

答案 1 :(得分:0)

我还要确切地说,我不想使用散景服务器,而是使用独立的解决方案。 作为一种解决方法,我尝试用columndatasource生成的数据帧替换数据帧,如下所示:

积=行(source.data中,x =' X',Y =' Y') 要么 积=行(source.to_df()中,x =' X',Y =' Y&#39)

with source = ColumnDataSource(df)

没有更多错误,但在javascript回调中触发源时没有任何反应。 这是正常的吗? 谢谢。 大卫

答案 2 :(得分:0)

如果您使用

plot=Line(source.data,x='x',y='y') or plot=Line(source.to_df(),x='x',y='y')

那么你的javascript回调没有触发任何东西是正常的。因为您没有将任何源传递给该行,所以您在当时的python代码中定义了来自源的字典“数据”,并且它永远不会更改。

如在Okonomiyaki的回答链接中所说,如果你想与js回调进行更多的互动,你应该使用bokeh.plotting。