Skip to content

Visual Families

Each public visual family has a concise reference page with status, backend support, an exact dense-data contract, picking notes, and links to verified C and Python examples.

Use the Examples gallery for complete executable source. Use Choose a visual family when deciding between neighboring families.

Visual families are batching units. Prefer one visual with many items over many visuals with one item each. Use per-item attributes for position, color, size, radius, state, and related styling whenever the visual family supports them.

Reading The Attribute Tables

Unless a family page says otherwise:

  • N is the logical item or path-point count. Every array passed together to dvz_visual_set_data_many() must have the same first dimension N.
  • C shapes describe one element followed by the array cardinality, for example vec3[N]. Python shapes use NumPy notation, for example (N, 3).
  • position attributes use the visual's authored coordinate space, normally data coordinates transformed by the panel attachment and controller. Names ending in _px use logical pixels.
  • The normal Python route is import datoviz as dvz with C-contiguous NumPy arrays. Use float32, uint8, and uint32 exactly where specified.
  • A full upload uses dvz_visual_set_data() or dvz_visual_set_data_many(). Update a contiguous existing interval with dvz_visual_set_data_range().
  • "Required" means required for the documented family mode to render. No implicit value should be assumed for a missing required dense attribute.

The registry also supports selected constant, per-span, or per-group attribute sources. Those are advanced source configurations, not one-row broadcasting in the dense upload API. See Visual attributes and the generated Visuals and composites API for exact setters and signatures.

Preview Family Status Primary use Example
Point Point supported Dense circular point sprites for scatter plots and point clouds Example
Pixel Pixel supported Screen-aligned square cells or dense sparse rasters Example
Marker Marker supported Symbolic point marks with configurable shapes Example
Splat Splat experimental Experimental Gaussian splats Example
Segment Segment supported Independent line segments with per-segment styling Example
Path Path supported Connected polylines, curves, and trajectories Example
Vector Vector supported Arrow or vector-field glyphs Example
Primitive Primitive supported Simple triangle or line primitive batches Example
Image Image supported 2D sampled fields, textures, and image quads Example
Text Text supported Semantic text annotations and labels Example
Glyph Glyph experimental Low-level atlas glyph quads Example
Labels Labels supported Categorical integer sampled fields and segmentation masks Example
Mesh Mesh supported Triangle meshes, surfaces, and textured geometry Example
Sphere Sphere supported 3D sphere impostors with radius and lighting Example
Volume Volume supported 3D sampled scalar fields Example

Reference pages intentionally avoid long standalone programs. The canonical source files under examples/c/visuals/ and generated gallery pages are the executable source of truth.