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

Drop down menu 如何使用GeoJSON作为数据源更新bokeh主动交互?,drop-down-menu,bokeh,geojson,Drop Down Menu,Bokeh,Geojson,我已经用bokeh制作了一个交互式choropleth地图,我正在尝试使用下拉小部件(选择)添加活动交互。然而,大多数关于活动交互的教程和问题都使用ColumnDataSource,而不是GeoJSONDataSource 问题是GeoJSONDataSource没有ColumnDataSource那样的.data方法,所以需要知道更新它时语法是如何工作的 我的数据集是一个字典,形式为city_dict={'Amsterdam':,'Antwerp':,…},其中数据帧为geojson格式。我已

我已经用bokeh制作了一个交互式choropleth地图,我正在尝试使用下拉小部件(选择)添加活动交互。然而,大多数关于活动交互的教程和问题都使用ColumnDataSource,而不是GeoJSONDataSource

问题是GeoJSONDataSource没有ColumnDataSource那样的.data方法,所以需要知道更新它时语法是如何工作的

我的数据集是一个字典,形式为
city_dict={'Amsterdam':,'Antwerp':,…}
,其中数据帧为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函数<代码>生成数据集需要字符串(城市名称)才能工作,例如“阿姆斯特丹”。它适用于被动交互

主绘图代码(删除不必要的内容)为:


我已经添加了我得到的错误<代码>错误处理消息“PATCH-DOC”(修订版1)内容:{events':[{'kind':'ModelChanged','model':{'type':'Select','id':'1147'},'attr':'value','new':'Antwerp'}],'references':[]}:ValueError(“需要str类型的值,get('%s','Antwerp'),type tuple”,)

如果发布一个最小但完整且可运行的代码会更好如果发布一个最小但完整且可运行的代码会更好
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)