@@ -4,7 +4,7 @@ import {ascendingDefined} from "../defined.js";
4
4
import { maybeSymbol } from "../options.js" ;
5
5
import { none } from "../style.js" ;
6
6
import { registry , color , symbol } from "./index.js" ;
7
- import { ordinalScheme , quantitativeScheme } from "./schemes.js" ;
7
+ import { maybeBooleanRange , ordinalScheme , quantitativeScheme } from "./schemes.js" ;
8
8
9
9
export function ScaleO ( scale , channels , {
10
10
type,
@@ -26,26 +26,34 @@ export function ScaleO(scale, channels, {
26
26
27
27
export function ScaleOrdinal ( key , channels , {
28
28
type,
29
+ domain = inferDomain ( channels ) ,
29
30
range,
30
- scheme = range === undefined ? type === "ordinal" ? "turbo" : "tableau10" : undefined ,
31
+ scheme,
31
32
unknown,
32
33
...options
33
34
} ) {
34
35
let hint ;
35
36
if ( registry . get ( key ) === symbol ) {
36
37
hint = inferSymbolHint ( channels ) ;
37
38
range = range === undefined ? inferSymbolRange ( hint ) : Array . from ( range , maybeSymbol ) ;
38
- } else if ( registry . get ( key ) === color && scheme !== undefined ) {
39
- if ( range !== undefined ) {
40
- const interpolate = quantitativeScheme ( scheme ) ;
41
- const t0 = range [ 0 ] , d = range [ 1 ] - range [ 0 ] ;
42
- range = ( { length : n } ) => quantize ( t => interpolate ( t0 + d * t ) , n ) ;
43
- } else {
44
- range = ordinalScheme ( scheme ) ;
39
+ } else if ( registry . get ( key ) === color ) {
40
+ if ( scheme === undefined
41
+ && range === undefined
42
+ && ( range = maybeBooleanRange ( domain , "greys" ) ) === undefined ) {
43
+ scheme = type === "ordinal" ? "turbo" : "tableau10" ;
44
+ }
45
+ if ( scheme !== undefined ) {
46
+ if ( range !== undefined ) {
47
+ const interpolate = quantitativeScheme ( scheme ) ;
48
+ const t0 = range [ 0 ] , d = range [ 1 ] - range [ 0 ] ;
49
+ range = ( { length : n } ) => quantize ( t => interpolate ( t0 + d * t ) , n ) ;
50
+ } else {
51
+ range = ordinalScheme ( scheme ) ;
52
+ }
45
53
}
46
54
}
47
55
if ( unknown === scaleImplicit ) throw new Error ( "implicit unknown is not supported" ) ;
48
- return ScaleO ( scaleOrdinal ( ) . unknown ( unknown ) , channels , { ...options , type, range, hint} ) ;
56
+ return ScaleO ( scaleOrdinal ( ) . unknown ( unknown ) , channels , { ...options , type, domain , range, hint} ) ;
49
57
}
50
58
51
59
export function ScalePoint ( key , channels , {
0 commit comments