Use in Ticks.custom
for creating "nice" values.
ticksConfig : Ticks.Config msg
ticksConfig =
Ticks.custom <| \dataRange axisRange ->
List.map Tick.int (valuesWithin dataRange)
valuesWithin : Coordinate.Range -> List Int
valuesWithin =
Values.int (Values.around 3)
See full example here.
What are "nice" numbers/integers/datetimes?
When I say "nice", I just mean that I try to calculate intervals which begin with 10, 5, 3, 2, 1 (adjusted to magnitude, of course!). For dates, I try to hit whole days, weeks, months or hours, minutes, and seconds.
int : Amount -> LineChart.Coordinate.Range -> List Basics.Int
Makes nice integers.
valuesWithin : Coordinate.Range -> List Int
valuesWithin =
Values.int (Values.around 3)
See full example here.
float : Amount -> LineChart.Coordinate.Range -> List Basics.Float
Makes nice floats.
valuesWithin : Coordinate.Range -> List Float
valuesWithin =
-- something like [ 1, 1.5, 2, 2.5 ]
Values.float (Values.exactly 4)
Internal.Axis.Values.Amount
around : Basics.Int -> Amount
Will get you around the amount of numbers you pass it, although it will prioritize getting "nice" numbers.
exactly : Basics.Int -> Amount
Will get you closer to the amount of numbers you pass it, although not actually exactly, since you still want decently "nice" numbers.
P.S. If you have a better name for this function, please contact me.
time : Time.Zone -> Basics.Int -> LineChart.Coordinate.Range -> List LineChart.Axis.Tick.Time
Makes nice times.
valuesWithin : Coordinate.Range -> List Float
valuesWithin =
Values.time 5
See full example here.
custom : Basics.Float -> Basics.Float -> LineChart.Coordinate.Range -> List Basics.Float
Makes evenly spaced floats.
Arguments:
The range which your numbers must be between.
ticksConfig : Ticks.Config msg ticksConfig = Ticks.custom <| \dataRange axisRange -> List.map Tick.float (Values.custom 45 10 dataRange) ++ -- ^ Makes [ 25, 45, 55, 65, 75, 85, 95 ]
List.map Tick.long (Values.custom 30 20 dataRange)
-- ^ Makes [ 30, 50, 70, 90 ]
See full example here.