

ipywidgets と Bokeh を組み合わせることで Jupyter notebook
上でインタラクティブに描画をすることができますが，「ボタンを押すことで描画の領域を変更する」という操作を実現するやり方はありますか？  
イメージとしては次のようなコードで動いてほしいです．

[code]

    import numpy as np
    from bokeh.plotting import figure, show
    from bokeh.models import Range1d
    from bokeh.io import output_notebook, push_notebook
    from ipywidgets import interact, Button
    
    %matplotlib inline
    
    def on_clicked_button(b):
        p.x_range = Range1d(2, 6) # x軸描画範囲を(2, 6)に変更
        push_notebook(handle=t)
    
    b = Button(description="Adjust")
    b.on_click(on_clicked_button)
    
    output_notebook()
    p = figure()
    l1 = p.line(np.arange(3), np.array([2, 3, 0]))
    
    t = show(p, notebook_handle=True)
    display(b)
    interact()
    
[/code]

Adjustボタンをクリックすることで，ユーザーがどのような範囲に描画を移動していたとしても(2, 6)に戻すようなことを実行したいですが，このコードでは
p.x_range の変更が描画に反映されません．  
一方で， p.x_range = ... の部分を p.title.text = 'hoge'
と変更するとこちらは動いた（ボタンクリックでタイトルが変わった）ため， bokeh.plotting.figure.x_range
に依存した問題なのかと考えています．  
解決策がなくても何かご存知のことがあればご教示いただければと思います．よろしくお願いします．


CC BY-SA 4.0
2019-04-15T08:05:14.467
54178
2019-04-15T08:05:14.467
32189
question
python python3 jupyter-notebook bokeh
Jupyter notebookでのBokehを使ったインタラクティブな描画領域変更