如何使用GeoJSON作为数据源更新bokeh主动交互?

时间:2019-05-05 13:44:49

标签: drop-down-menu bokeh geojson

我制作了一个带有bokeh的交互式十字形图,并且我试图使用下拉小部件(选择)添加活动的交互。但是,大多数教程和有关活动交互的SO问题都使用ColumnDataSource,而不是GeoJSONDataSource。

问题在于,GeoJSONDataSource不像ColumnDataSource那样具有.data方法,因此idk确切说明了更新语法时的工作方式。

我的数据集是city_dict = {'Amsterdam': <some data frame>, 'Antwerp': <some data frame>, ...}形式的字典,其中数据框为geojson格式。我已经确认制作字形时可以使用这种格式。

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",)

0 个答案:

没有答案