function groupOverlappingIndexes(data) {
const positionIndexMap = new Map();
const indexesAtGroup = d3.group(data, (d) => d.index);
return data.map((item) => {
const { index } = item;
if (!positionIndexMap.has(index)) {
positionIndexMap.set(index, 1);
}
const positionIndex = positionIndexMap.get(index);
positionIndexMap.set(index, positionIndex + 1);
const total = indexesAtGroup.get(index).length;
const overlappingIndex = (1 / total) * positionIndex;
return {
...item,
index: index + overlappingIndex
};
});
}