60 Number Lines and Coordinate Decorations
Number-line Visuals and coordinate-decoration constructors provide grid lines and upright numeric labels derived from an existing coordinate object. These constructors produce immutable snapshots. Changing the source axes or number line later does not update an already constructed grid or label list.
procedure
(number-line range #:id identifier [ #:center center #:rotation rotation #:scale scale #:opacity opacity #:length length #:stroke stroke #:stroke-width stroke-width #:tick-size tick-size #:tip-length tip-length #:tip-width tip-width #:start-tip? start-tip? #:end-tip? end-tip?]) → number-line-visual? range : axis-range? identifier : symbol? center : vec2? = origin rotation : finite-real? = 0 scale : any/c = 1 opacity : opacity? = 1 length : positive-real? = 10 stroke : string? = "black" stroke-width : nonnegative-real? = 2 tick-size : nonnegative-real? = 1/5 tip-length : nonnegative-real? = 2/5 tip-width : nonnegative-real? = 3/10 start-tip? : boolean? = #f end-tip? : boolean? = #f
The regular ticks come from axis-range-tick-values, with zero inserted for the number-line representation. Stroke width is cosmetic. Tick and tip sizes are semantic local geometry and therefore follow affine scale.
procedure
(number-line-visual? value) → boolean?
value : any/c
procedure
(number-line-visual-range visual) → axis-range?
visual : number-line-visual?
procedure
(number-line-visual-length visual) → positive-real?
visual : number-line-visual?
procedure
(number-line-visual-stroke visual) → string?
visual : number-line-visual?
procedure
(number-line-visual-stroke-width visual) → nonnegative-real?
visual : number-line-visual?
procedure
(number-line-visual-tick-size visual) → nonnegative-real?
visual : number-line-visual?
procedure
(number-line-visual-tip-length visual) → nonnegative-real?
visual : number-line-visual?
procedure
(number-line-visual-tip-width visual) → nonnegative-real?
visual : number-line-visual?
procedure
(number-line-visual-start-tip? visual) → boolean?
visual : number-line-visual?
procedure
(number-line-visual-end-tip? visual) → boolean?
visual : number-line-visual?
procedure
(number-line-unit-length visual) → positive-real?
visual : number-line-visual?
procedure
(number-line-tick-values visual [ #:include-zero? include-zero?]) → (listof finite-real?) visual : number-line-visual? include-zero? : boolean? = #t
procedure
(number-line-number->point visual number) → vec2?
visual : number-line-visual? number : finite-real?
procedure
(number-line-point->number visual point) → real?
visual : number-line-visual? point : vec2?
procedure
(number-line-visual-start visual) → vec2?
visual : number-line-visual?
procedure
(number-line-visual-end visual) → vec2?
visual : number-line-visual?
procedure
(axes-grid-lines axes #:id identifier [ #:x-grid? x-grid? #:y-grid? y-grid? #:include-zero? include-zero? #:opacity opacity #:stroke stroke #:stroke-width stroke-width]) → path-visual? axes : axes-visual? identifier : symbol? x-grid? : boolean? = #t y-grid? : boolean? = #t include-zero? : boolean? = #f opacity : opacity? = 1 stroke : string? = "lightgray" stroke-width : nonnegative-real? = 1
procedure
(axes-number-labels axes #:id-prefix identifier-prefix [ #:include-zero? include-zero? #:font-size font-size #:color color #:x-gap x-gap #:y-gap y-gap #:number->string number->string]) → (listof text-visual?) axes : axes-visual? identifier-prefix : symbol? include-zero? : boolean? = #f font-size : positive-real? = 3/10 color : string? = "black" x-gap : nonnegative-real? = 1/10 y-gap : nonnegative-real? = 1/10 number->string : procedure? = number->string
The formatter is called once per label with the numeric value. It must accept one argument and return exactly one string. It is not retained in the returned Visuals. Child identities have the forms prefix-x-index and prefix-y-index, where each index starts at zero.
procedure
(number-line-number-labels number-line #:id-prefix identifier-prefix [ #:include-zero? include-zero? #:font-size font-size #:color color #:gap gap #:number->string number->string]) → (listof text-visual?) number-line : number-line-visual? identifier-prefix : symbol? include-zero? : boolean? = #t font-size : positive-real? = 3/10 color : string? = "black" gap : nonnegative-real? = 1/10 number->string : procedure? = number->string
Number-line rendering is implemented by converting the model to ordinary semantic path geometry after explicit renderer selection. A custom renderer can therefore override the complete number line. Semantic opacity is applied once after either custom rendering or fallback conversion. Grid lines use the normal path renderer, while labels use the normal plain-text renderer.