我有一个使用 Matplotlib 的包含许多脚本的项目。我想为这个项目构建一个 Web 界面。
如何在 Chameleon 模板中放置散景图?如果这很重要,我正在使用 Pyramid 和 Deform 引导程序。
有人有一个很好的例子吗?
这里有几个不同的问题需要解决。
如果您真的想将大量 Matplotlib 图移植到交互式 JS 中,那么mpld3 项目可能非常适合您。但是,您应该知道,使用 D3 会影响性能,具体取决于绘图中的点数。Bokeh 现在也有基本的 Matplotlib 支持,而且只会越来越多。Jake 目前正在将 mpld3 项目重构为显式导出器,然后是 D3 渲染器,我们也可能会在这项工作的基础上构建 Bokeh Matplotlib 支持。
要使用 Bokeh 执行此操作,您可以通过查看 egHTMLFileSession.dumps()
的实现方式来获取绘图的原始 HTML:https ://github.com/ContinuumIO/bokeh/blob/master/bokeh/session.py#L295 。默认模板是bokeh/templates/base.html
; 然而,这是一个完整的 HTML 文件,而不是一个片段。dumps() 方法非常简单,默认模板也是如此,因此您应该能够通过查看这些来获得所需的内容。希望在下一个版本中,我们将完成一个HTMLFragmentSession
更容易嵌入的版本。
你想用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
控制 javascript 将在其中搜索嵌入文件的 url 路径(可以是绝对的或相对的)。
embed_save_loc
控制 python 将在其中写出嵌入文件的目录。当 server=True 时,不需要 embed_save_loc
static_path controls
javascript 将用于为 bokeh.js 和 bokeh.css 构造 URL 的 url 路径(它可以是绝对的或相对的)。它默认为http://localhost:5006/static/
,但也可以很容易地指向 CDN
运行散景服务器时,导航到http://localhost:5006/bokeh/generate_embed/static
. 我认为这需要您因为错误而在 master 上运行。
我希望这有帮助。