IPython Note에서 내 데이터를 시각화하기 위해 bokeh를 사용하여 플롯을 작성하려고합니다. 좀 더 대화식으로 만들기 위해 위젯을 추가하고 싶습니다. 다음은 코드의 예입니다. 내가 그런 내가 다른 옵션을 선택하면 있는지 확인하려면 Bokeh 위젯 데이터 조각 내기
from bokeh.models import CustomJS, ColumnDataSource
from bokeh.plotting import Figure, output_notebook, show
from bokeh.models.widgets import Select
from bokeh.layouts import column
output_notebook()
x = [x*0.005 for x in range(0, 200)]
y = x
z = ['A' if i>50 else 'B' for i in range(len(x))]
source = ColumnDataSource(data=dict(x=x, y=y, z=z))
plot = Figure(plot_width=400, plot_height=400)
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
def callback(source=source):
data=source.get('data')
f = cb_obj.get('value')
x, y, z = data['x'], data['y'], data['z']
x = [x[i] for i in range(len(x)) if z[i] == f]
y = [y[i] for i in range(len(y)) if z[i] == f]
z = [z[i] for i in range(len(z)) if z[i] == f]
source.trigger('change')
slides = Select(title="Option:", value = 'A', options=['A', 'B'],
callback=CustomJS.from_py_func(callback))
layout = column(slider,plot)
show(layout)
은, 플롯 그에 따라 나는 콜백 함수에서 지정한 기준에 따라 변경됩니다. 코드가 작동하지 않는 이유에 대한 제안?
P. 여기에서 코드를 사용했지만 직면하는 문제가 위와 비슷하기 때문에 위젯을 변경합니다. http://bokeh.pydata.org/en/0.11.1/docs/user_guide/interaction.html#customjs-with-a-python-function