src/plot.rs

changeset 21
0771706f472f
parent 0
eb3c7813b67a
equal deleted inserted replaced
20:90f77ad9a98d 21:0771706f472f
14 use alg_tools::lingrid::LinGrid; 14 use alg_tools::lingrid::LinGrid;
15 use alg_tools::mapping::RealMapping; 15 use alg_tools::mapping::RealMapping;
16 use alg_tools::loc::Loc; 16 use alg_tools::loc::Loc;
17 use alg_tools::bisection_tree::Bounds; 17 use alg_tools::bisection_tree::Bounds;
18 use alg_tools::maputil::map4; 18 use alg_tools::maputil::map4;
19 use alg_tools::tabledump::write_csv; 19 use alg_tools::tabledump::{write_csv, TableDump};
20 use crate::measures::*; 20 use crate::measures::*;
21 21
22 /// Default RGB ramp from [`colorbrewer`]. 22 /// Default RGB ramp from [`colorbrewer`].
23 /// 23 ///
24 /// This is a tuple of parameters to [`colorbrewer::get_color_ramp`]. 24 /// This is a tuple of parameters to [`colorbrewer::get_color_ramp`].
76 let end = grid.end[0].as_(); 76 let end = grid.end[0].as_();
77 let m = μ.iter_masses().fold(F::ZERO, |m, α| m.max(α)); 77 let m = μ.iter_masses().fold(F::ZERO, |m, α| m.max(α));
78 let s = μ.iter_masses().fold(F::ZERO, |m, α| m.add(α)); 78 let s = μ.iter_masses().fold(F::ZERO, |m, α| m.add(α));
79 let mut spike_scale = F::ONE; 79 let mut spike_scale = F::ONE;
80 80
81 μ.write_csv(format!("{filename}_mu.txt").into()).expect("CSV save error");
82
81 let mut plotter = poloto::plot( 83 let mut plotter = poloto::plot(
82 "f", "x", 84 "f", "x",
83 format!("f(x); spike max={:.4}, n={}, ∑={:.4}", m, μ.len(), s) 85 format!("f(x); spike max={:.4}, n={}, ∑={:.4}", m, μ.len(), s)
84 ).move_into(); 86 ).move_into();
85 87
86 if let Some(ω) = ω0 { 88 if let Some(ω) = ω0 {
87 let graph_ω = grid.into_iter().map(|x@Loc([x0]) : Loc<F, 1>| { 89 let graph_ω = grid.into_iter().map(|x@Loc([x0]) : Loc<F, 1>| {
88 [x0.as_(), ω.apply(&x).as_()] 90 [x0.as_(), ω.apply(&x).as_()]
89 }); 91 });
90 plotter.line(ω_explanation.as_str(), graph_ω.clone()); 92 plotter.line(ω_explanation.as_str(), graph_ω.clone());
91 // let csv_f = format!("{}.txt", filename); 93 write_csv(graph_ω, format!("{filename}_omega.txt")).expect("CSV save error");
92 // write_csv(graph_ω, csv_f).expect("CSV save error");
93 } 94 }
94 95
95 let graph_g = grid.into_iter().map(|x@Loc([x0]) : Loc<F, 1>| { 96 let graph_g = grid.into_iter().map(|x@Loc([x0]) : Loc<F, 1>| {
96 [x0.as_(), g.apply(&x).as_()] 97 [x0.as_(), g.apply(&x).as_()]
97 }); 98 });
98 plotter.line(g_explanation.as_str(), graph_g.clone()); 99 plotter.line(g_explanation.as_str(), graph_g.clone());
99 // let csv_f = format!("{}.txt", filename); 100 write_csv(graph_g, format!("{filename}_g.txt")).expect("CSV save error");
100 // write_csv(graph_g, csv_f).expect("CSV save error");
101 101
102 bnd0.map(|bnd| { 102 bnd0.map(|bnd| {
103 let upperb = bnd.upper().as_(); 103 let upperb = bnd.upper().as_();
104 let lowerb = bnd.lower().as_(); 104 let lowerb = bnd.lower().as_();
105 let upper : [[f64; 2]; 2] = [[start, upperb], [end, upperb]]; 105 let upper : [[f64; 2]; 2] = [[start, upperb], [end, upperb]];
106 let lower = [[start, lowerb], [end, lowerb]]; 106 let lower = [[start, lowerb], [end, lowerb]];
107 spike_scale *= bnd.upper(); 107 spike_scale *= bnd.upper();
108
109 write_csv([[lowerb, upperb]].into_iter(),
110 format!("{filename}_bounds.txt")).expect("CSV save error");
108 111
109 plotter.line("upper bound", upper) 112 plotter.line("upper bound", upper)
110 .line("lower bound", lower) 113 .line("lower bound", lower)
111 .ymarker(lowerb) 114 .ymarker(lowerb)
112 .ymarker(upperb); 115 .ymarker(upperb);

mercurial