我以为我在这里找到了一个可以利用的具体示例,但不幸的是,同样的逻辑对我不起作用。
我有两个问题:
我什至可能尝试做的是:在 html 文档中发送动态散点图,允许您控制在 x 和 y 轴上绘制的内容。我已经成功处理了静态图,但还没有破解动态图。
我的代码哪里出错了(见下文?)
以下是相关的代码片段(按顺序排列。我有一个数据框,已使用 ColumnDataSource 转换为“源”。
我创建了一个初始图(注意,此时没有名为“x”和“y”的列。我稍后在回调函数中创建它们):
plot.circle('x', 'y',
source=source,
color={'field': 'Picker',
'transform': mapper},
legend='Picker')
我创建了两个下拉菜单(请注意,每个选项中的选项对应于“来源”中的列,我希望人们能够从中进行选择)
x_menu=Select(options=['Box Office', 'Difference', 'Price Paid'],
value='Box Office',
title='What do you want to put on the x axis')
y_menu=Select(options=['Metacritic', 'Rotten Tomatoes'],
value='Metacritic',
title='What do you want to put on the y axis')
我创建回调:
callback = CustomJS (args=dict(source=source), code="""
console.log('changed selected option', cb_obj.value)
var data=source.data
data['x']=data[cb_obj.value]
data['y']=data[cb_obj.value]
source.change.emit();
""")
我将回调分配给下拉菜单:
x_menu.callback = callback
y_menu.callback = callback
然后我尝试展示情节:
show(row(widgetbox(x_menu, y_menu), plot))
但它返回以下错误:
ERROR:bokeh.core.validation.check:E-1001 (BAD_COLUMN_NAME): Glyph refers to nonexistent column name: x, y [renderer: GlyphRenderer(id='df96b108-e2e4-4b8c-b0c6-12df40b4205d', ...)]
很感谢任何形式的帮助。谢谢!