В настоящее время я изучаю Python и пытаюсь создать интерактивную панель мониторинга, которая работает в браузере. Я использую Bokeh для визуализации и flexx/pyscript для интерактивности обратного вызова. Первой целью является создание кнопки, которая фильтрует набор данных. Я попытался использовать пример слайдера на http://bokeh.pydata.org/en/0.11.1/docs/user_guide/interaction.html, и я изменил его, чтобы просто изменить данные, нажав кнопку (фактическая фильтрация будет шагом 2).Интерактивный участок браузера в Python 3.5 с использованием bokeh/flexx pyscript
x = [1,2,3] # dummy data
y = [4,5,6] # dummy data
# output to static HTML file
# output_file("sample.html", title="sample")
source = ColumnDataSource(data=dict(x=x, y=y))
# create a new plot with a title and axis labels
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 = data['x'], data['y']
x = [0.9,0.8,0,7]
y = [1,2,3]
source.trigger('change')
button = Button(callback=CustomJS.from_py_func(callback))
button.on_click(source)
layout = vform(button, plot)
show(layout)
Страница загружается, и я могу щелкнуть по кнопкам, но изменение графика не запускается. Знаете ли вы, как изменить этот код, чтобы он запускал и фактическое изменение с помощью обработчика событий кнопки bokeh? Я искал много сайтов, но я не могу найти хороший пример.
Заранее благодарен!
Спасибо, еще один вопрос. Когда я нажимаю кнопку, значения меняются соответствующим образом, но затем сюжет немедленно сбрасывается. Я только хочу, чтобы это произошло, когда я нажимаю кнопку второй раз. Есть предположения? –
Я не совсем уверен, что вы имеете в виду, вы имеете в виду, что вы не хотите, чтобы обновление данных произошло немедленно? Я думаю, что вы могли бы вызвать обратный вызов для переключения bool взад и вперед и только вызвать триггер на 'true'. Например, 'window.my_callback_flag', но, вероятно, есть идея лучше, чем глобальная на' window'. – bigreddot
Когда я нажимаю, мой график на короткое время показывает новые данные, указанные в обратном вызове, но затем страница перезагружается и сразу показывает исходный график снова. –