1use ggplot_rs::prelude::*;
2use polars::prelude::*;
3
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5 let values: Vec<f64> = (0..1000)
7 .map(|i: i32| {
8 let r1 = ((i * 1237 + 5678) % 1000) as f64 / 1000.0;
10 let r2 = ((i * 8731 + 4321) % 1000) as f64 / 1000.0;
11 let r3 = ((i * 4567 + 8901) % 1000) as f64 / 1000.0;
12 let r4 = ((i * 6543 + 2109) % 1000) as f64 / 1000.0;
13 let r5 = ((i * 3571 + 7654) % 1000) as f64 / 1000.0;
14 let r6 = ((i * 9137 + 3456) % 1000) as f64 / 1000.0;
15 (r1 + r2 + r3 + r4 + r5 + r6 - 3.0) * 2.0
17 })
18 .collect();
19
20 let df = df! {
21 "measurement" => values,
22 }?;
23
24 GGPlot::new(df)
25 .aes(Aes::new().x("measurement"))
26 .geom_histogram_with(GeomHistogram {
27 bins: 25,
28 ..Default::default()
29 })
30 .title("Distribution of Measurements")
31 .xlab("Value")
32 .ylab("Frequency")
33 .save("histogram.svg")?;
34
35 println!("Saved histogram.svg");
36 Ok(())
37}