Как обновить активное взаимодействие Bokeh с GeoJSON в качестве источника данных? - PullRequest
0 голосов
/ 05 мая 2019

Я сделал интерактивную карту хороплета с боке, и я пытаюсь добавить активные взаимодействия, используя выпадающий виджет (Выбрать). Однако в большинстве уроков и SO вопросов об активных взаимодействиях используется ColumnDataSource, а не GeoJSONDataSource.

Проблема заключается в том, что у GeoJSONDataSource нет метода .data, как у ColumnDataSource, поэтому вам нужно точно знать, как работает синтаксис при его обновлении.

Мой набор данных - это словарь в форме city_dict = {'Amsterdam': <some data frame>, 'Antwerp': <some data frame>, ...}, где фрейм данных представлен в формате геойсон. Я уже подтвердил, что этот формат работает при создании глифов.

def update(attr, old, new):

    s_value = dropdown.value
    p.title.text = '%s', s_value

    new_src1 = make_dataset(s_value)

    val1 = GeoJSONDataSource(new_src1)

    r1.data_source = val1

где make_dataset - это функция, которая преобразует мой исходный набор данных в набор данных, который может быть передан в функцию GeoJSONDataSource. make_dataset требует строку (название города) для работы, например. 'Амстердам'. Работает на пассивных взаимодействиях.

Основной код сюжета (удалены ненужные вещи):

dropdown = Select(value='Amsterdam', options = cities)
controls = WidgetBox(dropdown)
initial_city = 'Amsterdam'
a = make_dataset(initial_city)
src1 = GeoJSONDataSource(a)

p = figure(title = 'Amsterdam', plot_height = 750 , plot_width = 900, toolbar_location = 'right')

r1 = p.patches('xs','ys', source = src1, fill_color = {'field' :'norm', 'transform' : color_mapper})

dropdown.on_change('value', update)
layout = row(controls, p)
curdoc().add_root(layout)

Я добавил ошибку, которую получил. error handling message Message 'PATCH-DOC' (revision 1) content: {'events': [{'kind': 'ModelChanged', 'model': {'type': 'Select', 'id': '1147'}, 'attr': 'value', 'new': 'Antwerp'}], 'references': []}: ValueError("expected a value of type str, got ('%s', 'Antwerp') of type tuple",)

...