@@ -380,6 +380,7 @@ proto.updateRadialAxis = function(fullLayout, polarLayout) {
380380 var radialLayout = polarLayout . radialaxis ;
381381 var a0 = mod ( polarLayout . sector [ 0 ] , 360 ) ;
382382 var ax = _this . radialAxis ;
383+ var hasRoomForIt = innerRadius < radius ;
383384
384385 _this . fillViewInitialKey ( 'radialaxis.angle' , radialLayout . angle ) ;
385386 _this . fillViewInitialKey ( 'radialaxis.range' , ax . range . slice ( ) ) ;
@@ -410,8 +411,10 @@ proto.updateRadialAxis = function(fullLayout, polarLayout) {
410411 _this . radialTickLayout = newTickLayout ;
411412 }
412413
413- ax . setScale ( ) ;
414- doTicksSingle ( gd , ax , true ) ;
414+ if ( hasRoomForIt ) {
415+ ax . setScale ( ) ;
416+ doTicksSingle ( gd , ax , true ) ;
417+ }
415418
416419 // stash 'actual' radial axis angle for drag handlers (in degrees)
417420 var angle = _this . radialAxisAngle = _this . vangles ?
@@ -420,24 +423,31 @@ proto.updateRadialAxis = function(fullLayout, polarLayout) {
420423
421424 var trans = strTranslate ( cx , cy ) + strRotate ( - angle ) ;
422425
423- updateElement ( layers [ 'radial-axis' ] , radialLayout . showticklabels || radialLayout . ticks , {
424- transform : trans
425- } ) ;
426+ updateElement (
427+ layers [ 'radial-axis' ] ,
428+ hasRoomForIt && ( radialLayout . showticklabels || radialLayout . ticks ) ,
429+ { transform : trans }
430+ ) ;
426431
427432 // move all grid paths to about circle center,
428433 // undo individual grid lines translations
429- updateElement ( layers [ 'radial-grid' ] , radialLayout . showgrid , {
430- transform : strTranslate ( cx , cy )
431- } )
432- . selectAll ( 'path' ) . attr ( 'transform' , null ) ;
433-
434- updateElement ( layers [ 'radial-line' ] . select ( 'line' ) , radialLayout . showline , {
435- x1 : innerRadius ,
436- y1 : 0 ,
437- x2 : radius ,
438- y2 : 0 ,
439- transform : trans
440- } )
434+ updateElement (
435+ layers [ 'radial-grid' ] ,
436+ hasRoomForIt && radialLayout . showgrid ,
437+ { transform : strTranslate ( cx , cy ) }
438+ ) . selectAll ( 'path' ) . attr ( 'transform' , null ) ;
439+
440+ updateElement (
441+ layers [ 'radial-line' ] . select ( 'line' ) ,
442+ hasRoomForIt && radialLayout . showline ,
443+ {
444+ x1 : innerRadius ,
445+ y1 : 0 ,
446+ x2 : radius ,
447+ y2 : 0 ,
448+ transform : trans
449+ }
450+ )
441451 . attr ( 'stroke-width' , radialLayout . linewidth )
442452 . call ( Color . stroke , radialLayout . linecolor ) ;
443453} ;
@@ -802,7 +812,8 @@ proto.updateMainDrag = function(fullLayout) {
802812 var cpath ;
803813
804814 if ( clampAndSetR0R1 ( rr0 , rr1 ) ) {
805- path1 = path0 + _this . pathSector ( r1 ) + _this . pathSector ( r0 ) ;
815+ path1 = path0 + _this . pathSector ( r1 ) ;
816+ if ( r0 ) path1 += _this . pathSector ( r0 ) ;
806817 // keep 'starting' angle
807818 cpath = pathCorner ( r0 , a0 ) + pathCorner ( r1 , a0 ) ;
808819 }
@@ -827,7 +838,8 @@ proto.updateMainDrag = function(fullLayout) {
827838 var cpath ;
828839
829840 if ( clampAndSetR0R1 ( rr0 , rr1 ) ) {
830- path1 = path0 + _this . pathSector ( r1 ) + _this . pathSector ( r0 ) ;
841+ path1 = path0 + _this . pathSector ( r1 ) ;
842+ if ( r0 ) path1 += _this . pathSector ( r0 ) ;
831843 // keep 'starting' angle here too
832844 cpath = [
833845 pathCornerForPolygons ( r0 , vangles0 [ 0 ] , vangles0 [ 1 ] ) ,
@@ -963,7 +975,10 @@ proto.updateRadialDrag = function(fullLayout, polarLayout, rngIndex) {
963975
964976 var radialDrag = dragBox . makeRectDragger ( layers , className , 'crosshair' , - bl2 , - bl2 , bl , bl ) ;
965977 var dragOpts = { element : radialDrag , gd : gd } ;
966- d3 . select ( radialDrag ) . attr ( 'transform' , strTranslate ( tx , ty ) ) ;
978+
979+ updateElement ( d3 . select ( radialDrag ) , radialAxis . visible && innerRadius < radius , {
980+ transform : strTranslate ( tx , ty )
981+ } ) ;
967982
968983 // move function (either rotate or re-range flavor)
969984 var moveFn2 ;
0 commit comments