static computeHistogram()

in src/Histogram.js [116:152]


  static computeHistogram(data, thresholds, accessor, binDomain, nice) {
    let makeHistogram = histogram()
      .value(accessor)
      .thresholds(thresholds);

    if (binDomain) {
      // Throw warning if nice = true and binDomain is defined
      if (nice) {
        /* eslint-disable no-console */
        console.warn(
          'Warning: if binDomain is defined and nice = true, histogram prioritizes binDomain and disregards nice.',
        );
        /* eslint-enable no-console */
      }

      // Use user's passed in binDomain to makeHistogram
      makeHistogram = makeHistogram.domain(binDomain);
    } else if (nice) {
      // Create a linear scale to nice values
      const scale = scaleLinear()
        .domain(extent(data))
        .nice();

      // Nicely round domain given temp bins
      const niceBinDomain = scale.ticks();

      // Set nicely rounded domain as domain for makeHistogram
      makeHistogram = makeHistogram.domain([
        first(niceBinDomain),
        last(niceBinDomain),
      ]);
    }

    const bins = makeHistogram(data);

    return bins;
  }