1
1
use log;
2
- const PLOT_WIDTH : usize = 40 ;
2
+ use std:: fmt:: Write ;
3
+
4
+ const PLOT_WIDTH : usize = 80 ;
5
+
6
+ fn generate_axis_labels ( minima : f64 , maxima : f64 ) -> String {
7
+ let mut labels = String :: new ( ) ;
8
+ write ! ( labels, "{:<10.2}" , minima) . unwrap ( ) ;
9
+ write ! (
10
+ labels,
11
+ "{:^width$.2}" ,
12
+ ( minima + maxima) / 2.0 ,
13
+ width = PLOT_WIDTH - 20
14
+ )
15
+ . unwrap ( ) ;
16
+ write ! ( labels, "{:>10.2}" , maxima) . unwrap ( ) ;
17
+ labels
18
+ }
3
19
4
20
pub ( crate ) fn render_plot ( minima : f64 , q1 : f64 , median : f64 , q3 : f64 , maxima : f64 ) -> String {
5
- // TODO print axis labels
6
21
let value_range = maxima - minima;
7
22
let quartile_0 = q1 - minima;
8
23
let quartile_1 = median - q1;
@@ -20,6 +35,10 @@ pub(crate) fn render_plot(minima: f64, q1: f64, median: f64, q3: f64, maxima: f6
20
35
plot. push_str ( "-" . repeat ( ( quartile_3 * scale_factor) as usize ) . as_str ( ) ) ;
21
36
plot. push ( '|' ) ;
22
37
38
+ let axis_labels = generate_axis_labels ( minima, maxima) ;
39
+ plot. push ( '\n' ) ;
40
+ plot. push_str ( & axis_labels) ;
41
+
23
42
log:: debug!( "fn input: {minima}, {q1}, {median}, {q3}, {maxima}" ) ;
24
43
log:: debug!( "quartiles: {quartile_0}, {quartile_1}, {quartile_2}, {quartile_3}" ) ;
25
44
log:: debug!( "value range: {value_range}" ) ;
0 commit comments