2017-08-02 22 views
0

CustomJS with a Python function exampleで、コールバックは変数 'source'からデータを受け取ります。私は 'source'も渡したいと思いますが、私の 'source'は実際には列データソースで構成されたリストです。bokeh pythonの 'from_py_func'コールバックにソースのリストを渡すには?

私が試みた:
DEFコールバック(ソース、ウィンドウ=なし): iに対する範囲内(ソース): データ=ソース[I] .DATA

私は1つに私のソースを組み合わせる試みました最終的なソースですが、列の長さが同じではないためにエラーが発生します(最初に列データソースのリストを作成した理由)。
DEFコールバック(元= [0]、ウィンドウ=なしソース):

私が見てきた唯一の成功がある

が、これは私のデータセットのいずれかに変更します。私たちは単純移動平均を計算している日を変更するスライダーを作るしようとしています

def SMAcallback(source=source[0], window=None): 

    data = source.data 
    f = cb_obj.value 
    x, y = data['x'], data['y'] 
    topx, midx, botx, = data['topx'], data['midx'], data['botx'] 
    topy, midy, boty, = data['topy'], data['midy'], data['boty'] 

    avg = sum(y) * 1.0/len(y) 
    variance = map(lambda t: (t - avg) ** 2, y) 
    varAvg = sum(variance) * 1.0/len(variance) 
    std_dev = window.Math.sqrt(varAvg) 

    y_avg = [] 
    x_day_list = [] 
    for d in range(0, f - 1): 
     y_avg.append("Nan") 
     x_day_list.append("NaN") 
    for d in range(f, len(y)): 
     tot = sum(y[d - f:d]) 
     avg = tot/f 
     y_avg.append(avg) 
     x_day_list.append(x[d]) 

    top_Band = [] 
    bot_Band = [] 
    mid_Band = [] 

    curSD = std_dev 
    curSMA = y_avg 

    for i in range(len(y)): 
     top_Band.append(curSMA[i] + (curSD * 2)) 
     bot_Band.append(curSMA[i] - (curSD * 2)) 
     mid_Band.append(curSMA[i]) 

    for i in range(len(y)): 
     topy[i] = top_Band[i] 
     midy[i] = mid_Band[i] 
     boty[i] = bot_Band[i] 

     topx[i] = x_day_list[i] 
     midx[i] = x_day_list[i] 
     botx[i] = x_day_list[i] 
    source.change.emit() 

SMAwindow_slider = Slider(start=1, end=100, value=20, step=1, 
          title="SMA Window(days)", callback=CustomJS.from_py_func(SMAcallback)) 

はここだけ最初のソースに取り組んでいます現在、私の完全なコードです。私は、別々のソースごとにスライダを作成する可能性はあると思っていますが、うまく見えません。

答えて

0

唯一の解決策は、すべてのpythonコードをjavascriptに変換することでした。このようにして、私は "ソース"変数を含むdictを渡すことができました。その後、私はjavascript - source0、source1、source2などの各ソースを呼び出すことができました。

私はこれが可能であることを知っていましたが、私はPythonとしてjavascriptに精通していません。

関連する問題