Skip to content

Commit bf15db4

Browse files
committed
Put zero values at zero.
1 parent 394507c commit bf15db4

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1134,7 +1134,7 @@ Applies a zero baseline and normalizes the values for each point such that the t
11341134

11351135
<a name="stackOffsetDiverging" href="#stackOffsetDiverging">#</a> d3.<b>stackOffsetDiverging</b>(<i>series</i>, <i>order</i>) · [Source](https://github.com/d3/d3-shape/blob/master/src/offset/diverging.js)
11361136

1137-
Positive values are stacked above zero, while negative values are [stacked below zero](https://bl.ocks.org/mbostock/b5935342c6d21928111928401e2c8608).
1137+
Positive values are stacked above zero, negative values are [stacked below zero](https://bl.ocks.org/mbostock/b5935342c6d21928111928401e2c8608), and zero values are stacked at zero.
11381138

11391139
<a name="stackOffsetNone" href="#stackOffsetNone">#</a> d3.<b>stackOffsetNone</b>(<i>series</i>, <i>order</i>) · [Source](https://github.com/d3/d3-shape/blob/master/src/offset/none.js)
11401140

src/offset/diverging.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ export default function(series, order) {
22
if (!((n = series.length) > 0)) return;
33
for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {
44
for (yp = yn = 0, i = 0; i < n; ++i) {
5-
if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {
5+
if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {
66
d[0] = yp, d[1] = yp += dy;
77
} else if (dy < 0) {
88
d[1] = yn, d[0] = yn += dy;
99
} else {
10-
d[0] = yp;
10+
d[0] = 0, d[1] = dy;
1111
}
1212
}
1313
}

test/offset/diverging-test.js

+17-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ tape("stackOffsetDiverging(series, order) applies a zero baseline, ignoring exis
1616
test.end();
1717
});
1818

19-
tape.only("stackOffsetDiverging(series, order) handles a single series", function(test) {
19+
tape("stackOffsetDiverging(series, order) handles a single series", function(test) {
2020
var series = [
2121
[[1, 2], [2, 4], [3, 4]]
2222
];
@@ -38,7 +38,7 @@ tape("stackOffsetDiverging(series, order) treats NaN as zero", function(test) {
3838
series[1][1][1] = "NaN"; // can’t test.equal NaN
3939
test.deepEqual(series, [
4040
[[0, 1], [0, 2], [0, 1]],
41-
[[1, 4], [2, "NaN"], [1, 3]],
41+
[[1, 4], [0, "NaN"], [1, 3]],
4242
[[4, 9], [2, 4], [3, 7]]
4343
]);
4444
test.end();
@@ -73,3 +73,18 @@ tape("stackOffsetDiverging(series, order) puts negative values below zero, in or
7373
]);
7474
test.end();
7575
});
76+
77+
tape("stackOffsetDiverging(series, order) puts zero values at zero, in order", function(test) {
78+
var series = [
79+
[[0, 1], [0, 2], [0, -1]],
80+
[[0, 3], [0, 0], [0, 0]],
81+
[[0, 5], [0, 2], [0, 4]]
82+
];
83+
shape.stackOffsetDiverging(series, shape.stackOrderNone(series));
84+
test.deepEqual(series, [
85+
[[0, 1], [0, 2], [-1, 0]],
86+
[[1, 4], [0, 0], [0, 0]],
87+
[[4, 9], [2, 4], [0, 4]]
88+
]);
89+
test.end();
90+
});

0 commit comments

Comments
 (0)