@@ -36,19 +36,39 @@ function calc(gd, trace) {
3636 // only differ here for log axes, pass ldata to createMatrix as 'data'
3737 var cdata = opts . cdata = [ ] ;
3838 var ldata = opts . data = [ ] ;
39- var i , k , dim ;
39+ var i , k , dim , xa , ya ;
40+
41+ function makeCalcdata ( ax , dim ) {
42+ // call makeCalcdata with fake input
43+ var ccol = ax . makeCalcdata ( {
44+ v : dim . values ,
45+ vcalendar : trace . calendar
46+ } , 'v' ) ;
47+
48+ for ( var i = 0 ; i < ccol . length ; i ++ ) {
49+ ccol [ i ] = ccol [ i ] === BADNUM ? NaN : ccol [ i ] ;
50+ }
51+ cdata . push ( ccol ) ;
52+ ldata . push ( ax . type === 'log' ? Lib . simpleMap ( ccol , ax . c2l ) : ccol ) ;
53+ }
4054
4155 for ( i = 0 ; i < dimensions . length ; i ++ ) {
4256 dim = dimensions [ i ] ;
4357
4458 if ( dim . visible ) {
45- var axId = trace . _diag [ i ] [ 0 ] || trace . _diag [ i ] [ 1 ] ;
46- var ax = AxisIDs . getFromId ( gd , axId ) ;
47- if ( ax ) {
48- var ccol = makeCalcdata ( ax , trace , dim ) ;
49- var lcol = ax . type === 'log' ? Lib . simpleMap ( ccol , ax . c2l ) : ccol ;
50- cdata . push ( ccol ) ;
51- ldata . push ( lcol ) ;
59+ xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) ;
60+ ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
61+
62+ if ( xa ) {
63+ makeCalcdata ( xa , dim ) ;
64+ if ( ya && ya . type === 'category' ) {
65+ ya . _categories = xa . _categories . slice ( ) ;
66+ }
67+ } else if ( ya ) {
68+ makeCalcdata ( ya , dim ) ;
69+ if ( xa && xa . type === 'category' ) {
70+ xa . _categories = ya . _categories . slice ( ) ;
71+ }
5272 }
5373 }
5474 }
@@ -63,8 +83,8 @@ function calc(gd, trace) {
6383 dim = dimensions [ i ] ;
6484
6585 if ( dim . visible ) {
66- var xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) || { } ;
67- var ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) || { } ;
86+ xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) || { } ;
87+ ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) || { } ;
6888
6989 // Reuse SVG scatter axis expansion routine.
7090 // For graphs with very large number of points and array marker.size,
@@ -91,20 +111,6 @@ function calc(gd, trace) {
91111 return [ { x : false , y : false , t : stash , trace : trace } ] ;
92112}
93113
94- function makeCalcdata ( ax , trace , dim ) {
95- // call makeCalcdata with fake input
96- var ccol = ax . makeCalcdata ( {
97- v : dim . values ,
98- vcalendar : trace . calendar
99- } , 'v' ) ;
100-
101- for ( var i = 0 ; i < ccol . length ; i ++ ) {
102- ccol [ i ] = ccol [ i ] === BADNUM ? NaN : ccol [ i ] ;
103- }
104-
105- return ccol ;
106- }
107-
108114function sceneUpdate ( gd , stash ) {
109115 var scene = stash . _scene ;
110116
0 commit comments