Я использую Bokeh для отображения некоторых данных, которые происходят из BLOB-объекта JSON (который получен с помощью Python). Я хочу передать исходные данные JSON в ColumnDataSource, чтобы при щелчке пользователя по точке отображались все данные в исходном двоичном объекте JSON (с помощью всплывающей подсказки CustomJS). Однако, когда я делаю следующее, я получаю 'Uncaught TypeError: Невозможно прочитать свойство' 0 'из неопределенного' .
Настройка графика:
source = ColumnDataSource(data=dict(
x = xvals, # list of datetimes
y = yvals, # list of strings (categorical variable),
info = info, # list of dicts (each dict has the same 7 keys)
))
JS часть дисплея:
code = """
selection = require("core/util/selection")
indices = selection.get_indices(source)
for (i = 0; i < indices.length; i++) {
ind = indices[i]
document.getElementById('info').style.display = 'block'
document.getElementById('info').innerHTML= source.data['info']
}
"""
Все три списка имеют одинаковую длину. Я пытался, и это прекрасно работает со списком списков, но не список диктов. Кто-нибудь смог заставить это работать / какие-либо предложения о том, как это исправить? В настоящее время я конвертирую свой список диктовок в 7 отдельных списков, но я бы настоятельно не хотел этого делать, потому что мне нужен этот код для масштабирования для гораздо большего набора данных JSON.
В качестве альтернативы, есть ли другой способ (помимо передачи данных через ColumnDataSource), позволяющий коду CustomJS считывать данные JSON из Python? Спасибо!