generateColorScheme(scheme, type, domain) { if (typeof(scheme) === 'string') { scheme = colorSets.find(cs => { return cs.name === scheme; }); } let colorScale; if (type === 'quantile') { colorScale = scaleQuantile() .range(scheme.domain) .domain(domain); } else if (type === 'ordinal') { colorScale = scaleOrdinal() .range(scheme.domain) .domain(domain); } else if (type === 'linear') { // linear schemes must have at least 2 colors const colorDomain = [...scheme.domain]; if (colorDomain.length === 1) { colorDomain.push(colorDomain[0]); this.colorDomain = colorDomain; } const points = range(0, 1, 1.0 / colorDomain.length); colorScale = scaleLinear() .domain(points) .range(colorDomain); } return colorScale; }
outputNumber = quantizeScaleNumber(0.51); // copy(...) ----------------------------------------------------------------- const copiedQuantizeScale: d3Scale.ScaleQuantize<number> = quantizeScaleNumber.copy(); // ------------------------------------------------------------------------------- // Quantile Scale Factory // ------------------------------------------------------------------------------- // scaleQuantile() ----------------------------------------------------------------- let quantileScaleNumber: d3Scale.ScaleQuantile<number>; let quantileScaleString: d3Scale.ScaleQuantile<string>; quantileScaleNumber = d3Scale.scaleQuantile(); quantileScaleString = d3Scale.scaleQuantile<string>(); // ScaleQuantile Interface ======================================================== // domain(...) ----------------------------------------------------------------- quantileScaleNumber = quantileScaleNumber.domain(domainNumbers); domainNumbers = quantileScaleNumber.domain(); quantileScaleString = quantileScaleString.domain(domainNumeric); // range(...) ----------------------------------------------------------------- quantileScaleNumber = quantileScaleNumber.range([1, 2, 3, 4]);