scaleのdomainやrangeを更新したい、どうすべきか
codes
index.js Showing the top match Last indexed 5 days ago 7 default as scaleIdentity 8 } from "./src/identity"; 9 10 export { 11 default as scaleLinear 12 } from "./src/linear";
d3-scale/src/linear.js export default function linear() { var scale = continuous(deinterpolate, reinterpolate); scale.copy = function() { return copy(scale, linear()); }; return linearish(scale); }
d3-scale/linear.js at 396d1c95fef85241bc3b4b75d747174251ae8e89 · d3/d3-scale · GitHub
linear()は、continuous Scaleをlinearish()でlinear化して返す。要はlinear Scaleを返す.
export default function continuous(deinterpolate, reinterpolate) { ...... function rescale() { piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap; output = input = null; return scale; } function scale(x) { return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate)))(+x); } ...... scale.domain = function(_) { return arguments.length ? (domain = map.call(_, number), rescale()) : domain.slice(); }; ...... return rescale(); }
continuousはscale関数を返す. だからscale(x)でスケーリングできるんだね
d3-scale/continuous.js at 396d1c95fef85241bc3b4b75d747174251ae8e89 · d3/d3-scale · GitHub