Skip to content

Commit 8df7b6d

Browse files
committed
correct p2l for rangebreaks
1 parent 0e01a5a commit 8df7b6d

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

src/plots/cartesian/set_convert.js

+12-14
Original file line numberDiff line numberDiff line change
@@ -220,28 +220,26 @@ module.exports = function setConvert(ax, fullLayout) {
220220
};
221221

222222
p2l = function(px) {
223-
if(!isNumeric(px)) return BADNUM;
224223
var len = ax._rangebreaks.length;
225224
if(!len) return _p2l(px, ax._m, ax._b);
226225

227226
var isY = axLetter === 'y';
228-
var pos = isY ? -px : px;
227+
var pos = px;
229228

230-
var q = 0;
231-
for(var i = 0; i < len; i++) {
232-
var nextI = i + 1;
233-
var brk = ax._rangebreaks[i];
229+
var reversed = ax.range[0] > ax.range[1];
230+
var signAx = reversed ? -1 : 1;
234231

235-
var min = isY ? -brk.pmax : brk.pmin;
236-
var max = isY ? -brk.pmin : brk.pmax;
232+
var first = reversed ? len - 1 : 0;
233+
var last = signAx * (reversed ? 0 : len - 1);
234+
var q = first;
235+
for(var i = first; signAx * i <= last; i += signAx) {
236+
var nextI = i + signAx;
237+
var brk = ax._rangebreaks[i];
237238

238-
if(pos < min) break;
239-
if(pos > max) q = nextI;
240-
else {
241-
q = i;
242-
break;
243-
}
239+
if(pos < brk.pmin) break;
240+
if(pos > brk.pmax) q = nextI;
244241
}
242+
245243
return _p2l(px, (isY ? -1 : 1) * ax._m2, ax._B[q]);
246244
};
247245
}

0 commit comments

Comments
 (0)