mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-24 17:58:12 +08:00
23 lines
697 B
JavaScript
23 lines
697 B
JavaScript
// jshint esversion: 6
|
|
|
|
// Substitute for a d3 linear scale - less flexible, more performant.
|
|
// Returns a function which will scale a value.
|
|
//
|
|
// Example will scale [0,1] to [-1,1]
|
|
// var myScale = scaleLinear([0, 1], [-1, 1]);
|
|
// myScale(0) === -1
|
|
// this is is equivalent to d3.scaleLinear().domain([0,1]).range([-1,1])
|
|
|
|
export default (domain, range) => {
|
|
const domainStart = domain[0];
|
|
const scale = (range[1] - range[0]) / (domain[1] - domain[0]);
|
|
const invScale = 1 / scale;
|
|
const rangeStart = range[0];
|
|
const f = (value) => (value - domainStart) * scale + rangeStart;
|
|
|
|
// inverter
|
|
f.invert = (value) => (value - rangeStart) * invScale + domainStart;
|
|
|
|
return f;
|
|
};
|