3 releases
0.1.2 | Mar 22, 2023 |
---|---|
0.1.1 | Mar 22, 2023 |
0.1.0 | Mar 22, 2023 |
#239 in Visualization
13KB
152 lines
Downsample Oxide
Largest Triangle Three Buckets implementation based off https://github.com/jeromefroe/lttb-rs
Documentation
From Jerome's Readme:
An implementation of the largest triangle three buckets (lttb) algorithm for time series downsampling as described in Downsampling Time Series for Visual Representation. This is a Rust port of the original Javascript implementation.
This implementation is heavily based and inspired from his original. Some QOL updates and datatype differences, such as using rust_decimal
and offering output types to work generically or with chrono
or time
(both behind features).
Example
use downsample_oxide::*;
use chrono::*;
fn first_day_of_month(month_num: u32) -> DateTime<Utc> {
NaiveDate::from_ymd_opt(2022, month_num, 1)
.unwrap()
.and_time(NaiveTime::default())
.and_local_timezone(Utc)
.unwrap()
}
fn main() {
let dps = Vec::from([
DataPoint::new(first_day_of_month(1), Decimal::from(10)),
DataPoint::new(first_day_of_month(2), Decimal::from(12)),
DataPoint::new(first_day_of_month(3), Decimal::from(8)),
DataPoint::new(first_day_of_month(4), Decimal::from(10)),
DataPoint::new(first_day_of_month(5), Decimal::from(12)),
]);
let output = dps.downsample(3);
}
Dependencies
~0.6–1.4MB
~26K SLoC