https://github.com/datoviz/datoviz Skip to content Navigation Menu Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + GitHub Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions By size + Enterprise + Teams + Startups By industry + Healthcare + Financial services + Manufacturing By use case + CI/CD & Automation + DevOps + DevSecOps * Resources Topics + AI + DevOps + Security + Software Development Explore + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} datoviz / datoviz Public * Notifications You must be signed in to change notification settings * Fork 25 * Star 510 [?] Datoviz: high-performance GPU scientific data visualization C/C++/ Python library datoviz.org License MIT license 510 stars 25 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 22 * Pull requests 0 * Discussions * Actions * Projects 0 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights datoviz/datoviz This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main BranchesTags Go to file Code Folders and files Last Last Name Name commit commit message date Latest commit History 1,404 Commits .github/workflows .github/workflows bin/vulkan bin/vulkan cli cli cmake cmake data @ 08c3aa6 data @ 08c3aa6 datoviz datoviz docs docs examples examples external external include include libs/vulkan libs/vulkan src src tests tests tools tools .clang-format .clang-format .gitignore .gitignore .gitmodules .gitmodules .valgrind.exceptions.txt .valgrind.exceptions.txt ARCHITECTURE.md ARCHITECTURE.md BUILD.md BUILD.md CITATION.cff CITATION.cff CMakeLists.txt CMakeLists.txt CMakePresets.json CMakePresets.json CONTRIBUTING.md CONTRIBUTING.md Dockerfile_ubuntu Dockerfile_ubuntu LICENSE LICENSE MAINTAINERS.md MAINTAINERS.md README.md README.md export.map export.map justfile justfile pyproject.toml pyproject.toml requirements-dev.txt requirements-dev.txt symbols.map symbols.map tests.py tests.py vcpkg-configuration.json vcpkg-configuration.json vcpkg.json vcpkg.json View all files Repository files navigation * README * MIT license Datoviz: high-performance GPU scientific data visualization C/C++ library [Installation] [Usage] [User guide] [Examples] [API reference] [?][?] Datoviz is a cross-platform, open-source, high-performance GPU scientific data visualization library written in C/C++ on top of the Khronos Vulkan graphics API and the glfw window library. It provides raw ctypes bindings in Python . In the long term, Datoviz will mostly be used as a VisPy 2.0 backend. Designed for speed, visual quality, and scalability to datasets comprising millions of points, it supports 2D/3D interactive rendering and minimal GUIs via Dear ImGui. [?][?] Warning: Although Datoviz has been years in the making, it is still in its early stages and would greatly benefit from increased community feedback, particularly concerning package and hardware compatibility. The API is still evolving, so expect regular (though hopefully minimal) breaking changes for now. The current version is v0.2, with documentation available only on GitHub at the moment. The datoviz.org website still reflects the deprecated v0.1 documentation, but it will be updated soon. Roadmap. In the medium term: increasing OS and hardware compatibility, providing more visuals, interactivity patterns, and GUI controls. In the long term: picking, custom visuals and shaders, nonlinear transforms, WebGPU/WebAssembly compatibility, integration with IPython, Jupyter and Qt. [?] Screenshots from the v0.1 version [datoviz] Credits: mouse brain volume: Allen SDK. France: Natural Earth. Molecule: Crystal structure of S. pyogenes Cas9 from PDB (thanks to Eric for conversion to OBJ mesh). Earth: Pixabay. Raster plot: IBL. 3D human brain: Anneke Alkemade et al. 2020, thanks to Pierre-Louis Bazin and Julia Huntenburg. Features * High-quality antialiased 2D visuals: markers, lines, paths, glyphs * 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") * [?] Minimal GUIs using Dear ImGui List of visuals List of visuals Work in progress These features are currently planned for v0.3: * Axes: ticks, grids, labels * Colorbars * [?] More interactivity patterns * More documentation Future work These features are currently planned for v0.4 and later: * More visuals: arrows, polygons, planar straight-line graphs (PSLG), histograms, areas, graphs * Picking * Nonlinear transforms * [?] Dynamic shaders * WebGPU/WebAssembly compatibility * Compute shaders * IPython, Jupyter, Qt integration [?] Installation instructions Requirements: * A supported OS (Linux, macOS 12+, Windows 10+) * A Vulkan-capable graphics chipset (either integrated or dedicated graphics process unit) * Python and NumPy Note: You no longer need to install the Vulkan SDK or to manually build the library. Precompiled wheels for Linux, Windows, and macOS have been uploaded to PyPI. pip install datoviz Usage Simple scatter plot example (points with random positions, colors, and sizes) in Python, which closely follow the C API. import numpy as np import datoviz as dvz app = dvz.app(0) batch = dvz.app_batch(app) scene = dvz.scene(batch) figure = dvz.figure(scene, 800, 600, 0) panel = dvz.panel_default(figure) dvz.panel_panzoom(panel) visual = dvz.point(batch, 0) n = 100_000 dvz.point_alloc(visual, n) pos = np.random.normal(size=(n, 3), scale=.25).astype(np.float32) dvz.point_position(visual, 0, n, pos, 0) color = np.random.uniform(size=(n, 4), low=50, high=240).astype(np.uint8) dvz.point_color(visual, 0, n, color, 0) size = np.random.uniform(size=(n,), low=10, high=30).astype(np.float32) dvz.point_size(visual, 0, n, size, 0) dvz.panel_visual(panel, visual, 0) dvz.scene_run(scene, app, 0) dvz.scene_destroy(scene) dvz.app_destroy(app) [scatter] Check out the examples documentation for more usage examples. Documentation * User guide * Examples * API reference * [?] Architecture overview * [?] Build instructions * Contributors instructions * [?] Maintainers instructions [?] History and current status In 2012, developers of various GPU scientific visualization libraries (Galry, Glumpy, pyqtgraph, visvis) collaborated to create VisPy, an OpenGL-based scientific visualization library for Python. In 2015, Vulkan, the successor to OpenGL, was announced by Khronos, sparking the idea of a future Vulkan-based visualization library. In 2019, Cyrille Rossant, one of the original VisPy developers, began experimenting with Vulkan. In 2021, the first experimental version of Datoviz v0.1 was released. This initial release laid the groundwork for further development. Over the next three years, the technology matured, aided by a Chan Zuckerberg Initiative (CZI) grant awarded to VisPy in 2021. In 2024, Datoviz v0.2 is released. This version is redesigned from the ground up to enhance modularity and stability, ensuring it can keep pace with the continuous advancements in GPU hardware and graphics rendering APIs. It features a modular architecture that will allow the porting of Datoviz technology to non-Vulkan environments, such as WebGPU-enabled web browsers (thanks to a second CZI grant). Datoviz is closely related to VisPy, as it is being developed by one of the VisPy cofounders. VisPy 2.0, initiated by Cyrille Rossant and Nicolas Rougier, will offer a high-level scientific API on top of Datoviz, matplotlib, and other renderers via a common medium-level visualization layer called "graphics server protocol (GSP)". The long-term vision is for high-performance GPU-based 2D/3D scientific visualization to be uniformly available across multiple platforms, environments (desktop, web, cloud-based remote visualization), and programming languages (C/C++, Python, Julia, Rust, etc.). Contributing See the contributing notes. License See the MIT license. Credits Datoviz is developed by Cyrille Rossant at the International Brain Laboratory, a consortium of neuroscience research labs around the world. It is funded notably by Chan Zuckerberg Initiative's Essential Open Source Software for Science program. About [?] Datoviz: high-performance GPU scientific data visualization C/C++/ Python library datoviz.org Topics visualization python c cpp gpu graphics rendering vulkan data-visualization scientific-visualization scientific-computing data-viz Resources Readme License MIT license Activity Custom properties Stars 510 stars Watchers 24 watching Forks 25 forks Report repository Releases 3 v0.2.0 Latest Aug 5, 2024 + 2 releases Packages 0 No packages published Languages * C 80.7% * Python 5.9% * C++ 4.5% * CMake 4.0% * GLSL 3.6% * Just 1.3% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.