use ruviz::prelude::*;
fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
println!("Creating subplot figure with 2x2 grid...");
std::fs::create_dir_all("generated/examples").ok();
let x1 = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let y1 = vec![2.0, 4.0, 3.0, 5.0, 4.5];
let x2 = vec![0.5, 1.5, 2.5, 3.5, 4.5];
let y2 = vec![1.0, 3.0, 2.5, 4.0, 3.5];
let categories = vec!["A", "B", "C", "D"];
let values = vec![10.0, 15.0, 8.0, 12.0];
let x3 = vec![0.0, 1.0, 2.0, 3.0, 4.0, 5.0];
let y3 = vec![0.0, 1.0, 4.0, 9.0, 16.0, 25.0];
let plot1: Plot = Plot::new()
.title("Line Plot")
.xlabel("X values")
.ylabel("Y values")
.line(&x1, &y1)
.into();
let plot2: Plot = Plot::new()
.title("Scatter Plot")
.xlabel("X values")
.ylabel("Y values")
.scatter(&x2, &y2)
.into();
let plot3: Plot = Plot::new()
.title("Bar Plot")
.xlabel("Categories")
.ylabel("Values")
.bar(&categories, &values)
.into();
let plot4: Plot = Plot::new()
.title("Quadratic Function")
.xlabel("X values")
.ylabel("Y = X^2")
.line(&x3, &y3)
.into();
let figure = subplots(2, 2, 800, 600)?
.suptitle("Subplot Example - Multiple Plot Types")
.hspace(0.3)
.wspace(0.3)
.subplot(0, 0, plot1)?
.subplot(0, 1, plot2)?
.subplot(1, 0, plot3)?
.subplot(1, 1, plot4)?;
figure.save("generated/examples/subplot_example.png")?;
println!("Subplot figure saved to: generated/examples/subplot_example.png");
Ok(())
}