Data Lab node

Plot

Draws up to four Signals as a real chart: Line, Area, Stem, Bars, Scatter, XY, a Heatmap (a matrix, a spectrogram, a multi-channel raster), Polar, Radar, a Sphere (a 3-vector on the unit sphere with a trail — the Bloch sphere) or a Ridgeline (a matrix as stacked mountain lines, back to front, the front hiding the back — the pulsar plot; feed it a Spectrogram or a Data Art node), with grid, axes, tick labels in the data’s unit, a legend and a cursor readout — all inside the image, so recordings and Canvas transforms keep them. Y ranges follow the data with hysteresis or are set by hand; Persistence gives a phosphor trail, Glow a bloom. Raw and analysed Signals sit in the same picture; run several Plots side by side to compare.

Inputs

PortTypeDefault
Enablebooltrue
Signal AA Signal from a Signal Window or any Analyze node, or a plain numeric array (drawn over its index). Every channel of the Signal is drawn; series A…D share the picture, so raw and analysed data sit side by side.structure—
Signal BSecond series. A different unit family than A goes to the right axis automatically (▸ in the legend).structure—
Signal CThird series.structure—
Signal DFourth series.structure—
KindLine, Area, Stem, Bars: channels against time (Hz for spectra). Scatter, XY: channel 1 against 2 — the vector scope. Heatmap: a matrix, rows are channels. Polar: the window around a clock. Radar: latest values on spokes. Sphere: a 3-vector on the unit sphere — the Bloch sphere.int0
StyleClean: transparent, for compositing. Phosphor: dark tube with green traces — add Persistence and Glow for the CRT. Paper: grained paper and ink. Cyber: scanlines, neon magenta / cyan / lime, gradient fills (Area and Bars) and readout chips — add Glow 0.5. Aesthetics only; the data path is identical.int0
XCentre of the plot, Grafit units.float0
YCentre of the plot, Grafit units.float0
WidthPlot width in Grafit units (2 = the full short edge).float2.0
HeightPlot height in Grafit units.float1.0
Time WindowSeconds shown along the time axis; 0 = the longest series decides. Shorter than the window = only the tail is drawn, longer = the trace fills from the right.float0
Y AutoValue range follows the data: it grows at once and shrinks over a second so the picture never pumps; a unit with a nominal span (0…1, −1…1) keeps at least that span.booltrue
Y MinManual range, bottom (both axes).float-1
Y MaxManual range, top (both axes). For a Heatmap this is the colour range.float1
X AutoHorizontal range from the data: the time window, the spectrum’s span, the distribution’s values, or channel 1’s range for Scatter/XY.booltrue
X MinManual horizontal range, left. Time runs in seconds ago (−2 = two seconds before now), spectra in Hz, Scatter/XY in channel 1’s unit.float-4
X MaxManual horizontal range, right (0 = now on a time axis).float0
RampHeatmap colours: Viridis, Magma, Inferno, Plasma, Grayscale, a blue–red diverging map for signed data, or the green Phosphor.int0
Ramp ColorsA Gradient node’s output: its colours become the Heatmap ramp and the colours of a Signal’s channels (or of the four series).structure—
Y LogLogarithmic value axis (decade ticks). Values at or below zero cannot be shown; the range floor becomes a small positive number.boolfalse
X LogLogarithmic horizontal axis for spectra, distributions and indices (not time) — 1 Hz to 10 kHz in equal decades.boolfalse
TriggerThe oscilloscope’s way of standing still. Auto: the time axis shifts so the latest level crossing of series A sits at 0, free-running when there is none. Normal: the picture freezes at the crossing and only a new crossing after Holdoff replaces it. Single: freezes once; Arm re-arms.int0
Trigger LevelThe value series A must cross (in its unit).float0
Trigger EdgeRising: from below to above the level. Falling: the other way.int0
Trigger PositionWhere the trigger sits across the window: 0.2 = a fifth of the window before it, the rest after.float0.2
HoldoffAfter a trigger, ignore crossings for this many ms — so a burst triggers once.float0
ArmRising edge re-arms a Single trigger (and drops the frozen picture).boolfalse
SelectionShows a band over the horizontal axis and reports the numbers of series A inside it (Selection Stats JSON, Selection Values = mean, min, max, rms).boolfalse
Sel StartLeft edge of the band, 0…1 across the plot area. Cable a Mouse, a Timeline, anything.float0.3
Sel EndRight edge of the band, 0…1.float0.6
InteractiveDrag the band in the render window: the body moves it, either edge resizes it (see the gesture reference).boolfalse
Line WidthTrace thickness in Grafit units (0.006 ≈ 3 px at 1080p).float0.006
PersistencePhosphor trail: 0 = plain chart, 0.9 = a trail of about a second, 1 = never fades. Frame-rate independent.float0
GlowBloom on the traces (0 = off); the same post-process the particle systems use.float0
DwellXY only: how much brightness follows the beam’s dwell — 0 a uniform line, 1 a CRT that is bright where the signal moves slowly and faint on fast jumps (oscilloscope music’s retraced jumps vanish).float0
Ridge HeightRidgeline: the share of the panel the peaks may take (0…1). The rows share the rest as their baselines, back to front.float0.4
PerspectiveRidgeline: how much narrower the back row is than the front (0 = a flat stack, 0.2 = a gentle tilt, 0.6 = a steep floor).float0.2
Show GridGrid lines at the nice ticks; the zero line is brighter.booltrue
Show LabelsTick labels with the unit and an SI prefix (12 000 µV reads 12 mV), the legend, and the cursor readout — all inside the image.booltrue
Show CursorA vertical readout line; each series’ value at the cursor is printed and sent to Cursor Values.boolfalse
CursorPosition of the cursor across the horizontal axis, 0 = left, 1 = right (now).float0.5

