@@ -98,6 +98,7 @@ export default function ChartContainer({
9898 relativeBaseline = 0.002 ,
9999 absoluteBaseline = 0.005 ,
100100 xRange = { min : undefined , max : undefined } ,
101+ yRange = { min : undefined , max : undefined } ,
101102 onXRangeChange,
102103 onMaxStepChange
103104} ) {
@@ -393,6 +394,24 @@ export default function ChartContainer({
393394 return { min : niceMin , max : niceMax , step } ;
394395 } , [ ] ) ;
395396
397+ const getFinalYScale = useCallback ( ( autoScale ) => {
398+ const hasManualMin = Number . isFinite ( yRange ?. min ) ;
399+ const hasManualMax = Number . isFinite ( yRange ?. max ) ;
400+
401+ const min = hasManualMin ? yRange . min : autoScale . min ;
402+ const max = hasManualMax ? yRange . max : autoScale . max ;
403+
404+ if ( ! Number . isFinite ( min ) || ! Number . isFinite ( max ) || min >= max ) {
405+ return autoScale ;
406+ }
407+
408+ return {
409+ ...autoScale ,
410+ min,
411+ max
412+ } ;
413+ } , [ yRange ] ) ;
414+
396415 const chartOptions = useMemo ( ( ) => ( {
397416 responsive : true ,
398417 maintainAspectRatio : false ,
@@ -668,7 +687,8 @@ export default function ChartContainer({
668687 } ) ;
669688 } ) ;
670689
671- const yRange = calculateNiceScale ( min , max ) ;
690+ const autoYRange = calculateNiceScale ( min , max ) ;
691+ const finalYRange = getFinalYScale ( autoYRange ) ;
672692
673693 const options = {
674694 ...chartOptions ,
@@ -690,10 +710,10 @@ export default function ChartContainer({
690710 ...chartOptions . scales ,
691711 y : {
692712 ...chartOptions . scales . y ,
693- min : yRange . min ,
694- max : yRange . max ,
713+ min : finalYRange . min ,
714+ max : finalYRange . max ,
695715 ticks : {
696- stepSize : yRange . step ,
716+ stepSize : finalYRange . step ,
697717 callback : ( value ) => Number ( value . toFixed ( yDecimals ) )
698718 }
699719 }
@@ -721,7 +741,8 @@ export default function ChartContainer({
721741 } ) ;
722742 } ) ;
723743
724- const compRange = calculateNiceScale ( cMin , cMax ) ;
744+ const autoCompRange = calculateNiceScale ( cMin , cMax ) ;
745+ const compRange = getFinalYScale ( autoCompRange ) ;
725746 const compDecimals = Math . max ( 4 , getMaxDecimals ( compResult . datasets ) ) ; // Ensure at least 4 for diffs
726747
727748 const compOptions = {
0 commit comments