2017-03-01 22 views
0

私はBokehを初めて使い、私のプロットが更新されない理由を教えてくれる人がいれば迷っていましたか?棒グラフをプロットし、Bokehプロットは更新されません

pastebin.com/rn36b3aY

それだけで「get_dataset」機能を使っていくつかのデータをつかむことになったコード、そして私はドロップダウンを使用してプロットを更新しましょう:コードはここで見つけることができますボックスとスライダ。プロットが更新されていない理由を教えてもらえますか?私はそれが役に立ちそうなら、データを提供することができます。ありがとう!

+1

どのようにあなたがそれを実行しようとしていますか? Bokehサーバアプリケーションは 'bokeh'コマンドで実行する必要があります。 'bokeh serve --show app.py'すでにこれをやっているのであれば、何をデバッグしようとしましたか? – bigreddot

+0

こんにちは、私はbokeh serve --show app.pyを使っています。私はここにpastebin.com/rn36b3aYという新しい読みやすいバージョンを入れました。更新プログラムはまだ正しく動作していません。これは、57のようなx =要因によるものです。データフレーム "asdata"には、1つのカテゴリカル(最初のカラム)と1つの数値カラム(2番目のカラム)があります。数値の列は更新されているようですが、カテゴリの列は更新されていないようです。たとえば、57行目をplot.vbar(x = 'y'、width = 0.5、bottom = 0、top = 'y'、source = source)に切り替えると、プロットは正しく更新されます( 'y'は数値列データフレームの)。 – Kyle

答えて

1

簡単なバージョンのプログラムをデータで投稿できますか?

あなたのコールバック関数では、dataset_select.valueおよびsamples_slider.valueを使用してデータを更新するため、プロットが更新されていない可能性があります。しかし、これらにはSlider/Selectを変更する前の値が含まれています。新しい引数を使うべきです。これが動作するかどうか

参照:

def update_select_samples_or_dataset(attrname, old, new): 
    global X, Y 
    dataset = new 
    n_samples = int(samples_slider.value) 

    asdata = get_dataset(dataset, n_samples) 
    X = asdata[['aspects','importance']].as_matrix() 
    source.data = dict(x=X[:,0], y=X[:,1]) 

def update_slider_samples_or_dataset(attrname, old, new): 
    global X, Y 
    dataset = dataset_select.value 
    n_samples = int(new) 

    asdata = get_dataset(dataset, n_samples) 
    X = asdata[['aspects','importance']].as_matrix() 
    source.data = dict(x=X[:,0], y=X[:,1]) 

dataset_select.on_change('value', update_select_samples_or_dataset) 
samples_slider.on_change('value', update_slider_samples_or_dataset) 
+0

こんにちは、応答ありがとう!ソリューションを試した後、プロットがまだ正しく更新されないように見えます。 http://pastebin.com/MLAigEG6 2つの入力データフレームがここで見つけることができます: https://github.com/degravek/bdata ここでは、コードの更新、やや要約版ですスライダーはデフォルトで15に設定されています(30合計値がプロットされています)。スライダーを移動すると、何らかの理由でプロットの軸が更新されません。たとえば、スライダが2に設定されている場合は、2つのバーのみが表示され、それに応じて軸が調整されます。見ていただきありがとうございます。 – Kyle

+0

コールバック関数では、コマンドplot.x_range = ...を使用して手動で軸を更新する必要があります。 – Julian

+0

私もそれを試みましたが、うまくいかないようです。あなたはデータをすべて見る機会がありましたか?まだ困った。 – Kyle

関連する問題