1use ggplot_rs::prelude::*;
2use polars::prelude::*;
3
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5 let value: Vec<f64> = (0..200_u64)
7 .map(|i| {
8 let r = ((i.wrapping_mul(1103515245).wrapping_add(12345)) % (1 << 16)) as f64
9 / (1u64 << 16) as f64;
10 if i < 100 {
11 3.0 + r * 4.0
12 } else {
13 5.0 + r * 4.0
14 }
15 })
16 .collect();
17 let group: Vec<&str> = (0..200)
18 .map(|i| if i < 100 { "Group A" } else { "Group B" })
19 .collect();
20
21 let df = df! {
22 "value" => value,
23 "group" => group,
24 }?;
25
26 GGPlot::new(df)
27 .aes(Aes::new().x("value").color("group"))
28 .geom_density()
29 .title("Density Plot by Group")
30 .xlab("Value")
31 .ylab("Density")
32 .save("density.svg")?;
33
34 println!("Saved density.svg");
35 Ok(())
36}