Skip to content

Commit 3957d95

Browse files
committed
during l2p(v) when v falls into breaks, pick offset closest to it
... that way, positions that include some sort of offset (e.g. bar x0/x1, ohlc xo/xc) have the adequate px position.
1 parent ebca01b commit 3957d95

File tree

5 files changed

+433
-2
lines changed

5 files changed

+433
-2
lines changed

src/plots/cartesian/set_convert.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,12 @@ module.exports = function setConvert(ax, fullLayout) {
198198
for(var i = 0; i < ax._breaks.length; i++) {
199199
var brk = ax._breaks[i];
200200
if(v <= brk.min) b = ax._B[i + 1];
201-
else if(v > brk.max) break;
201+
else if(v > brk.min && v < brk.max) {
202+
// when v falls into break, pick offset 'closest' to it
203+
if(v - brk.min <= brk.max - v) b = ax._B[i + 1];
204+
else b = ax._B[i];
205+
break;
206+
} else if(v > brk.max) break;
202207
}
203208
return _l2p(v, -ax._m2, b);
204209
};
@@ -223,7 +228,12 @@ module.exports = function setConvert(ax, fullLayout) {
223228
for(var i = 0; i < ax._breaks.length; i++) {
224229
var brk = ax._breaks[i];
225230
if(v >= brk.max) b = ax._B[i + 1];
226-
else if(v < brk.min) break;
231+
else if(v > brk.min && v < brk.max) {
232+
// when v falls into break, pick offset 'closest' to it
233+
if(v - brk.min <= brk.max - v) b = ax._B[i];
234+
else b = ax._B[i + 1];
235+
break;
236+
} else if(v < brk.min) break;
227237
}
228238
return _l2p(v, ax._m2, b);
229239
};
21.2 KB
Loading
16 KB
Loading
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"data": [
3+
{
4+
"type": "bar",
5+
"y": [ 0, 2 ],
6+
"x": [ 1, 2 ],
7+
"orientation": "h",
8+
"marker": {
9+
"color": ["purple", "orange"],
10+
"opacity": [1, 0.5]
11+
}
12+
}
13+
],
14+
"layout": {
15+
"title": {
16+
"text": "Bars centered on open breaks bounds<br>should show bars even though pos -/+ dPos falls within break",
17+
"x": 0,
18+
"xref": "paper",
19+
"font": {"size": 12}
20+
},
21+
"yaxis": {
22+
"breaks": [
23+
{
24+
"bounds": [ 0, 2 ],
25+
"operation": "()"
26+
}
27+
]
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)