Open this notebook in Jupyterlite | Download this notebook from GitHub (right-click to download).

import panel as pn

The VTK pane renders vtk.js files inside a panel, making it possible to load and interact with complex geometries in 3D.


For details on other options for customizing the component see the layout and styling how-to guides.

  • axes (dict): A dictionary with the parameters of the axes to construct in the 3D view. Must contain at least xticker, yticker and zticker.

    • [x|y|z]ticker is a dictionary which contains:

      • ticks (array of numbers) - required. Positions in the scene coordinates of the corresponding axis ticks

      • labels (array of strings) - optional. Label displayed respectively to the ticks positions.

      If labels are not defined they are inferred from the ticks array.

    • digits: number of decimal digits when ticks are converted to labels.

    • fontsize: size in pts of the ticks labels.

    • show_grid: boolean. If true (default) the axes grid is visible.

    • grid_opacity: float between 0-1. Defines the grid opacity.

    • axes_opacity: float between 0-1. Defines the axes lines opacity.

  • camera (dict): A dictionary reflecting the current state of the VTK camera

  • enable_keybindings (bool): A boolean to activate/deactivate keybindings. Bound keys are:

    • s: set representation of all actors to surface

    • w: set representation of all actors to wireframe

    • v: set representation of all actors to vertex

    • r: center the actors and move the camera so that all actors are visible

    The mouse must be over the pane to work.
    Warning: These keybindings may not work as expected in a notebook context, if they interact with already bound keys.

  • orientation_widget (bool): A boolean to activate/deactivate the orientation widget in the 3D pane.

  • ìnteractive_orientation_widget (bool): If True the orientation widget is clickable and allows to rotate the scene in one of the orthographic projections.

  • object (str or object): Can be a string pointing to a local or remote file with a .vtkjs extension.

The simplest way to construct a VTK pane is to give it a vtk.js file which it will serialize and embed in the plot. The VTK pane also supports the regular sizing options provided by Bokeh, including responsive sizing modes:

vtk_pane = pn.pane.VTK(
    sizing_mode='stretch_width', height=400, enable_keybindings=True, orientation_widget=True