Как разместить диаграмму Bokeh в шаблоне Chameleon?
У меня есть проект со многими сценариями, использующими Matplotlib. Я хотел бы создать веб-интерфейс для этого проекта.
Как разместить диаграмму Bokeh в шаблоне Chameleon? Я использую Pyramid и загрузчик Deform, если это имеет значение.
У кого-нибудь есть хороший пример?
2 ответа
Вы хотите использовать plot.create_html_snippet
, Эта функция возвращает код, который вы хотите отобразить в HTML, функция также записывает файл для встраивания.
Вот как выглядит встроенный фрагмент
<script src="http://localhost:5006/static/dc0c7cfd-e657-4c79-8150-6a66be4dccb8.embed.js" bokeh_plottype="embeddata" bokeh_modelid="dc0c7cfd-e657-4c79-8150-6a66be4dccb8" bokeh_modeltype="Plot" async="true"></script>
Следующие аргументы управляют тем, как записывается файл для встраивания и где код js ищет файлы для встраивания.embed_base_url
контролирует путь URL (он может быть абсолютным или относительным), в котором javascript будет искать файл для встраивания.
embed_save_loc
управляет каталогом, в который python запишет файл для встраивания. embed_save_loc не требуется, когда server = True
static_path controls
путь URL (он может быть абсолютным или относительным), который будет использоваться в JavaScript для создания URL-адресов для bokeh.js и bokeh.css. По умолчанию http://localhost:5006/static/
, но может так же легко указать на CDN
При запуске сервера bokeh перейдите к http://localhost:5006/bokeh/generate_embed/static
, Я думаю, что это требует, чтобы вы работали на мастере из-за ошибки.
Надеюсь, это поможет.
Здесь есть несколько разных проблем.
Если вы действительно пытаетесь портировать множество графиков Matplotlib в интерактивный JS, возможно, проект mpld3 подойдет вам. Однако вы должны знать, что использование D3 будет влиять на производительность, в зависимости от того, сколько точек на вашем графике. Bokeh также имеет базовую поддержку Matplotlib сейчас, и будет получать только больше. В настоящее время Джейк проводит рефакторинг проекта mpld3 в явный экспортер, а затем в рендерер D3, и мы также будем использовать эту работу для поддержки Bokeh Matplotlib.
Чтобы сделать это с Bokeh, вы можете получить необработанный HTML-код для графика, посмотрев, как, например,
HTMLFileSession.dumps()
реализовано: https://github.com/ContinuumIO/bokeh/blob/master/bokeh/session.py. Шаблон по умолчаниюbokeh/templates/base.html
; однако это полный HTML-файл, а не его фрагмент. Метод dumps() довольно прост, как и шаблон по умолчанию, поэтому вы должны иметь возможность получить то, что вам нужно, глядя на них. Надеюсь, к следующему выпуску мы закончимHTMLFragmentSession
что облегчит встраивание.