Боке с bokeh_server: обновление графика по мере увеличения

У меня есть большой набор данных (до 2,5 миллионов точек), который я хотел бы уменьшить для моего графика Боке, а затем передискретизировать, когда пользователь увеличивает и уменьшает масштаб. Я использую bokeh_server с серверной частью Redis.

Журналы сервера теперь показывают обнадеживающие 200 HTTP-ответов, но на странице браузера ничего не отображается. Я получаю ошибку JavaScript: Error: Domains other than x not supported yet. Правильно ли я получаю доступ к своему файлу HDF5? Откуда боке знает, как называется набор данных (в моем случае он называется test).

Соответствующий бит моего представления Django:

def bokeh_test2(request):
    import numpy as np
    import bokeh.plotting as bplot 
    from bokeh.transforms import line_downsample
    import bokeh.embed as embed

    bplot.output_server(docname="downsampling_test")
    source = line_downsample.source(data_url='data/test.hdf5', 
                                 owner_username='defaultuser')
    p = bplot.line('x', 'y', source=source, legend='test')
    bplot.push()
    tag = embed.autoload_server(p, bplot.cursession())

    c = {'bokeh_div': tag}
    return render_to_response('bokeh_test.html', c,
                              context_instance=RequestContext(request))

Кто-нибудь может пролить свет?


person xnx    schedule 22.01.2015    source источник


Ответы (1)


Я не уверен навскидку, почему это не работает, но я знаю, что это не идеальный способ делать что-то. Не следует каждый раз создавать новый сюжет. Вы должны обслуживать тег autoload_server один раз, сохраняя ссылку на источник данных. Затем позже обновите и передайте только источник данных на сервер Bokeh, и существующие графики в клиенте будут обновляться автоматически.

person bigreddot    schedule 26.01.2015
comment
Спасибо за ваш ответ ... Хотя я не уверен, что понимаю. Мне нужен тег для каждой обслуживаемой страницы, потому что разные пользователи могут выбирать разные наборы данных для визуализации. Я обновлю свой вопрос с последней сложностью, если вы сможете помочь. - person xnx; 27.01.2015
comment
Конечно, я помогу вам найти ответ. Мой другой комментарий был о том, что не нужно повторно отображать весь сюжет в масштабе, что, похоже, вы пытались сделать, но я, очевидно, упустил какой-то контекст. - person bigreddot; 27.01.2015
comment
Спасибо -- если я правильно понимаю, мое представление просто внедряет тег <script> в мой шаблон, и именно этот скрипт взаимодействует с bokeh-server, работающим на другом порту. Таким образом, bplot.push() должен отправить данные в bokeh-server, который затем отвечает за обновление графика, видимого в браузере... но я не вижу график, и похоже, что bokeh-server не знает, как получить нужные ему данные из HDF5. файл, который я указываю. Мне удалось заставить работать тест animated из документов Bokeh, но он не снижает частоту дискретизации и не использует HDF5. - person xnx; 27.01.2015
comment
Привет, можешь зайти на Bokeh GH (github.com/bokeh/bokeh) и задать вопрос там? Вам будет намного проще познакомить вас с другими разработчиками, которые больше знают об этой конкретной функции. Этот вид серверной субдискретизации на самом деле находится в процессе получения некоторых обновлений и улучшений, и было бы здорово получить ваши отзывы, но это не идеальное место для такого рода дискуссий. - person bigreddot; 27.01.2015
comment
Я не уверен, что столкнулся с ошибкой так сильно, как из-за отсутствия знаний о Bokeh API, поэтому я задал свой вопрос в списке рассылки Bokeh и надеюсь, что кто-то может указать мне правильное направление, спасибо, @bigreddot. - person xnx; 27.01.2015