Settings, Theming & Backends

settings!(key=value, ...)

Update the global settings for Bokeh.

  • display: The display backend to use, such as "browser" or "blink". Default: "null".
  • offline: If set to true then any generated plots will work offline. Default: false.
  • browser_cmd: The command used to open the browser. Default: Operating-system dependent.
  • theme: The Theme to apply when displaying plots. May instead be the name of a builtin theme or a JSON or YAML file. Default: "default".


The appearance of a Bokeh plot comes from these sources, in order of precedence:

  • A plot-specific theme, given by creating a Document with the specified theme.
  • A global theme, given as the theme argument to Bokeh.settings!.
  • The display backend.
  • Bokeh defaults.

Construct a theme from the given source, which is either:

  • The name of a builtin theme.
  • The name of a JSON or YAML file.
  • An iterator of the form [type => [attr => value, ...], ...].

For example, here is a theme which overrides some attributes on all figures, axes, grids and titles:

    "Figure" => [
        "background_fill_color" => "#2F2F2F",
        "border_fill_color" => "#2F2F2F",
        "outline_line_color" => "#444444",
    "Axis" => [
        "axis_line_color" => nothing,
    "Grid" => [
        "grid_line_dash" => [6, 4],
        "grid_line_alpha" => 0.3,
    "Title" => [
        "text_color" => "white",

You can apply a theme globally using Bokeh.settings! or on a particular plot by wrapping it into a Document.

theme!([theme], "Type.attr" => value, ...)

Modify the theme with the given key-value pairs.

If theme is not given, the default theme is modified.

For example, here we change the default height and width of all plots:

Bokeh.theme!("Plot.width"=>1000, "Plot.height"=>800)

Load a theme from the given file.

The format (JSON or YAML) is deduced from the file name.

save_theme(filename, [theme])

Save the given theme to the given file.

If theme is not given, the default theme is saved.

The format (JSON or YAML) is deduced from the file name.

Document(plot; [theme])

Construct a new document to render the given plot.

The given theme (a Theme) is used to override attributes of the plot. It takes precedence over the global theme set using Bokeh.settings!.


Display Backends

Plots can automatically be displayed anywhere supporting HTML output, such as a Pluto or Jupyter notebook. Anywhere else, such as the Julia REPL, will require a display backend to be activated.


To display plots in your default browser, set


The BokehBlink package can be separately installed to enable plotting into a standalone Blink.jl window.

To activate this backend, do

using Bokeh, BokehBlink

By default, plots are stretched to fill the window. You may override this by setting sizing_mode on the top-level figure/column/row/etc.

This package can also be used to export plots as images. You do not need to activate the backend first.

save(io, [plot]; ...)
save(filename, [plot]; ...)

Save a screenshot of the current plot or the given plot.

Keyword Arguments

  • format: The output format to use. Valid formats include "png", "jpeg" and "webp". If filename is given, the format is inferred from the extension. Otherwise it defaults to "png".
  • quality: A number between 0 and 1 specifying the quality (compression level) of the image.

This is an experimental feature and likely to be buggy, particularly the version taking a plot argument.



The null backend cannot display anything. It is the default backend. Use it to deactivate another backend:


Interactive Backends

🚧 Coming soon! 🚧