Потоковые потоки в боке

Я хочу построить серию живых выступлений в боке. Я хочу создавать только новые точки данных при каждом обновлении. Как я могу это сделать?

Существует пример на сайте bokeh для анимированных графиков, но он включает в себя перерисовку всей картинки каждый раз. Также я ищу простой пример, где я могу сделать живой график временного ряда по пунктам.

Ответ 1

Начиная с Bokeh 0.11.1 теперь есть потоковый интерфейс для источников данных столбцов в серверных приложениях Bokeh. Вы можете увидеть и легко запустить пример здесь:

https://github.com/bokeh/bokeh/tree/master/examples/app/ohlc

В этом примере показана диаграмма OHLC с текущим обновлением с индикатором MACD (на основе данных синтетического тика), который обновляет сюжет с самыми последними точками данных при каждом обновлении.

В принципе, использование потокового интерфейса состоит из двух частей. Сначала создайте новый dict с той же "формой", что и источник данных столбца:

new_data = dict(
    time=[t],
    open=[open],
    high=[high],
    low=[low],
    close=[close],
    average=[average],
    color=[color],
)

Затем передайте это методу .stream с необязательным аргументом rollover, который указывает, как большой буфер хранится в браузере (более ранние данные начинают выпадать):

source.stream(new_data, 300)

Тогда просто небольшое количество данных в new_data будет отправлено на график, а не все.