Jupyter Notebook Plotting#

Plot with pyvista interactively within a Jupyter notebook.


We recommend using the Trame-based backed. See Trame Jupyter Backend for PyVista.

Supported Modules#

The PyVista module supports a variety of backends when plotting within a jupyter notebook:

  • Server and client-side rendering with PyVista streaming to the notebook through trame

  • Static images.

Usage with PyVista#

There are two ways to set the jupyter plotting backend. First, it can be done on a plot by plot basis by setting the jupyter_backend parameter in either Plotter.show() or dataset.plot(). You can also set it globally with the pyvista.set_jupyter_backend(). For further details:

import pyvista as pv
set_jupyter_backend(backend, name=None, **kwargs)[source]#

Set the plotting backend for a jupyter notebook.


Jupyter backend to use when plotting. Must be one of the following:

  • 'static' : Display a single static image within the Jupyterlab environment. Still requires that a virtual framebuffer be set up when displaying on a headless server, but does not require any additional modules to be installed.

  • 'client' : Export/serialize the scene graph to be rendered with VTK.js client-side through trame. Requires trame and jupyter-server-proxy to be installed.

  • 'server': Render remotely and stream the resulting VTK images back to the client using trame. This replaces the 'ipyvtklink' backend with better performance. Supports the most VTK features, but suffers from minor lag due to remote rendering. Requires that a virtual framebuffer be set up when displaying on a headless server. Must have at least trame and jupyter-server-proxy installed for cloud/remote Jupyter instances. This mode is also aliased by 'trame'.

  • 'trame': The full Trame-based backend that combines both 'server' and 'client' into one backend. This requires a virtual frame buffer.

  • 'html' : Export/serialize the scene graph to be rendered with the Trame client backend but in a static HTML file.

  • 'none' : Do not display any plots within jupyterlab, instead display using dedicated VTK render windows. This will generate nothing on headless servers even with a virtual framebuffer.

namestr, optional

The unique name identifier for the server.

**kwargsdict, optional

Any additional keyword arguments to pass to the server launch.


Enable the trame Trame backend.

>>> pv.set_jupyter_backend('trame')  

Just show static images.

>>> pv.set_jupyter_backend('static')  

Disable all plotting within JupyterLab and display using a standard desktop VTK render window.

>>> pv.set_jupyter_backend(None)