bokeh.embed¶
Provide functions to embed Bokeh models (e.g., plots, widget, layouts) in various different ways.
There are a number of different combinations of options when embedding Bokeh plots. The data for the plot can be contained in the document, or on a Bokeh server, or in a sidecar JavaScript file. Likewise, BokehJS may be inlined in the document, or loaded from CDN or a Bokeh server.
The functions in bokeh.embed
provide functionality to embed in all
these different cases.
-
autoload_server
(model=None, app_path=None, session_id=None, url='default', relative_urls=False)[source]¶ Return a script tag that embeds content from a Bokeh server session.
Bokeh apps embedded using
autoload_server
will NOT set the browser window title.Note
Typically you will not want to save or re-use the output of this function for different or multiple page loads.
Parameters: - model (Model, optional) –
The object to render from the session
If
None
an entire document is rendered. (default:None
)If you supply a specific model to render, you must also supply the session ID containing that model.
Supplying a model is usually only useful when embedding a specific session that was previously created using the
bokeh.client
API. - session_id (str, optional) –
A server session ID (default: None)
If
None
, let the server auto-generate a random session ID.Supplying a session id is usually only useful when embedding a specific session that was previously created using the
bokeh.client
API. - url (str, optional) –
A URL to a Bokeh application on a Bokeh server
If
None
the default URLhttp://localhost:5006/
will be used. - relative_urls (bool, optional) –
Whether to use relative URLs for resources.
If
True
the links generated for resources such a BokehJS JavaScript and CSS will be relative links.This should normally be set to
False
, but must be set toTrue
in situations where only relative URLs will work. E.g. when running the Bokeh behind reverse-proxies under certain configurations
Returns: A
<script>
tag that will execute an autoload script loaded from the Bokeh Server.Examples
In the simplest and most common case, we wish to embed Bokeh server application by providing the URL to where it is located.
Suppose the app is running (perhaps behind Nginx or some other proxy) at
http://app.server.org/foo/myapp
. We wish to embed this app in a page atmysite.com
. The following will provide an HTML script tag to do that, that can be included inmysite.com
:script = autoload_server(url="http://app.server.org/foo/myapp")
Note that in order for this embedding to work, the Bokeh server needs to have been configured to allow connections from the public URL where the embedding happens. In this case, if the autoload script is run from a page located at
http://mysite.com/report
then the Bokeh server must have been started with an--allow-websocket-origin
option specifically allowing websocket connections from pages that originate frommysite.com
:bokeh serve mayapp.py --allow-websocket-origin=mysite.com
If an autoload script runs from an origin that has not been allowed, the Bokeh server will return a 403 error.
It’s also possible to initiate sessions on a Bokeh server from Python, using the functions
push_session()
andpush_session()
. This can be useful in advanced situations where you may want to “set up” the session before you embed it. For example, you might to load up a session and modifysession.document
in some way (perhaps adding per-user data).In such cases you will pass the session id as an argument as well:
script = autoload_server(session_id="some_session_id", url="http://app.server.org/foo/myapp")
Warning
It is typically a bad idea to re-use the same
session_id
for every page load. This is likely to create scalability and security problems, and will cause “shared Google doc” behaviour, which is typically not desired.- model (Model, optional) –
-
autoload_static
(model, resources, script_path)[source]¶ Return JavaScript code and a script tag that can be used to embed Bokeh Plots.
The data for the plot is stored directly in the returned JavaScript code.
Parameters: Returns: JavaScript code to be saved at
script_path
and a<script>
tag to load itReturn type: (js, tag)
Raises: ValueError
-
components
(models, wrap_script=True, wrap_plot_info=True, theme=<class 'bokeh.embed.FromCurdoc'>)[source]¶ Return HTML components to embed a Bokeh plot. The data for the plot is stored directly in the returned HTML.
An example can be found in examples/embed/embed_multiple.py
Note
The returned components assume that BokehJS resources are already loaded.
Parameters: - models (Model|list|dict|tuple) – A single Model, a list/tuple of Models, or a dictionary of keys and Models.
- wrap_script (boolean, optional) – If True, the returned javascript is wrapped in a script tag. (default: True)
- wrap_plot_info (boolean, optional) –
If True, returns
<div>
strings. Otherwise, return dicts that can be used to build your own divs. (default: True)If False, the returned dictionary contains the following information:
{ 'modelid': 'The model ID, used with Document.get_model_by_id', 'elementid': 'The css identifier the BokehJS will look for to target the plot', 'docid': 'Used by Bokeh to find the doc embedded in the returned script', }
- theme (Theme, optional) – Defaults to the
Theme
instance in the current document. Setting this toNone
uses the default theme or the theme already specified in the document. Any other value must be an instance of theTheme
class.
Returns: UTF-8 encoded (script, div[s]) or (raw_script, plot_info[s])
Examples
With default wrapping parameter values:
components(plot) # => (script, plot_div) components((plot1, plot2)) # => (script, (plot1_div, plot2_div)) components({"Plot 1": plot1, "Plot 2": plot2}) # => (script, {"Plot 1": plot1_div, "Plot 2": plot2_div})
Examples
With wrapping parameters set to
False
:components(plot, wrap_script=False, wrap_plot_info=False) # => (javascript, plot_dict) components((plot1, plot2), wrap_script=False, wrap_plot_info=False) # => (javascript, (plot1_dict, plot2_dict)) components({"Plot 1": plot1, "Plot 2": plot2}, wrap_script=False, wrap_plot_info=False) # => (javascript, {"Plot 1": plot1_dict, "Plot 2": plot2_dict})
-
file_html
(models, resources, title=None, template=<Template 'file.html'>, template_variables={}, theme=<class 'bokeh.embed.FromCurdoc'>)[source]¶ Return an HTML document that embeds Bokeh Model or Document objects.
The data for the plot is stored directly in the returned HTML, with support for customizing the JS/CSS resources independently and customizing the jinja2 template.
Parameters: - models (Model or Document or list) – Bokeh object or objects to render typically a Model or Document
- resources (Resources or tuple(JSResources or None, CSSResources or None)) – a resource configuration for Bokeh JS & CSS assets.
- title (str, optional) – a title for the HTML document
<title>
tags or None. (default: None) If None, attempt to automatically find the Document title from the given plot objects. - template (Template, optional) – HTML document template (default: FILE) A Jinja2 Template, see bokeh.core.templates.FILE for the required template parameters
- template_variables (dict, optional) – variables to be used in the Jinja2 template. If used, the following variable names will be overwritten: title, bokeh_js, bokeh_css, plot_script, plot_div
- theme (Theme, optional) – Defaults to the
Theme
instance in the current document. Setting this toNone
uses the default theme or the theme already specified in the document. Any other value must be an instance of theTheme
class.
Returns: UTF-8 encoded HTML
-
notebook_div
(model, notebook_comms_target=None, theme=<class 'bokeh.embed.FromCurdoc'>)[source]¶ Return HTML for a div that will display a Bokeh plot in a Jupyter/Zeppelin Notebook. notebook_comms_target is only supported in Jupyter for now.
The data for the plot is stored directly in the returned HTML.
Parameters: - model (Model) – Bokeh object to render
- notebook_comms_target (str, optional) – A target name for a Jupyter Comms object that can update the document that is rendered to this notebook div
- theme (Theme, optional) – Defaults to the
Theme
instance in the current document. Setting this toNone
uses the default theme or the theme already specified in the document. Any other value must be an instance of theTheme
class.
Returns: UTF-8 encoded HTML text for a
<div>
Note
Assumes
load_notebook()
or the equivalent has already been executed.
-
standalone_html_page_for_models
(models, resources, title)[source]¶ Return an HTML document that renders zero or more Bokeh documents or models.
The document for each model will be embedded directly in the HTML, so the resulting HTML file is standalone (does not require a server). Depending on the provided resources, the HTML file may be completely self-contained or may have to load JS and CSS from different files.
Parameters: Returns: UTF-8 encoded HTML