Skip to content
Interactive Jupyter widgets to visualize images, point sets, and meshes in 2D and 3D
Python JavaScript C++ CMake
Branch: master
Clone or download



License PyPI Build status

Interactive Jupyter widgets to visualize images, point sets, and meshes.

itkwidgets chest CT in JupyterLab

Key Features:

  • Visualize 2D and 3D images, point sets, and geometry, e.g. meshes, in Jupyter
  • Support for
    • NumPy array images
    • itk.Image
    • vtk.vtkImageData
    • pyvista.UniformGrid
    • Dask array images
    • ImageJ / Fiji / ImageJ2 images
    • Additional NumPy array-like objects
    • NumPy array point sets
    • vtk.vtkPolyData point sets
    • pyvista.PolyData point sets
    • itk.Mesh
    • vtk.vtkPolyData
    • vtk.vtkStructuredGrid
    • vtk.vtkUnstructuredGrid
    • pyvista.PolyData
    • pyvista.StructuredGrid
    • pyvista.UnstructuredGrid
  • Exquisite volume rendering
  • Tri-plane volume slicing
  • Innovative, powerful opacity transfer function / window / level widget
  • Anisotropic voxel spacing supported
  • Image line profile widget
  • Widgets to select solid colors for geometry or colormaps when point data or cell data is availble
  • Visualize point sets as points or spheres and interactively adjust the point size
  • Combine with other ipywidgets to quickly create graphical interfaces that interactively provide insights into data algorithms

itkwidgets demo

These widgets are designed to support spatial analysis with the Insight Toolkit (ITK), but they work equally well with other spatial analysis tools in the scientific Python ecosystem.

These widgets are built on itk.js and vtk.js.

Examples on Binder

Data types:



To install the widgets for the Jupyter Notebook with pip:

pip install itkwidgets

or with conda:

conda install -c conda-forge itkwidgets

For Jupyter Lab, additionally run:

jupyter labextension install @jupyter-widgets/jupyterlab-manager itkwidgets


In Jupyter, import the view function:

from itkwidgets import view

Then, call the view function at the end of a cell, passing in the image to examine:


For information on additional options, see the view function docstring:


Other available widgets:

  • itkwidgets.line_profile: Plot an intensity line profile.
  • itkwidgets.checkerboard: Compare two images in a checkerboard pattern.

Advanced Usage

The itkwidgets are based on ipywidgets. As a consequence, widgets traits can be queried, assigned, or observed with the viewer object returned by the view function. itkwidgets can be combined with other ipywidgets to quickly explore algorithm parameters, create graphical interfaces, or create data visualization dashboards.

Mouse Controls

Left click + drag
Right click + drag or shift + left click + drag
Mouse wheel or control + left click + drag or pinch
Alt + left click + drag left-right
Change color transfer function window
Shift + left click + drag top-bottom
Change color transfer function level
Shift + alt + left click + drag top-bottom
Change primary Gaussian volume opacity transfer function magnitude

Keyboard Shortcuts

Keyboard shortcuts take effect when the mouse is positioned inside the viewer. All shortcuts are prefixed with Alt+. Corresponding keys for the Dvorak keyboard layout have the same effect.

Alt + 1
X-plane mode
Alt + 2
Y-plane mode
Alt + 3
Z-plane mode
Alt + 4
Volume rendering mode
Alt + q
Toggle user interface
Alt + w
Toggle region of interest (ROI) selection widget
Alt + e
Reset ROI
Alt + r
Reset camera
Alt + s
Toggle slicing planes in volume rendering mode
Alt + f
Toggle fullscreen


After installation, try the following examples that demonstrate how to visualize:

or how to:


If you experience the notebook warning:

IOPub data rate exceeded.
The notebook server will temporarily stop sending output
to the client in order to avoid crashing it.
To change this limit, set the config variable

Set the notebook configuration value:

jupyter notebook --NotebookApp.iopub_data_rate_limit=1e12


Participation is welcome! For a development installation (requires Node.js):

git clone
cd itkwidgets
python -m pip install -r requirements-dev.txt -r requirements.txt
python -m pip install -e .
jupyter nbextension install --py --symlink --sys-prefix itkwidgets
jupyter nbextension enable --py --sys-prefix itkwidgets
jupyter nbextension enable --py --sys-prefix widgetsnbextension
python -m pytest

The above commands will setup your system for development with the Jupyter Notebook. To develop for Jupyter Lab, additionally run:

jupyter labextension install @jupyter-widgets/jupyterlab-manager
jupyter labextension install ./js


Historical note: this project was previously named itk-jupyter-widgets, but it was renamed to itkwidgets to be consistent with the package name.


This project is under active development. Its API and behavior may change at any time. We mean it.

You can’t perform that action at this time.