src/charts/scatter-plot.js
function buildScales() {
            const [minX, minY] = [d3Array.min(dataPoints, ({ x }) => x), d3Array.min(dataPoints, ({ y }) => y)];
            const [maxX, maxY] = [d3Array.max(dataPoints, ({ x }) => x), d3Array.max(dataPoints, ({ y }) => y)];
            const yScaleBottomValue = Math.abs(minY) < 0 ? Math.abs(minY) : 0;

            xScale = d3Scale.scaleLinear()
                .domain([minX, maxX])
                .rangeRound([0, chartWidth])
                .nice();

            yScale = d3Scale.scaleLinear()
                .domain([yScaleBottomValue, maxY])
                .rangeRound([chartHeight, 0])
                .nice();

            colorScale = d3Scale.scaleOrdinal()
                .domain(dataPoints.map(getName))
                .range(colorSchema);

            areaScale = d3Scale.scaleSqrt()
                .domain([yScaleBottomValue, maxY])
                .range([0, maxCircleArea]);

            const colorRange = colorScale.range();

            /**
             * Maps data point category name to
             * each color of the given color scheme
             * {
             *     name1: 'color1',
             *     name2: 'color2',
             *     name3: 'color3',
             *     ...
             * }
             * @private
             */
            nameColorMap = colorScale.domain().reduce((accum, item, i) => {
                accum[item] = colorRange[i];

                return accum;
            }, {});
        }
function buildScales() {
            const [minX, minY] = [d3Array.min(dataPoints, ({ x }) => x), d3Array.min(dataPoints, ({ y }) => y)];
            const [maxX, maxY] = [d3Array.max(dataPoints, ({ x }) => x), d3Array.max(dataPoints, ({ y }) => y)];
            const yScaleBottomValue = Math.abs(minY) < 0 ? Math.abs(minY) : 0;

            xScale = d3Scale.scaleLinear()
                .domain([minX, maxX])
                .rangeRound([0, chartWidth])
                .nice();

            yScale = d3Scale.scaleLinear()
                .domain([yScaleBottomValue, maxY])
                .rangeRound([chartHeight, 0])
                .nice();

            colorScale = d3Scale.scaleOrdinal()
                .domain(dataPoints.map(getName))
                .range(colorSchema);

            areaScale = d3Scale.scaleSqrt()
                .domain([yScaleBottomValue, maxY])
                .range([0, maxCircleArea]);

            const colorRange = colorScale.range();

            /**
             * Maps data point category name to
             * each color of the given color scheme
             * {
             *     name1: 'color1',
             *     name2: 'color2',
             *     name3: 'color3',
             *     ...
             * }
             * @private
             */
            nameColorMap = colorScale.domain().reduce((accum, item, i) => {
                accum[item] = colorRange[i];

                return accum;
            }, {});
        }
function buildScales ( ) { const [ minX , minY ] = [ d3Array . min ( dataPoints , ( { x } ) => x ) , d3Array . min ( dataPoints , ( { y } ) => y ) ] ; const [ maxX , maxY ] = [ d3Array . max ( dataPoints , ( { x } ) => x ) , d3Array . max ( dataPoints , ( { y } ) => y ) ] ; const yScaleBottomValue = Math . abs ( minY ) < 0 ? Math . abs ( minY ) : 0 ; xScale = d3Scale . scaleLinear ( ) . domain ( [ minX , maxX ] ) . rangeRound ( [ 0 , chartWidth ] ) . nice ( ) ; yScale = d3Scale . scaleLinear ( ) . domain ( [ yScaleBottomValue , maxY ] ) . rangeRound ( [ chartHeight , 0 ] ) . nice ( ) ; colorScale = d3Scale . scaleOrdinal ( ) . domain ( dataPoints . map ( getName ) ) . range ( colorSchema ) ; areaScale = d3Scale . scaleSqrt ( ) . domain ( [ yScaleBottomValue , maxY ] ) . range ( [ 0 , maxCircleArea ] ) ; const colorRange = colorScale . range ( ) ; /**
             * Maps data point category name to
             * each color of the given color scheme
             * {
             *     name1: 'color1',
             *     name2: 'color2',
             *     name3: 'color3',
             *     ...
             * }
             * @private
             */ nameColorMap = colorScale . domain ( ) . reduce ( ( accum , item , i ) => { accum [ item ] = colorRange [ i ] ; return accum ; } , { } ) ; }
Creates the x and y scales of the chart
@return {void}
@private
Creates the x and y scales of the chart