Example #1
0
 const _custom = function (colors, steps?) {
     steps = steps || 32;
     const subPaletteSize = Math.ceil(steps / (colors.length - 1));
     const range = [];
     let prevColor = null;
     colors.forEach(function (color) {
         if (prevColor) {
             const scale = d3ScaleLinear()
                 .domain([0, subPaletteSize])
                 .range([prevColor, color])
                 .interpolate(d3InterpolateLab as any)
                 ;
             for (let i = 0; i < subPaletteSize; ++i) {
                 range.push(scale(i));
             }
         }
         prevColor = color;
     });
     scale = d3ScaleQuantize().domain([0, 100]).range(range);
     return scale;
 };
colorInterpolator = d3Scale.interpolateWarm;

colorInterpolator = d3Scale.interpolateCool;

colorInterpolator = d3Scale.interpolateCubehelixDefault;

// -------------------------------------------------------------------------------
// Quantize Scale Factory
// -------------------------------------------------------------------------------

// scaleQuantize() -----------------------------------------------------------------

let quantizeScaleNumber: d3Scale.ScaleQuantize<number>;
let quantizeScaleString: d3Scale.ScaleQuantize<string>;

quantizeScaleNumber = d3Scale.scaleQuantize();
quantizeScaleString = d3Scale.scaleQuantize<string>();

// ScaleQuantize Interface ========================================================

// domain(...) -----------------------------------------------------------------

quantizeScaleNumber = quantizeScaleNumber.domain([0, 1]);
quantizeScaleNumber = quantizeScaleNumber.domain([new NumCoercible(0), new NumCoercible(100)]);
const domainQuantize: [number, number] = quantizeScaleNumber.domain();

// range(...) -----------------------------------------------------------------

quantizeScaleNumber = quantizeScaleNumber.range(rangeNumbers);
rangeNumbers = quantizeScaleNumber.range();