3 个版本
0.1.2 | 2023 年 3 月 22 日 |
---|---|
0.1.1 | 2023 年 3 月 22 日 |
0.1.0 | 2023 年 3 月 22 日 |
#401 在 可视化
39 每月下载次数
13KB
152 代码行
Downsample Oxide
基于 https://github.com/jeromefroe/lttb-rs 的最大三角形三个桶实现
文档
这是一个实现了时间序列下采样的大三角形三个桶(lttb)算法,如《用于视觉表示的时间序列下采样》所述。这是从原始的 JavaScript 实现迁移到 Rust 的版本。
这个实现很大程度上基于他的原始版本,并进行了一些 QOL 更新和数据类型差异,例如使用 rust_decimal
,并提供输出类型以通用方式或与 chrono
或 time
(都位于功能之后)一起使用。
示例
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);
}
依赖项
~0.6–1.4MB
~26K SLoC