Plot Pane

A rich multi-series time-series charting pane for quantitative analysis. Each series is independently configured with its own plot type, data source, styling, and statistical overlays. The Plot pane supports dual Y-axes, threshold lines, vertical event markers, and both live and historical data backends.

SeriesConfig

FieldDescription
source_idData source identifier (layer or ClickHouse query)
x / y fieldsDot-path to the X and Y axis values in the data
colorSeries color (hex or named)
plot_typeScatter, Line, Area, or Histogram
line_styleSolid, Dashed, or Dotted
marker_shapePoint marker shape for Scatter and Line modes
smoothing_windowRolling average window size for noise reduction
aggregateMean, Sum, Min, Max, or Count
normalizeMinMax, ZScore, or Percent normalization
show_trend_lineOverlay a linear regression trend line
show_std_bandsDisplay standard deviation bands around the series
secondary_axisPlot this series on the right Y-axis
histogram_binsNumber of bins when plot_type is Histogram

Data Sources

  • LayerStore (Live): Stream real-time entity snapshots for live charting
  • ClickHouse (Historical): Query archived data for long-range analysis

View Modes and Annotations

  • Free: Manual pan and zoom on both axes
  • Fit: Auto-fit all data into the visible area
  • Follow: Sliding window that tracks the latest data in real time
  • Thresholds: Horizontal lines at critical values (e.g. alarm limits)
  • VLines: Vertical event markers for incidents or state changes
  • Config Panel: Per-series configuration accessible from the plot toolbar

Keyboard Shortcuts

View
F
Fit all data to view
R
Reset zoom to default
P
Toggle pause (freeze live updates)
Ctrl + L
Toggle legend visibility
Ctrl + C
Toggle crosshair mode

YAML Configuration

yaml PlotConfig auto-generated

Field Type Default Description
series Vec<SeriesConfig> []
time_window TimeWindow "None"
max_history usize 2000
y_label String
x_label String
y_label_right String
y_range [f64; 2]
x_range [f64; 2]
y_range_right [f64; 2]
view_mode ViewMode "Fit"
show_legend bool true
show_crosshair bool false
show_zero_line bool false
include_x_zero bool false
log_scale_y bool false
thresholds Vec<ThresholdLine> []
vlines Vec<VLineMarker> [] Vertical event markers drawn at fixed X values.

yaml SeriesConfig auto-generated

Field Type Default Description
source_id String "tracks"
x_field String "lon"
y_field String "lat"
label String
color egui::Color32 "from_rgb(50, 230, 130)"
plot_type PlotType "Scatter"
entity_filter String
point_radius f32 3.0
line_width f32 2.0
visible bool true
line_style SeriesLineStyle "Solid"
marker_shape SeriesMarkerShape "Circle"
smoothing_window usize
aggregate AggregateMode "Mean"
normalize NormalizeMode "None"
show_trend_line bool false
show_std_bands bool false
secondary_axis bool false
entity_limit usize
downsample_to usize
opacity f32 1.0 Overall alpha multiplier (0.0–1.0). Affects line, points, and fill.
fill_opacity f32 0.15 Fill opacity for Area plot type (0.0–1.0).
histogram_bins usize Fixed histogram bin count. None = Sturges' rule.
Example YAML
plot:
  max_history: 5000
  view_mode: follow
  y_label: "Temperature (C)"
  y_label_right: "Pressure (kPa)"
  show_legend: true
  series:
    - source_id: sensor_feed
      x_field: timestamp
      y_field: temperature
      label: "Temp Sensor A"
      color: "#4FC3F7FF"
      plot_type: Line
      show_trend_line: true
    - source_id: sensor_feed
      x_field: timestamp
      y_field: pressure
      label: "Chamber Pressure"
      color: "#FF8A65FF"
      plot_type: Area
      secondary_axis: true

Questions?

Reach out for help with integration, deployment, or custom domain codecs.