Skip to content

Datoviz: high-performance rendering for scientific data visualization

โšก๏ธ Datoviz is an open-source, cross-platform, high-performance rendering library for scientific data visualization making extensive use of the graphics processing unit (GPU).

Up to 10,000x faster than matplotlib, it delivers highly efficient high-quality GPU rendering of 2D and 3D graphical primitivesโ€”markers, paths, images, text, meshes, volumes, and moreโ€”that scale to millions of elements. Datoviz also supports graphical user interfaces (GUIs) for interactive visualization.

Built from the ground up with performance in mind, Datoviz is written primarily in C and C++, leveraging the Khronos Vulkan graphics API. It offers a C API, low-level Python bindings via ctypes, and a higher-level, idiomatic Python API ๐Ÿ.

Written by one of the original creators of VisPy, a GPU-based Python scientific visualization library, Datoviz aims to serve as the default backend for the upcoming VisPy 2.0.

The library is lightweight with minimal dependencies: mostly Vulkan, GLFW for windowing, and Dear ImGui for GUIs.

Warning

Datoviz is a young library. The API is stabilizing, but breaking changes may still occur as the project evolves with broader usage.

โœจ Current features

  • ๐Ÿ“Š 2D visuals: antialiased points, markers, line segments, paths, text, images
  • ๐Ÿ“ˆ 2D axes
  • ๐ŸŒ 3D visuals: meshes, volumes, volume slices
  • ๐ŸŒˆ 150 colormaps included (from matplotlib, colorcet, MATLAB)
  • ๐Ÿ–ฑ๏ธ High-level interactivity: pan & zoom for 2D, arcball for 3D (more later)
  • ๐ŸŽฅ Manual control of cameras: custom interactivity
  • ๐“ˆˆ Figure subplots (aka "panels")
  • ๐Ÿ–ฅ๏ธ GUIs using Dear ImGui

๐Ÿงฉ API philosophy

Datoviz does not use high-level plotting functions like plot(), scatter(), or imshow(). Instead, it exposes flexible visual primitivesโ€”markers, images, meshes, and moreโ€”that can be added to a scene and customized directly with data. This approach offers fine-grained control and high performance, while remaining concise enough for quick plots.

A higher-level plotting interface is under development as part of VisPy 2.0, which will use Datoviz as its rendering backend. An intermediate layer called GSP (Graphics Specification Protocol) will provide a backend-agnostic API for declarative plotting.

๐Ÿ” Comparison with other libraries

๐Ÿ Matplotlib

Matplotlib is the gold standard for static, publication-quality figures, with a mature, feature-rich API. But it's not optimized for interactivity or large datasets.

Datoviz, in contrast, is a younger, GPU-based library designed for fast, interactive visualization. It lacks Matplotlibโ€™s high-level API but excels at rendering millions of points in real time.

Use Matplotlib for polished static plots, Datoviz for responsive data exploration.

Preliminary performance benchmark

The figure below shows a preliminary performance benchmark comparing Datoviz and Matplotlib on an interactive 2D scatter plot, with increasing numbers of points and a simulated zoom interaction:

Datoviz vs Matplotlib benchmark

In this benchmark, Datoviz outperforms Matplotlib by a factor of up to 10,000ร—, maintaining interactive framerates even with millions of points. Matplotlib, in contrast, becomes sluggish or fails entirely as the dataset size increases.

๐ŸงŠ VTK

Datoviz is lighter, simpler, and easier to install than VTK. It compiles in seconds, has minimal dependencies, and focuses exclusively on real-time rendering of visual primitives. Unlike VTK, it does not include data file I/O (except minimal test loaders like .obj), computational geometry, or data processing.

VTK is a powerful, heavyweight toolkit for 3D visualization, simulation, and scientific computing workflows. In contrast, Datoviz is designed for fast, high-quality 2D and 3D rendering.

๐Ÿš€ Get started

  • ๐Ÿ‘‰ Quickstart guide โ€” create your first scatter plot in a few lines of code
  • ๐Ÿ“š Learn โ€” deep dive into visuals, layout, interactivity, and more
  • ๐Ÿ–ผ๏ธ Gallery โ€” curated examples of what Datoviz can render
  • ๐Ÿงฉ API Reference โ€” full Python and C documentation

๐Ÿ› ๏ธ Installation

Datoviz runs out of the box on all major platforms:

  • โœ… Windows, macOS (Intel and Apple Silicon), and Linux
  • โœ… Prebuilt wheels for 64-bit architectures (x86_64 and arm64)
  • โœ… No system dependencies โ€” just install and run

Install the Python package via pip:

pip install datoviz

To use the C library directly, see the build instructions.

๐Ÿ“„ License

Datoviz is open source and licensed under the MIT License.