我遵循发布在here上的指南,使用我自己的数据集创建了一个类似于Gapminder(动画气泡图)的可视化工具。
一切正常(尽管我必须在我自己的代码中为指南中的滑块JavaScript回调代码更改几行)。
但是,我注意到当滑块位于位置0或1时,两个值都将映射到回调引用的源对象中的同一日期。
供参考:
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(动画气泡图)的可视化工具。一切正常(尽管我必须更改一个...
如果遵循该示例,请使用show
,然后生成独立输出