@@ -80,6 +80,7 @@ export function createScaleQ(
8080 reverse
8181 }
8282) {
83+ domain = maybeRepeat ( domain ) ;
8384 interval = maybeRangeInterval ( interval , type ) ;
8485 if ( type === "cyclical" || type === "sequential" ) type = "linear" ; // shorthand for color schemes
8586 if ( typeof interpolate !== "function" ) interpolate = maybeInterpolator ( interpolate ) ; // named interpolator
@@ -88,8 +89,8 @@ export function createScaleQ(
8889 // If an explicit range is specified, and it has a different length than the
8990 // domain, then redistribute the range using a piecewise interpolator.
9091 if ( range !== undefined ) {
91- const n = ( domain = arrayify ( domain ) ) . length ;
92- const m = ( range = arrayify ( range ) ) . length ;
92+ const n = domain . length ;
93+ const m = ( range = maybeRepeat ( range ) ) . length ;
9394 if ( n !== m ) {
9495 if ( interpolate . length === 1 ) throw new Error ( "invalid piecewise interpolator" ) ; // e.g., turbo
9596 interpolate = piecewise ( interpolate , range ) ;
@@ -137,6 +138,11 @@ export function createScaleQ(
137138 return { type, domain, range, scale, interpolate, interval} ;
138139}
139140
141+ function maybeRepeat ( values ) {
142+ values = arrayify ( values ) ;
143+ return values . length >= 2 ? values : [ values [ 0 ] , values [ 0 ] ] ;
144+ }
145+
140146function maybeNice ( nice , type ) {
141147 return nice === true ? undefined : typeof nice === "number" ? nice : maybeNiceInterval ( nice , type ) ;
142148}
0 commit comments