1use esoc_chart::v2::{line, Chart, Layer, MarkType};
5
6fn main() -> esoc_chart::error::Result<()> {
7 let x: Vec<f64> = (0..100).map(|i| f64::from(i) * 0.1).collect();
9 let y_sin: Vec<f64> = x.iter().map(|&xi| xi.sin()).collect();
10 let y_cos: Vec<f64> = x.iter().map(|&xi| xi.cos()).collect();
11
12 let svg = line(&x, &y_sin)
14 .title("sin(x)")
15 .x_label("x")
16 .y_label("amplitude")
17 .to_svg()?;
18
19 std::fs::write("basic_line.svg", &svg)?;
20 println!("Saved basic_line.svg ({} bytes)", svg.len());
21
22 let chart = Chart::new()
24 .layer(Layer::new(MarkType::Line).with_x(x.clone()).with_y(y_sin))
25 .layer(Layer::new(MarkType::Line).with_x(x).with_y(y_cos))
26 .title("sin(x) and cos(x)")
27 .x_label("x")
28 .y_label("amplitude")
29 .size(900.0, 500.0);
30
31 let svg2 = chart.to_svg()?;
32 std::fs::write("multi_line.svg", &svg2)?;
33 println!("Saved multi_line.svg ({} bytes)", svg2.len());
34
35 Ok(())
36}