Outputs

PortType
Imageimage
WidthPlot width in Grafit units (2 = the full short edge).float
HeightPlot height in Grafit units.float
Pointsstructure
Cursor Valuesfloat
Triggeredbool
Selection Statsjson
Selection Valuesfloat

How It Works

Plot draws up to four Signals as a real chart, entirely inside its own image — so recordings, Canvas transforms and Video Recorder all keep the axes, the labels and the legend.

Eleven kinds: Line, Area, Stem, Bars, Scatter, XY (the vector scope), Heatmap (rows are channels, colour is the value — a spectrogram, a correlation matrix, a multi-channel raster), Polar (the window wrapped around a clock), Radar (the channels' latest values on spokes), Sphere (any 3-channel Signal as a point on the unit sphere with a fading trail — the Bloch sphere) and Ridgeline (a matrix as stacked mountain lines from the back to the front, the front hiding the back — the pulsar plot).

Tick labels are written in the data's own unit with an SI prefix, so 12 000 µV reads as 12 mV, and a second unit family gets the right-hand axis by itself. Value ranges follow the data with hysteresis — they grow at once and shrink over a second, so the picture never pumps — or are set by hand. Log axes are available for values and for spectra.

It is also an oscilloscope. Trigger: Auto shifts the time axis so the latest level crossing of series A sits at zero and a periodic signal stands still; Normal freezes at the crossing and re-triggers after a holdoff; Single freezes once until Arm fires. Every trigger leaves as a one-frame pulse on Triggered.

A selection band over the time or frequency axis reports mean, min, max and RMS of what is inside it, and with Interactive on it can be dragged in the render window. Styles are Clean, Phosphor, Paper (ink on grained paper) and Cyber; Persistence is a real frame-rate-independent phosphor trail, Dwell makes slow strokes bright and fast jumps faint, and Glow is the shared bloom. The drawn trace also leaves as Points, so Lines Visualize, Plexus and the particles can take the shape of a chart as material.

Long windows are decimated to the pixel columns with min/max per column — the EEG Plot technique — so a 48 kHz audio window costs the same as a 100 Hz mouse.

Use Cases

  • See what a signal is doing — The default answer to "is this value behaving".
  • An oscilloscope — Trigger: Auto on an audio window makes a waveform stand still.
  • Spectra and spectrograms — Spectrum into a Line plot against Hz; Signal Spectrogram into a Heatmap.
  • Oscilloscope music — XY with Phosphor, Persistence and Dwell is the vector-scope picture Scope Voice draws.
  • The pulsar plot — Data Art into the Ridgeline kind, white on black.
  • Chart as material — Points out of the plot into Plexus or a particle field: the data becomes the artwork.

Tips

  • Turn X Auto off when the horizontal range matters — a spectrum stuck at 0…50 Hz is almost always this.
  • Ramp Colors takes a Gradient node's cable and recolours a heatmap or the channels of a signal.
  • Persistence is frame-rate independent, so a trail looks the same at 30 and 120 fps.
  • Use one Plot per unit family when you can; two families on one chart is possible but harder to read.
  • Selection Stats comes out as JSON — cable it into Value Text for a caption that says what the band contains.
  • Interactive selection needs the render window: the body of the band moves it, the edges resize it.

Open Plot in the interactive catalog →

Plot is one of 381 nodes in Grafit Pro.

Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.

More Data Lab nodes