@@ -24,10 +24,10 @@ function calc(gd, trace) {
2424 var fullLayout = gd . _fullLayout ;
2525 var xa = Axes . getFromId ( gd , trace . xaxis || 'x' ) ;
2626 var ya = Axes . getFromId ( gd , trace . yaxis || 'y' ) ;
27- var x = xa . makeCalcdata ( trace , 'x' ) ;
28- var y = ya . makeCalcdata ( trace , 'y' ) ;
29- x = alignPeriod ( trace , xa , 'x' , x ) ;
30- y = alignPeriod ( trace , ya , 'y' , y ) ;
27+ var oX = xa . makeCalcdata ( trace , 'x' ) ;
28+ var oY = ya . makeCalcdata ( trace , 'y' ) ;
29+ var x = alignPeriod ( trace , xa , 'x' , oX ) ;
30+ var y = alignPeriod ( trace , ya , 'y' , oY ) ;
3131
3232 var serieslen = trace . _length ;
3333 var cd = new Array ( serieslen ) ;
@@ -59,13 +59,23 @@ function calc(gd, trace) {
5959 calcAxisExpansion ( gd , trace , xa , ya , x , y , ppad ) ;
6060 }
6161
62+ var hasPeriodX = ! ! trace . xperiodalignment ;
63+ var hasPeriodY = ! ! trace . yperiodalignment ;
64+
6265 for ( i = 0 ; i < serieslen ; i ++ ) {
6366 var cdi = cd [ i ] = { } ;
6467 var xValid = isNumeric ( x [ i ] ) ;
6568 var yValid = isNumeric ( y [ i ] ) ;
6669 if ( xValid && yValid ) {
6770 cdi [ xAttr ] = x [ i ] ;
6871 cdi [ yAttr ] = y [ i ] ;
72+
73+ if ( hasPeriodX ) {
74+ cdi . orig_x = oX [ i ] ;
75+ }
76+ if ( hasPeriodY ) {
77+ cdi . orig_y = oY [ i ] ;
78+ }
6979 } else if ( stackGroupOpts && ( isV ? xValid : yValid ) ) {
7080 // if we're stacking we need to hold on to all valid positions
7181 // even with invalid sizes
0 commit comments