@@ -56,7 +56,6 @@ exports.extractPathCoords = function(path, paramsToUse, isRaw) {
56
56
exports . getDataToPixel = function ( gd , axis , shift , isVertical , refType ) {
57
57
var gs = gd . _fullLayout . _size ;
58
58
var dataToPixel ;
59
- shift = shift || 0 ;
60
59
61
60
if ( axis ) {
62
61
if ( refType === 'domain' ) {
@@ -67,14 +66,7 @@ exports.getDataToPixel = function(gd, axis, shift, isVertical, refType) {
67
66
var d2r = exports . shapePositionToRange ( axis ) ;
68
67
69
68
dataToPixel = function ( v ) {
70
- var shiftPixels = 0 ;
71
- if ( axis . type === 'category' || axis . type === 'multicategory' ) {
72
- if ( isVertical ) {
73
- shiftPixels = ( ( axis . r2p ( 1 ) - axis . r2p ( 0 ) ) * shift ) ;
74
- } else {
75
- shiftPixels = axis . r2p ( 0.5 ) * shift ;
76
- }
77
- }
69
+ var shiftPixels = getPixelShift ( axis , shift ) ;
78
70
return axis . _offset + axis . r2p ( d2r ( v , true ) ) + shiftPixels ;
79
71
} ;
80
72
@@ -188,10 +180,10 @@ exports.getPathString = function(gd, options) {
188
180
var ya = Axes . getFromId ( gd , options . yref ) ;
189
181
var gs = gd . _fullLayout . _size ;
190
182
var x2r , x2p , y2r , y2p ;
191
- var xShiftStart = 0 ;
192
- var xShiftEnd = 0 ;
193
- var yShiftStart = 0 ;
194
- var yShiftEnd = 0 ;
183
+ var xShiftStart = getPixelShift ( xa , options . x0shift ) ;
184
+ var xShiftEnd = getPixelShift ( xa , options . x1shift ) ;
185
+ var yShiftStart = getPixelShift ( ya , options . y0shift ) ;
186
+ var yShiftEnd = getPixelShift ( ya , options . y1shift ) ;
195
187
var x0 , x1 , y0 , y1 ;
196
188
197
189
if ( xa ) {
@@ -200,11 +192,6 @@ exports.getPathString = function(gd, options) {
200
192
} else {
201
193
x2r = exports . shapePositionToRange ( xa ) ;
202
194
x2p = function ( v ) { return xa . _offset + xa . r2p ( x2r ( v , true ) ) ; } ;
203
- if ( xa . type === 'category' || xa . type === 'multicategory' ) {
204
- var shiftUnitX = xa . r2p ( 0.5 ) ;
205
- xShiftStart = shiftUnitX * options . x0shift ;
206
- xShiftEnd = shiftUnitX * options . x1shift ;
207
- }
208
195
}
209
196
} else {
210
197
x2p = function ( v ) { return gs . l + gs . w * v ; } ;
@@ -216,11 +203,6 @@ exports.getPathString = function(gd, options) {
216
203
} else {
217
204
y2r = exports . shapePositionToRange ( ya ) ;
218
205
y2p = function ( v ) { return ya . _offset + ya . r2p ( y2r ( v , true ) ) ; } ;
219
- if ( ya . type === 'category' || ya . type === 'multicategory' ) {
220
- var shiftUnitY = ya . r2p ( 0 ) - ya . r2p ( 1 ) ;
221
- yShiftStart = shiftUnitY * options . y0shift ;
222
- yShiftEnd = shiftUnitY * options . y1shift ;
223
- }
224
206
}
225
207
} else {
226
208
y2p = function ( v ) { return gs . t + gs . h * ( 1 - v ) ; } ;
@@ -242,11 +224,11 @@ exports.getPathString = function(gd, options) {
242
224
243
225
if ( options . ysizemode === 'pixel' ) {
244
226
var yAnchorPos = y2p ( options . yanchor ) ;
245
- y0 = yAnchorPos - options . y0 - yShiftStart ;
246
- y1 = yAnchorPos - options . y1 - yShiftEnd ;
227
+ y0 = yAnchorPos - options . y0 + yShiftStart ;
228
+ y1 = yAnchorPos - options . y1 + yShiftEnd ;
247
229
} else {
248
- y0 = y2p ( options . y0 ) - yShiftStart ;
249
- y1 = y2p ( options . y1 ) - yShiftEnd ;
230
+ y0 = y2p ( options . y0 ) + yShiftStart ;
231
+ y1 = y2p ( options . y1 ) + yShiftEnd ;
250
232
}
251
233
252
234
if ( type === 'line' ) return 'M' + x0 + ',' + y0 + 'L' + x1 + ',' + y1 ;
@@ -301,3 +283,19 @@ function convertPath(options, x2p, y2p) {
301
283
return segmentType + paramString ;
302
284
} ) ;
303
285
}
286
+
287
+ function getPixelShift ( axis , shift ) {
288
+ shift = shift || 0 ;
289
+ var shiftPixels = 0 ;
290
+ if ( axis ) {
291
+ var isVertical = axis . _id . charAt ( 0 ) === 'y' ;
292
+ if ( axis . type === 'category' || axis . type === 'multicategory' ) {
293
+ if ( isVertical ) {
294
+ shiftPixels = ( ( axis . r2p ( 1 ) - axis . r2p ( 0 ) ) * shift ) ;
295
+ } else {
296
+ shiftPixels = axis . r2p ( 0.5 ) * shift ;
297
+ }
298
+ }
299
+ }
300
+ return shiftPixels ;
301
+ }
0 commit comments