cl-react-graph
Version:
React D3 Charts
52 lines (46 loc) • 961 B
text/typescript
import {
ScaleBand,
scaleLinear,
ScaleLinear,
ScaleLogarithmic,
ScalePoint,
ScaleSymLog,
scaleSymlog,
scaleTime,
ScaleTime,
} from "d3-scale";
import { Axes } from "../";
export type AnyScale =
| ScaleLinear<number, number>
| ScaleTime<any, any>
| ScaleLogarithmic<any, any>
| ScaleSymLog<any, any>
| ScaleBand<string>
| ScalePoint<string>;
export const buildScales = (axis: Axes) => {
let x: AnyScale;
let y: AnyScale;
switch (axis.x.scale) {
case "log":
x = scaleSymlog().clamp(true); // clamp values below 1 to be equal to 0
break;
case "time":
x = scaleTime();
break;
default:
x = scaleLinear();
break;
}
switch (axis.y.scale) {
case "log":
y = scaleSymlog().clamp(true); // clamp values below 1 to be equal to 0
break;
case "time":
y = scaleTime();
break;
default:
y = scaleLinear();
break;
}
return [x, y];
};