@@ -500,9 +500,14 @@ function axisMark(mark, k, ariaLabel, data, options, initialize) {
500
500
let channels ;
501
501
const m = mark (
502
502
data ,
503
- initializer ( options , function ( data , facets , _channels , scales ) {
504
- const { [ k ] : scale } = scales ;
503
+ initializer ( options , function ( data , facets , _channels , scales , dimensions ) {
504
+ let { [ k ] : scale } = scales ;
505
505
if ( ! scale ) throw new Error ( `missing scale: ${ k } ` ) ;
506
+ if ( scale . type === "identity" && ( k === "x" || k === "y" ) && scale . range === undefined ) {
507
+ const { width, height, marginLeft, marginTop, marginRight, marginBottom} = dimensions ;
508
+ const range = k === "x" ? [ marginLeft , width - marginRight ] : [ height - marginBottom , marginTop ] ;
509
+ scale = { ...scale , range, domain : range } ;
510
+ }
506
511
let { ticks, tickSpacing, interval} = options ;
507
512
if ( isTemporalScale ( scale ) && typeof ticks === "string" ) ( interval = ticks ) , ( ticks = undefined ) ;
508
513
if ( data == null ) {
@@ -589,25 +594,15 @@ function inferTickFormat(scale, ticks, tickFormat) {
589
594
. tickFormat ( isIterable ( ticks ) ? null : ticks , tickFormat ) ;
590
595
default :
591
596
return scaleLinear ( )
592
- . domain ( scale . domain ?? scale . range )
597
+ . domain ( scale . domain )
593
598
. tickFormat ( isIterable ( ticks ) ? null : ticks , tickFormat ) ;
594
599
}
595
600
}
596
601
597
- function inferTickFunction ( scale ) {
598
- switch ( scale . type ) {
599
- case "point" :
600
- case "band" :
601
- return ;
602
- case "log" :
603
- return scaleLog ( ) . domain ( scale . domain ) . ticks ;
604
- case "time" :
605
- return scaleTime ( ) . domain ( scale . domain ) . ticks ;
606
- case "utc" :
607
- return scaleUtc ( ) . domain ( scale . domain ) . ticks ;
608
- default :
609
- return scaleLinear ( ) . domain ( scale . domain ?? scale . range ) . ticks ;
610
- }
602
+ function inferTickFunction ( { type, domain} ) {
603
+ if ( type === "point" || type === "band" ) return ;
604
+ const S = type === "log" ? scaleLog : type === "time" ? scaleTime : type === "utc" ? scaleUtc : scaleLinear ;
605
+ return S ( ) . domain ( domain ) . ticks ;
611
606
}
612
607
613
608
const shapeTickBottom = {
0 commit comments