Bokeh Custom JS Массив символов - PullRequest
       15

Bokeh Custom JS Массив символов

0 голосов
/ 13 апреля 2020

Я пытаюсь создать несколько цифр, которые сеют различную информацию о странах. Кроме того, я пытаюсь создать набор кнопок, которые бы скрывали графики стран на всех фигурах. При использовании пользовательского обратного вызова JS я пытаюсь передать ColumnDataSource с отдельными странами в виде столбцов с соответствующими символами в столбце. ColumnDataSource выглядит следующим образом:

{'index': array ([0, 1], dtype = int64), 'US': array ([GlyphRenderer (id = '1038', ..) .), GlyphRenderer (id = '1157', ...)], dtype = object), 'Объединенные Арабские Эмираты': массив ([nan, nan]), 'United Kingdom': массив ([GlyphRenderer (id = ') 1079 ', ...), GlyphRenderer (id =' 1198 ', ...)]}

Затем я пытаюсь перейти в Custom JS, как показано ниже:

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

Однако консоль в google chrome показывает следующую ошибку: я с трудом понимаю, не является ли она итеративной, потому что у меня есть объекты в каждом столбце или столбцы являются строками?

Uncaught (в обещании) TypeError: (промежуточное значение) (промежуточное значение) (промежуточное значение) не повторяется

Когда я передаю столбец напрямую, он работает так, как я ожидал. Однако я пытаюсь положить во многих странах.

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

Большое спасибо, Томас

1 Ответ

0 голосов
/ 25 апреля 2020

Как указано в комментариях, я мог бы пройти словари. Совершенно верно, и я переосмыслил проблему, передав 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;
    };
};""")

Спасибо за ваша помощь!

...