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