function generateDotplotStacks(data, binwidth) {
data = data.sort((a, b) => a - b);
const stacks = [];
for (let i = 0; i < data.length; ) {
const threshold = data[i] + binwidth;
const stack = [data[i]];
let j = i + 1;
while (data[j] < threshold) {
stack.push(data[j++]);
}
let v = (stack[stack.length - 1] - stack[0]) / 2;
const diff = data[i] - data[i - 1];
stacks.push({
values: stack,
x: stack[0] + v,
v: v,
diff: diff,
threshold: threshold
});
i = j;
}
return stacks;
}