2017-02-27 15 views
2

私はBokeh(Python)を使用して、歴史の中でよく知られている気候指標(例:エルニーニョ)の値の時系列をプロットしています。ユーザー選択と同様の点を選択するBokehコールバック

私のチャートのx軸は時間です。具体的には月/年です。 y軸はインデックスの分析値です。

Bokehに組み込まれているTapツールを使用して、timeseries内のポイントを選択して強調表示させることができます。

この機能の上で達成したいのは、インデックス値がタップツールで選択したポイントと等しい時系列の他のポイントを強調するコールバックを持つことです。

ここで私の最大の問題はJavaScriptがまったくわからないことです(私はちょうどPython-erです)、私は5行のコールバック関数を書くためにJavaScriptを学ぶ時間を費やすことを避けたいと思います。

誰でもこれを達成するための提案やコードスニペットがありますか?

本当に助けていただきありがとうございます。

+1

あなたが探している用語はリンクブラッシングです。 – Elliot

+0

本当に?私はドキュメントやリンクブラッシングについて何かを見て覚えているようですので、私はそれを見ていきます。適切な用語を持つのに役立ちます。ありがとう! – AvlWx

答えて

0

私が理解する限り、コールバック内からポイントを選択するには、プロットの作成に使用されたColumnDataSourceオブジェクトのselectedプロパティを更新する必要があります。また、コールバックに引数として渡されます。次のように:

from bokeh.models import ColumnDataSource, TapTool 
source = ColumnDataSource(data=dict(x=df.x, y=df.y)) 
p=figure(tools="reset,tap") 
p.circle("x", "y", source=source) 
cb_click = CustomJS(args=dict(source=source), code=""" 
    l_selected=source.selected 
    // create an array idx that contains the indices of the points you want to select 
    l_selected['1d'].indices=idx 
    source.selected=l_selected 
""") 
p.add_tools(TapTool(callback=cb_click)) 
p.show() 
+0

返事が遅くて申し訳ありません!私はこれを打ち明け、何が起こるか見るつもりです。それが動作する場合、返事を受け取り、回答を受け取ります! – AvlWx

関連する問題