Expand description
Data aggregation and downsampling for efficient chart rendering.
This module provides efficient algorithms for reducing the number of data points while preserving important characteristics of the data. This is crucial for:
- Large datasets that exceed display resolution
- Real-time streaming data that needs performance optimization
- Memory-constrained embedded environments
- Maintaining visual fidelity while reducing computational load
§Aggregation Strategies
Different strategies for combining multiple data points into a single representative point:
§Min-Max Aggregation
Preserves extremes in the data, essential for identifying peaks and troughs:
use embedded_charts::prelude::*;
use embedded_charts::data::aggregation::*;
let data = data_points![(0.0, 10.0), (1.0, 25.0), (2.0, 5.0), (3.0, 20.0)];
let config = AggregationConfig {
strategy: AggregationStrategy::MinMax,
target_points: 2,
..Default::default()
};
let aggregated: StaticDataSeries<_, 8> = data.aggregate(&config)?;
// Result preserves the minimum (5.0) and maximum (25.0) values§Statistical Aggregation
Uses statistical measures to represent groups of data points:
use embedded_charts::prelude::*;
use embedded_charts::data::aggregation::*;
let data = data_points![(0.0, 10.0), (1.0, 20.0), (2.0, 30.0), (3.0, 40.0)];
let config = AggregationConfig {
strategy: AggregationStrategy::Mean,
target_points: 2,
..Default::default()
};
let mean_aggregated: StaticDataSeries<_, 8> = data.aggregate(&config)?;§Downsampling Algorithms
§Largest Triangle Three Buckets (LTTB)
Advanced algorithm that preserves visual characteristics:
use embedded_charts::prelude::*;
use embedded_charts::data::aggregation::*;
let data = data_points![(0.0, 10.0), (1.0, 25.0), (2.0, 5.0), (3.0, 20.0)];
let config = DownsamplingConfig {
max_points: 50,
..Default::default()
};
let downsampled: StaticDataSeries<_, 8> = data.downsample_lttb(&config)?;§Uniform Downsampling
Simple algorithm that takes every Nth point:
use embedded_charts::prelude::*;
use embedded_charts::data::aggregation::*;
let data = data_points![(0.0, 10.0), (1.0, 25.0), (2.0, 5.0), (3.0, 20.0)];
let config = DownsamplingConfig {
max_points: 2,
..Default::default()
};
let downsampled: StaticDataSeries<_, 8> = data.downsample_uniform(&config)?;§Memory Efficiency
All aggregation operates with bounded memory usage:
- Static allocation for intermediate calculations
- Configurable output capacity
- No heap allocation in no_std environments
Structs§
- Aggregation
Config - Configuration for data aggregation operations
- Downsampling
Config - Configuration for downsampling operations
- Group
Stats - Statistics calculated for a group of data points during aggregation
Enums§
- Aggregation
Strategy - Strategy for aggregating multiple data points into a single representative point
Traits§
- Data
Aggregation - Trait providing aggregation and downsampling capabilities for data series