data = {
const col0 = rawData.columns[0];
const result = rawData.map((d) => ({
[col0]: d[col0]
}));
for (const column of rawData.columns.slice(1)) {
const xScale = x.get(column);
const vals = rawData
.map((d, i) => ({ x: d[column], index: i }))
.filter((d) => d.x != null);
const placedPoints = useSpacedJitter
? spacedJitter(vals, (d) => xScale(d.x), [0, 40], {
edgeSpacing: 0.5
})
: vals.map((d) => ({ x: xScale(d.x), y: Math.random() * 40, datum: d }));
for (const { x, y, datum } of placedPoints) {
result[datum.index][column] = { x, y, rawX: datum.x };
}
}
result.columns = rawData.columns;
return result;
}