Skip to content
Hannes Suhr edited this page Mar 9, 2026 · 19 revisions

FastPlot

Ultra-fast time series plotting for MATLAB and GNU Octave

FastPlot enables fluid interactive visualization of massive datasets (1K to 100M+ points). It dynamically downsamples data to screen resolution on every zoom/pan interaction, rendering only ~4,000 points regardless of dataset size.


Key Stats

Metric Value
10M point zoom cycle 4.7 ms (212 effective FPS)
Point reduction 99.96% (10M to ~4K displayed)
GPU memory 0.06 MB vs 153 MB for standard plot()
Implementation Pure MATLAB with optional C MEX acceleration (AVX2/NEON SIMD)

Features

  • Per-pixel MinMax and LTTB downsampling
  • Lazy multi-resolution pyramid cache
  • MEX acceleration with SIMD (AVX2/NEON) -- optional, auto-fallback to pure MATLAB
  • Dashboard layouts (FastPlotFigure tiles, FastPlotDock tabs)
  • Interactive toolbar (data cursor, crosshair, grid/legend toggle, autoscale, export)
  • 5 built-in themes (default, dark, light, industrial, scientific)
  • Linked axes with synchronized zoom/pan
  • Datetime X-axis with auto-formatting tick labels
  • NaN gap handling and uneven sampling support
  • Sensor objects with state-dependent thresholds and violation markers
  • Event detection with Gantt-style viewer UI
  • Live mode with file polling

Quick Start

setup;
fp = FastPlot('Theme', 'dark');
x = linspace(0, 100, 1e7);
y = sin(x) + 0.1*randn(size(x));
fp.addLine(x, y, 'DisplayName', 'Sensor');
fp.addThreshold(0.8, 'Direction', 'upper', 'ShowViolations', true);
fp.render();

Requirements

  • MATLAB R2020b+ or GNU Octave 7+
  • C compiler (optional) for MEX acceleration
  • No toolbox dependencies

Navigation

Clone this wiki locally