Bokeh CustomJS 传递字形数组

Bokeh CustomJS Passing Array of Glyphs

我正在尝试创建多个数字来传播有关国家/地区的各种信息。最重要的是,我正在尝试使用一组按钮来隐藏所有数字中的国家/地区图。使用 CustomJS 回调时,我试图将 ColumnDataSource 与各个国家作为列传递,并在列中包含相应的字形。 ColumnDataSource 如下所示:

{'index': array([0, 1], dtype=int64), 'US': array([GlyphRenderer(id='1038', ...), GlyphRenderer(id='1157', ...)], dtype=object), 'United Arab Emirates': array([nan, nan]), 'United Kingdom': array([GlyphRenderer(id='1079', ...), GlyphRenderer(id='1198', ...)]}

然后我尝试像下面这样传递到 CustomJS 中:

callback = CustomJS(args={'source':source}, code="""..."""

但是,google chrome 中的控制台显示以下错误。我很难理解它是否不可迭代,因为我在每一列中都有对象,或者因为列是字符串?

Uncaught (in promise) TypeError: (intermediate value)(intermediate value)(intermediate value) is not iterable

当我直接传递一个列时,它按我预期的那样工作。但是,我正在尝试放入许多国家。

callback = CustomJS(args={'source':source.data['US']}, code="""..."""

非常感谢, 托马斯

正如评论中指出的那样,我本可以通过字典。显然是正确的,我通过传递 ColumnDataSource 过度思考了这个问题。

问题已通过遍历所有字形解决,如下例所示,使所有字形不可见。

callback = CustomJS(args={'source':one_line, 'countries': all_countries}, code="""
var arr_glyphs = source;
var arr_countries = countries;
var index;
var index_country;                     

for (index = 0; index < arr_countries.length; ++index) {
    for (index_country = 0; index_country < arr_countries[index].length; ++index_country) {
        arr_glyphs[arr_countries[index]][index_country].visible = false;
    };
};""")

感谢您的帮助!