Как разместить диаграмму 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, Я думаю, что это требует, чтобы вы работали на мастере из-за ошибки.

Надеюсь, это поможет.

Здесь есть несколько разных проблем.

  1. Если вы действительно пытаетесь портировать множество графиков Matplotlib в интерактивный JS, возможно, проект mpld3 подойдет вам. Однако вы должны знать, что использование D3 будет влиять на производительность, в зависимости от того, сколько точек на вашем графике. Bokeh также имеет базовую поддержку Matplotlib сейчас, и будет получать только больше. В настоящее время Джейк проводит рефакторинг проекта mpld3 в явный экспортер, а затем в рендерер D3, и мы также будем использовать эту работу для поддержки Bokeh Matplotlib.

  2. Чтобы сделать это с Bokeh, вы можете получить необработанный HTML-код для графика, посмотрев, как, например, HTMLFileSession.dumps() реализовано: https://github.com/ContinuumIO/bokeh/blob/master/bokeh/session.py. Шаблон по умолчанию bokeh/templates/base.html; однако это полный HTML-файл, а не его фрагмент. Метод dumps() довольно прост, как и шаблон по умолчанию, поэтому вы должны иметь возможность получить то, что вам нужно, глядя на них. Надеюсь, к следующему выпуску мы закончим HTMLFragmentSession что облегчит встраивание.

Другие вопросы по тегам