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
| Port | Type | Default |
|---|---|---|
| Enable | bool | true |
| 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. | int | 0 |
| 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. | int | 0 |
| XCentre of the plot, Grafit units. | float | 0 |
| YCentre of the plot, Grafit units. | float | 0 |
| WidthPlot width in Grafit units (2 = the full short edge). | float | 2.0 |
| HeightPlot height in Grafit units. | float | 1.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. | float | 0 |
| 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. | bool | true |
| Y MinManual range, bottom (both axes). | float | -1 |
| Y MaxManual range, top (both axes). For a Heatmap this is the colour range. | float | 1 |
| 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. | bool | true |
| 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). | float | 0 |
| RampHeatmap colours: Viridis, Magma, Inferno, Plasma, Grayscale, a blue–red diverging map for signed data, or the green Phosphor. | int | 0 |
| 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. | bool | false |
| X LogLogarithmic horizontal axis for spectra, distributions and indices (not time) — 1 Hz to 10 kHz in equal decades. | bool | false |
| 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. | int | 0 |
| Trigger LevelThe value series A must cross (in its unit). | float | 0 |
| Trigger EdgeRising: from below to above the level. Falling: the other way. | int | 0 |
| Trigger PositionWhere the trigger sits across the window: 0.2 = a fifth of the window before it, the rest after. | float | 0.2 |
| HoldoffAfter a trigger, ignore crossings for this many ms — so a burst triggers once. | float | 0 |
| ArmRising edge re-arms a Single trigger (and drops the frozen picture). | bool | false |
| 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). | bool | false |
| Sel StartLeft edge of the band, 0…1 across the plot area. Cable a Mouse, a Timeline, anything. | float | 0.3 |
| Sel EndRight edge of the band, 0…1. | float | 0.6 |
| InteractiveDrag the band in the render window: the body moves it, either edge resizes it (see the gesture reference). | bool | false |
| Line WidthTrace thickness in Grafit units (0.006 ≈ 3 px at 1080p). | float | 0.006 |
| PersistencePhosphor trail: 0 = plain chart, 0.9 = a trail of about a second, 1 = never fades. Frame-rate independent. | float | 0 |
| GlowBloom on the traces (0 = off); the same post-process the particle systems use. | float | 0 |
| 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). | float | 0 |
| Ridge HeightRidgeline: the share of the panel the peaks may take (0…1). The rows share the rest as their baselines, back to front. | float | 0.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). | float | 0.2 |
| Show GridGrid lines at the nice ticks; the zero line is brighter. | bool | true |
| 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. | bool | true |
| Show CursorA vertical readout line; each series’ value at the cursor is printed and sent to Cursor Values. | bool | false |
| CursorPosition of the cursor across the horizontal axis, 0 = left, 1 = right (now). | float | 0.5 |
Outputs
| Port | Type |
|---|---|
| Image | image |
| WidthPlot width in Grafit units (2 = the full short edge). | float |
| HeightPlot height in Grafit units. | float |
| Points | structure |
| Cursor Values | float |
| Triggered | bool |
| Selection Stats | json |
| Selection Values | float |
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.