具有JS回调的散景滑块映射到相同的值

问题描述 投票:0回答:1

我遵循发布在here上的指南,使用我自己的数据集创建了一个类似于Gapminder(动画气泡图)的可视化工具。

一切正常(尽管我必须在我自己的代码中为指南中的滑块JavaScript回调代码更改几行)。

但是,我注意到当滑块位于位置0或1时,两个值都将映射到回调引用的源对象中的同一日期。

供参考:

  • 0映射到日期(08/28/2019),而1映射到日期(08/29/2019)。
  • js_source_array_engagement字符串对象看起来像:{0: _0, 1: _1, 2: _2, 3: _3, 4: _4, 5: _5, 6: _6, 7: _7, 8: _8, 9: _9, 10: _10, 11: _11, 12: _12, 13: _13, 14: _14, 15: _15}
  • engagement_sources是字典,并具有以下键:'_0', '_1', '_2', '_3', '_4', '_5', '_6', '_7', '_8', '_9', '_10', '_11', '_12', '_13', '_14', '_15'。键映射到ColumnDataSource对象。
  • 因此,字符串对象js_source_array_engagement将用于引用JS回调中的engagement_sources

这是滑块的代码:

''' ############ ADD SLIDER ############ '''
code = """
    var day = slider.value,
        sources = %s,
        new_source_data = sources[day].data;

    console.log(day);
    console.log(sources[day].data['days'][0]);

    text = new_source_data['days'][0];
    renderer_source.data = new_source_data;
    text_source.data = {'days':[text]};
""" % js_source_array_engagement

callback = CustomJS(args=engagement_sources, code=code)
slider = Slider(start=days_indices[0], end=days_indices[-1], value=0, step=1, title="Day", callback=callback)

callback.args["renderer_source"] = renderer_source
callback.args["slider"] = slider
callback.args["text_source"] = text_source

layout_one = layout([[plot], [slider]])

print(engagement_sources['_0'].data['days'][0]) #prints (08/28/2019)
print(engagement_sources['_1'].data['days'][0]) #prints (08/29/2019)

plots = row(layout_one, plot_two)

当我将滑块移动到0或1时,控制台分别打印0和1。

但是,它们都映射到日期08/29/2019。我通过打印来检查值是否正确,并且两个打印语句分别显示(08/28/2019)和(08/29/2019)。

因此,我认为Callback的代码可能有问题,特别是代码如何引用source对象,但是我无法弄清楚它是什么,尤其是因为它正确地引用了所有其他值,除了滑块位于0。

我按照此处发布的指南使用自己的数据集创建了一个类似于Gapminder(动画气泡图)的可视化工具。一切正常(尽管我必须更改一个...

javascript python-3.x bokeh bokehjs
1个回答
0
投票

如果遵循该示例,请使用show,然后生成独立输出

© www.soinside.com 2019 - 2024. All rights reserved.