Вложение приложения bokeh в колбу

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

Если я не ошибаюсь, мне нужен сервер bokeh для изменения данных (с ползунками и т. Д.). Запуск апплета таким образом работает, например:

bokeh-server --script sliders_app.py 

Но я не могу найти правильный или, по крайней мере, рабочий способ встраивания sliders_app в колбу. И так как должно быть возможно использовать несколько апплетов, мне не кажется, что мне нужно указывать один единственный апплет при запуске сервера bokeh.

Я с удовольствием позабочусь о любой помощи – боке выглядит для меня отличным инструментом.

  • Преобразование массива 2d numpy в список списков
  • Создайте колесо / яйцо и все зависимости для проекта python
  • Как бы вы могли закрепить неизвестное количество списков в Python?
  • Интерполируя трехмерную поверхность, известную своими угловыми узлами, и раскрашивая ее цветовой схемой
  • Создание статических графических файлов (png, gif, jpg) с использованием Ruby или Python
  • Как использовать python Popen с espeak и aplay
  • IMAP получает имя отправителя и основной текст?
  • Создание Django admin отображает первичный ключ, а не тип объекта Object
  • 2 Solutions collect form web for “Вложение приложения bokeh в колбу”

    В другом ответе не описывается, как встраивать приложение сервера Bokeh (он использует components для встраивания автономного документа Bokeh).

    Во-первых, вы можете увидеть множество живых примеров, размещенных по адресу: https://demo.bokehplots.com/

    Для внедрения приложений существуют два обычных варианта:

    • iframes (работает нормально) или
    • autoload_server

    Последнее обычно используется следующим образом:

     script = autoload_server(model=None, app_path="/apps/slider", url="https://demo.bokehplots.com") 

    Это вернет <script> похожий на тот, который приведен ниже, который вы можете поместить в свой HTML-запрос фляжки, где бы вы хотели, чтобы приложение отображалось:

     <script src="https://demo.bokehplots.com/apps/slider/autoload.js?bokeh-autoload-element=c5c9bdb5-40e8-46a2-9bf0-40a9d396ce97" id="c5c9bdb5-40e8-46a2-9bf0-40a9d396ce97" data-bokeh-model-id="" data-bokeh-doc-id="" ></script> 

    Наконец, важно отметить, что по умолчанию сервер Bokeh выбирает довольно консервативную конфигурацию сети. Вам нужно будет запустить сервер Bokeh с --allow-websocket-origin командной строки --allow-websocket-origin установленным как любой хост, в который вы вставляете приложение bokeh.

    EDIT одним из основных разработчиков проекта Bokeh . Информация ниже не отвечает на вопрос выше. Категорически невозможно внедрить приложение Bokeh, используя bokeh.embed.components как описано ниже. components могут только встраивать автономные документы (т. е. НЕ запускать на сервере Bokeh)


    Пример внедрения боке с колбой присутствует на bokeh github repo .

     import flask from bokeh.embed import components from bokeh.plotting import figure from bokeh.resources import INLINE from bokeh.templates import RESOURCES from bokeh.util.string import encode_utf8 app = flask.Flask(__name__) colors = { 'Black': '#000000', 'Red': '#FF0000', 'Green': '#00FF00', 'Blue': '#0000FF', } def getitem(obj, item, default): if item not in obj: return default else: return obj[item] @app.route("/") def polynomial(): """ Very simple embedding of a polynomial chart""" # Grab the inputs arguments from the URL # This is automated by the button args = flask.request.args # Get all the form arguments in the url with defaults color = colors[getitem(args, 'color', 'Black')] _from = int(getitem(args, '_from', 0)) to = int(getitem(args, 'to', 10)) # Create a polynomial line graph x = list(range(_from, to + 1)) fig = figure(title="Polynomial") fig.line(x, [i ** 2 for i in x], color=color, line_width=2) # Configure resources to include BokehJS inline in the document. # For more details see: # http://bokeh.pydata.org/en/latest/docs/reference/resources_embedding.html#module-bokeh.resources plot_resources = RESOURCES.render( js_raw=INLINE.js_raw, css_raw=INLINE.css_raw, js_files=INLINE.js_files, css_files=INLINE.css_files, ) # For more details see: # http://bokeh.pydata.org/en/latest/docs/user_guide/embedding.html#components script, div = components(fig, INLINE) html = flask.render_template( 'embed.html', plot_script=script, plot_div=div, plot_resources=plot_resources, color=color, _from=_from, to=to ) return encode_utf8(html) def main(): app.debug = True app.run() if __name__ == "__main__": main() 

    Другая идея заключалась бы в том, чтобы запустить bokeh-server и ваш flask веб-приложение бок о бок, и загрузить боке-код таким образом (на стороне сервера или через JS или iframe), но это может быть неприятно.

    Python - лучший язык программирования в мире.