1- use std:: sync:: LazyLock ;
2- use std:: { io:: Cursor , ops:: Range } ;
1+ use crate :: PlotError ;
32use bencher_json:: { project:: perf:: JsonPerfMetrics , JsonPerf } ;
43use bencher_json:: { JsonMeasure , Units } ;
54use chrono:: { DateTime , Duration , Utc } ;
65use image:: { GenericImageView , ImageBuffer } ;
76use ordered_float:: { FloatCore , OrderedFloat } ;
7+ use plotters:: chart:: { ChartContext , DualCoordChartContext } ;
8+ use plotters:: coord:: ranged1d:: { DefaultFormatting , KeyPointHint } ;
9+ use plotters:: prelude:: { Cartesian2d , IntoLogRange , LogCoord , RangedDateTime } ;
810use plotters:: {
911 coord:: { types:: RangedCoordf64 , Shift } ,
1012 prelude:: {
@@ -14,10 +16,8 @@ use plotters::{
1416 series:: LineSeries ,
1517 style:: { Color , FontFamily , RGBColor , ShapeStyle , WHITE } ,
1618} ;
17- use plotters:: chart:: { ChartContext , DualCoordChartContext } ;
18- use plotters:: coord:: ranged1d:: { DefaultFormatting , KeyPointHint } ;
19- use plotters:: prelude:: { Cartesian2d , IntoLogRange , LogCoord , RangedDateTime } ;
20- use crate :: PlotError ;
19+ use std:: sync:: LazyLock ;
20+ use std:: { io:: Cursor , ops:: Range } ;
2121
2222const IMG_WIDTH : u32 = 1024 ;
2323const IMG_HEIGHT : u32 = 768 ;
@@ -187,18 +187,15 @@ impl Ranged for RangedCoord {
187187
188188impl From < Range < f64 > > for RangedCoord {
189189 fn from ( range : Range < f64 > ) -> Self {
190- let relative_difference = if range. start == 0.0 {
191- range. end
192- } else {
190+ let relative_difference = if range. start . is_normal ( ) {
193191 range. end / range. start
192+ } else {
193+ range. end
194194 } ;
195- let use_log_scaling = relative_difference >= 10.0 ;
196- if use_log_scaling {
197- let range_coord: LogCoord < f64 > = range. log_scale ( ) . into ( ) ;
198- RangedCoord :: Log ( range_coord)
195+ if relative_difference < 10.0 {
196+ RangedCoord :: Linear ( range. into ( ) )
199197 } else {
200- let range_coord: RangedCoordf64 = range. into ( ) ;
201- RangedCoord :: Linear ( range_coord)
198+ RangedCoord :: Log ( range. log_scale ( ) . into ( ) )
202199 }
203200 }
204201}
@@ -813,7 +810,8 @@ mod test {
813810
814811 pub const PERF_DUAL_AXES_DOT_JSON : & str = include_str ! ( "../perf_dual_axes.json" ) ;
815812 static JSON_PERF_DUAL_AXES : LazyLock < JsonPerf > = LazyLock :: new ( || {
816- serde_json:: from_str ( PERF_DUAL_AXES_DOT_JSON ) . expect ( "Failed to serialize perf dual axes JSON" )
813+ serde_json:: from_str ( PERF_DUAL_AXES_DOT_JSON )
814+ . expect ( "Failed to serialize perf dual axes JSON" )
817815 } ) ;
818816
819817 pub const DECIMAL_DOT_JSON : & str = include_str ! ( "../decimal.json" ) ;
0 commit comments