min: {soft: 0, mode: 0}
Value
--
Value
--

With min.mode: 0 or min.soft: null, the scaleMin will always be a constant % [of the full range] below dataMin.

min: {soft: 0, mode: 1}
Value
--
Value
--

With min.mode: 1, the scaleMin will be min.soft unless dataMin goes below it. This is probably how most would expect a softMin setting to behave.

min: {soft: 0, mode: 2}
Value
--
Value
--

With min.mode: 2, the scaleMin will be min.soft unless (dataMin - pad) goes below it.

min: {soft: 0, mode: 3}
Value
--
Value
--

With min.mode: 3, the scaleMin will be a constant % [of the full range] below dataMin until (dataMin - pad) goes below it. This is uPlot's default mode - it provides a conditioned softMin - keeping more vertical resolution when the value range is small and far from softMin.

min: {soft: -1, mode: 2}, max: {soft: 1, mode: 2}
Value
--
Value
--