更新25-09-2018
为了为这个问题创建一个更简单的演示(发布在这里:http: //jsfiddle.net/bLgj4vc7/3/),我终于发现了问题的根本原因。我也设法解决了这个问题,我已将其发布为答案。
我在我的 web 应用程序中使用独立的 bokehjs。我的问题是渲染器没有用更新的数据源更新它的行字形(或者至少这对我来说是这样的问题)。
这个 jsfiddle: http: //jsfiddle.net/uwnqcotg/8/演示了这个问题。请忽略其中的任何不良编码约定;这是一个快速的一次性演示。
在小提琴中,情节加载了一个数据系列,渲染得很好。该图可以通过两种方式更新:
Update Plot Once By Overwriting CDS.data Object
一次性覆盖 ColumnDataSource.data 对象,从而遵循保持相同列长度的散景原则。Start Stream With CDS.stream
使用 ColumnDataSource.stream() 并使用随机生成的增量数据序列定期更新绘图。
在第一种方法中,字形看起来正在更新 - 轴肯定会根据控制台中打印的数据序列进行更新以供参考。但是,绘制的字形和数据系列显示不匹配。对我来说,它看起来像初始化绘图时绘制的字形只是重新调整到新轴,尽管我不能确定。
在第二种方法中,轴再次更新,但字形没有。同样,最初绘制的字形似乎重新调整到新的轴范围。此外,rollover
由于渲染器只是不断累积数据,因此似乎忽略了 attr。
总的来说,我的观察是,在初始化期间提供给渲染器的任何数据都被正确绘制,但任何后续的流式更新甚至覆盖都没有。虽然我可能在这里错了。
另一方面,在我和散景之间,我倾向于相信我做错了什么或错过了什么。那是什么?