Skip to main content

continuous_color/
continuous_color.rs

1use ggplot_rs::prelude::*;
2use polars::prelude::*;
3
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5    // Generate scatter data with a continuous variable for color
6    let x: Vec<f64> = (0..200)
7        .map(|i| {
8            let t = i as f64 * 0.05;
9            t.cos() * (1.0 + t * 0.3)
10        })
11        .collect();
12    let y: Vec<f64> = (0..200)
13        .map(|i| {
14            let t = i as f64 * 0.05;
15            t.sin() * (1.0 + t * 0.3)
16        })
17        .collect();
18    let z: Vec<f64> = (0..200).map(|i| i as f64 * 0.05).collect();
19
20    let df = df! {
21        "x" => &x,
22        "y" => &y,
23        "z" => &z,
24    }?;
25
26    // Default blue-to-red gradient
27    GGPlot::new(df.clone())
28        .aes(Aes::new().x("x").y("y").color("z"))
29        .geom_point()
30        .title("Continuous Color (default gradient)")
31        .xlab("X")
32        .ylab("Y")
33        .save("continuous_color.svg")?;
34
35    println!("Saved continuous_color.svg");
36
37    // Custom gradient: dark blue to yellow
38    GGPlot::new(df)
39        .aes(Aes::new().x("x").y("y").color("z"))
40        .geom_point()
41        .scale_color_gradient(RGBAColor::new(10, 30, 100), RGBAColor::new(255, 230, 50))
42        .title("Continuous Color (custom gradient)")
43        .xlab("X")
44        .ylab("Y")
45        .save("continuous_color_custom.svg")?;
46
47    println!("Saved continuous_color_custom.svg");
48    Ok(())
49}