1 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個贊
在評論中回答您的問題,更改data不會更改范圍,因?yàn)閥_range=some_thing這只是為了方便創(chuàng)建在幕后完成的適當(dāng)范圍類。
以下是您可以手動執(zhí)行此操作的方法。請注意,我根本不碰x_range- 默認(rèn)情況下它會DataRange1d自動計算其開始/結(jié)束值。
from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.models import Select, ColumnDataSource
from bokeh.plotting import figure
d1 = dict(x=[0, 1], y=['a', 'b'])
d2 = dict(x=[8, 9], y=['x', 'y'])
ds = ColumnDataSource(d1)
def get_factors(data):
return sorted(set(data['y']))
p = figure(y_range=get_factors(d1))
p.circle(x='x', y='y', source=ds)
s = Select(options=['1', '2'], value='1')
def update(attr, old, new):
if new == '1':
ds.data = d1
else:
ds.data = d2
p.y_range.factors = get_factors(ds.data)
s.on_change('value', update)
curdoc().add_root(column(p, s))
添加回答
舉報