我正在使用Bokeh制作气泡图,我希望能够更新我的情节的x_range,因为它可以用于整数或字符串。
如果我没有弄错的话,Int范围将通过Range1d
进行管理,而字符串则通过FactorRange
进行管理。
我正在尝试使用update()函数,只要使用控件就调用它:
plot = figure(y_range=FactorRange(factors=pandata['HostnameIP'].tolist()), plot_height=600, plot_width=700, title="Visualization", toolbar_location="above", tools=[hover, BoxSelectTool(), ResetTool()])
plot.circle(x='x', y='y', source=source, size=7, color="color", line_color=None, fill_alpha="alpha")
controls = [malware, compromise, x_axis]
for control in controls:
control.on_change('value', lambda attr, old, new: update())
def update():
df = select_units()
x_name = axis_map[x_axis.value]
plot.xaxis.axis_label = x_axis.value
if x_name == 'Malware':
plot.x_range=FactorRange(factors=pandata['Malware'].tolist())
l.children[0].children[1] = plot
# [...]
inputs = widgetbox(*controls, sizing_mode=sizing_mode)
l = layout([
[inputs, plot],
[data_table]
], sizing_mode=sizing_mode)
update()
curdoc().add_root(l)
curdoc().title = "Visualization"
根据this SO,这种技术应该有效,但我得到了一个空白的情节。
我也试过this answer,但看起来像.set()不再存在了。
关于如何做到这一点的任何想法?我还在发现Bokeh。
TYA:)