@@ -25,6 +25,7 @@ function AxesOptions() {
2525 this . tickFont = [ 'sans-serif' , 'sans-serif' , 'sans-serif' ] ;
2626 this . tickSize = [ 12 , 12 , 12 ] ;
2727 this . tickAngle = [ 0 , 0 , 0 ] ;
28+ this . tickAlign = [ 'auto' , 'auto' , 'auto' ] ;
2829 this . tickColor = [ [ 0 , 0 , 0 , 1 ] , [ 0 , 0 , 0 , 1 ] , [ 0 , 0 , 0 , 1 ] ] ;
2930 this . tickPad = [ 18 , 18 , 18 ] ;
3031
@@ -33,6 +34,7 @@ function AxesOptions() {
3334 this . labelFont = [ 'Open Sans' , 'Open Sans' , 'Open Sans' ] ;
3435 this . labelSize = [ 20 , 20 , 20 ] ;
3536 this . labelAngle = [ 0 , 0 , 0 ] ;
37+ this . labelAlign = [ 'auto' , 'auto' , 'auto' ] ;
3638 this . labelColor = [ [ 0 , 0 , 0 , 1 ] , [ 0 , 0 , 0 , 1 ] , [ 0 , 0 , 0 , 1 ] ] ;
3739 this . labelPad = [ 30 , 30 , 30 ] ;
3840
@@ -91,6 +93,18 @@ proto.merge = function(sceneLayout) {
9193 if ( axes . titlefont . family ) opts . labelFont [ i ] = axes . titlefont . family ;
9294 if ( axes . titlefont . size ) opts . labelSize [ i ] = axes . titlefont . size ;
9395 }
96+ // Title rotation/alignment similar to ticks
97+ if ( 'titleangle' in axes ) {
98+ if ( axes . titleangle === 'auto' ) {
99+ opts . labelAlign [ i ] = 'auto' ;
100+ opts . labelAngle [ i ] = 0 ;
101+ } else {
102+ opts . labelAlign [ i ] = - 1 ;
103+ opts . labelAngle [ i ] = Math . PI * - axes . labelangle / 180 ;
104+ }
105+ }
106+ if ( axes . titlealign === 'auto' ) opts . labelAlign [ i ] = 'auto' ;
107+ if ( 'titlealign' in axes ) opts . lableAlign [ i ] = axes . titlealign ;
94108
95109 // Lines
96110 if ( 'showline' in axes ) opts . lineEnable [ i ] = axes . showline ;
@@ -118,10 +132,17 @@ proto.merge = function(sceneLayout) {
118132 if ( 'tickcolor' in axes ) opts . lineTickColor [ i ] = str2RgbaArray ( axes . tickcolor ) ;
119133 if ( 'tickwidth' in axes ) opts . lineTickWidth [ i ] = axes . tickwidth ;
120134 if ( 'tickangle' in axes ) {
121- opts . tickAngle [ i ] = ( axes . tickangle === 'auto' ) ?
122- 0 :
123- Math . PI * - axes . tickangle / 180 ;
135+ if ( axes . tickangle === 'auto' ) {
136+ opts . tickAlign [ i ] = 'auto' ;
137+ opts . tickAngle [ i ] = 0 ;
138+ } else {
139+ opts . tickAlign [ i ] = - 1 ;
140+ opts . tickAngle [ i ] = Math . PI * - axes . tickangle / 180 ;
141+ }
124142 }
143+ if ( axes . tickalign === 'auto' ) opts . tickAlign [ i ] = 'auto' ;
144+ if ( 'tickalign' in axes ) opts . tickAlign [ i ] = axes . tickalign ;
145+
125146 // tick labels
126147 if ( 'showticklabels' in axes ) opts . tickEnable [ i ] = axes . showticklabels ;
127148 if ( 'tickfont' in axes ) {
0 commit comments