code: 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;
              }, {});
          }
docs: Creates the x and y scales of the chart
  @return {void}
  @private