Vector Field Visualization

Ella Bahry
Helmholtz Imaging | MDC Berlin
Sep 29, 2026
Slides available at https://ida-mdc.github.io/workshop-visualization/2026-workshop/vector-field-visualization/

Vector Field Visualization

NASA’s Perpetual Ocean

Perpetual Ocean 2 - NASA Scientific Visualization Studio

A Vector Field, Rendered as Fur

YouTube channel: But Why Me?

Each Point in Space

Has a Vector Value - Direction and Magnitude

A scalar field has one number per point.

A vector field has a direction and a magnitude at every point - wind, blood flow, a magnetic field, an ocean current.

A point cloud

A point cloud

The same points, with a vector attached to each

The same points, with a vector attached to each

Our Goal: A Tailored Visualization

Van Allen Belt Simulation

Interactive - the same figure the notebook renders, exported from PyVista straight to vtk.js. Drag to rotate, scroll to zoom; all four panels share one camera.

Visualization Types

Glyphs, Streamlines, Ribbons, Isolines

Vector Field as Scalar

Usually as a Heatmap

Visualize any scalar derived from a vector field:

  • Magnitude
  • Vorticity
  • Curvature
The underlying 3D wind vector field

The underlying 3D wind vector field

Magnitude on one horizontal, one vertical slice

Magnitude on one horizontal, one vertical slice

Magnitude on two orthogonal planes

Magnitude on two orthogonal planes

Visualize 1 plane · 2 planes (here orthogonal) · 3D with opacity…

Vector Field as Glyphs

Blood Flow Simulation

Lines - show orientation, but not flow direction

Lines - show orientation, but not flow direction

Arrows - arrowheads make direction explicit

Arrows - arrowheads make direction explicit

Too dense - scaled glyphs + dense sampling

Too dense - scaled glyphs + dense sampling

3D + time - pulsatile flow through one heartbeat

3D + time - pulsatile flow through one heartbeat

Vector Field as Streamlines

Yield Smooth and Continuous Curves

Dense

Dense

Sparse

Sparse

Depth - four layers, darker blue is deeper

Depth - four layers, darker blue is deeper

Time - tracer particles moving along the network

Time - tracer particles moving along the network

  • Illustrative Gulf-Stream-style model inspired by NASA’s Perpetual Ocean; not scientific ocean-model output

Streamlines, and More

Stationary vs. Over Time

Streamlines - snapshot of flow direction

Streamlines - snapshot of flow direction

Streamtubes - bundles of streamlines

Streamtubes - bundles of streamlines

Pathlines - particle trajectory over time

Pathlines - particle trajectory over time

Streaklines - dye injection trail over time

Streaklines - dye injection trail over time

  • Stationary: streamlines, streamtubes · Over time: pathlines, streaklines
  • Synthetic aircraft-wake model: forward flow, counter-rotating wingtip vortices, a time-varying gust

Vector Field as LIC

Line Integral Convolution

Flow past a cylinder

Flow past a cylinder

Color e.g. magnitude

Color e.g. magnitude

Surface overlay

Surface overlay

Noise, smeared along the field, is the whole method

Noise, smeared along the field, is the whole method

  • LIC schematic: Weiskopf / Machiraju / Möller

Usually You Want a Combo

There Are So Many Ways of Representing the Same Data

Glyphs + volume, tornado

Glyphs + volume, tornado

Streamlines + LIC + volume, tropical cyclone

Streamlines + LIC + volume, tropical cyclone

Before You Visualize: Ask Yourself

What Shape Is Your Data?

  • List what needs to be visualized, and think of the best combo of visualizations
    • Will it look best as 2D, 3D, or 4D?
      • e.g. show time as animation or a time slider (or e.g. stream paths)

How to Deal With Clutter and Occlusion?

  • Color - e.g. separate depth by hue, not position
  • Sparsity - fewer, well-chosen samples
  • Clipping - cut the mesh open
  • Opacity - make the obstruction see-through

Tool Comparison

ToolInteractive Visualization?Scriptable / ReproducibleRendering QualityLearning Curve
PyVista / VTKYesYes (Python)GoodMedium
ParaViewYesYes (Python)GoodMedium-High
MATLABLimitedYesBasic-decentLow-Medium
BlenderYesYes (Python)ExcellentHigh

Try It Out

Jupyter Notebook

uv venv .venv_vector_field --python 3.12 --seed
uv pip install --python .venv_vector_field -r visualization_software/requirements_vector_field.txt
uv run --python .venv_vector_field jupyter lab