react-native-chart-kit
Version:
Beautiful React Native charts for dashboards, reports, and data-rich mobile apps.
35 lines (34 loc) • 1.21 kB
JavaScript
export const createBandScale = ({ domain, range, paddingInner = 0, paddingOuter = 0 }) => {
const count = domain.length;
const rangeSpan = range[1] - range[0];
const denominator = Math.max(1, count - paddingInner + paddingOuter * 2);
const step = count === 0 ? 0 : rangeSpan / denominator;
const bandwidth = step * Math.max(0, 1 - paddingInner);
const positions = new Map();
domain.forEach((value, index) => {
positions.set(value, range[0] + step * (paddingOuter + index));
});
return {
domain,
range,
bandwidth,
step,
scale: (value) => positions.get(value)
};
};
export const createPointScale = ({ domain, range, padding = 0 }) => {
const count = domain.length;
const rangeSpan = range[1] - range[0];
const step = count <= 1 ? 0 : rangeSpan / Math.max(1, count - 1 + padding * 2);
const offset = count <= 1 ? rangeSpan / 2 : step * padding;
const positions = new Map();
domain.forEach((value, index) => {
positions.set(value, range[0] + offset + step * index);
});
return {
domain,
range,
step,
scale: (value) => positions.get(value)
};
};