Phase Portrait (Lissajous)

A voltage-against-current XY plot. Each electrical load produces a unique Lissajous figure based on its harmonic content. The motor draws a smooth ellipse. The GPU rack adds harmonic complexity. A bearing fault distorts the shape entirely.

This is the primary Verdigris visual signature. Of all the brand visualizations, the Phase Portrait is the one that communicates “we understand the physics” most compactly. Use it sparingly and intentionally — frequent use dilutes its signal.

When to use

When NOT to use

Prop contract

Source: www/client/src/components/visualizations/LissajousFigure.tsx

Prop Type Default Purpose
loadType 'resistive'\|'motor'\|'led'\|'vfd'\|'gpu'\|'fault' (required) Which load’s harmonic profile to render
size number (px) 160 Square canvas edge. 180 minimum for grouped specimens.
animated boolean true One-shot viewport-entry trace draw + gentle pulse loop
showLabel boolean true Render LOAD TYPE + power + PF metadata below canvas
theme 'dark'\|'light' 'dark' Oscilloscope aesthetic (dark) vs technical illustration (light)

Tokens consumed

Accessibility

Anti-patterns

  1. Using Phase Portrait as a bullet-point icon — dilutes the brand mark into decoration
  2. Applying loadType="fault" outside a fault-narrative context — the red trace is semantic (actual fault detected), not stylistic
  3. Theme-switching within the same viewport — pick light or dark for the section; don’t mix
  4. Hardcoding harmonic parameters — the LOAD_CONFIGS table in the React source is the canonical profile set; don’t invent new ones without engineering review

Source of truth

www/client/src/components/visualizations/LissajousFigure.tsx (graduated from explorations/visual-signature/ after shipping on /platform/signals).