whole_func_string: function getDomainWithZero(props, axis) {
    const propsDomain = getDomainFromProps(props, axis);
    if (propsDomain) {
      return propsDomain;
    }
  
    const dataset = Data.getData(props);
    const y0Min = dataset.reduce((min, datum) => (datum._y0 < min ? datum._y0 : min), Infinity);
  
    const ensureZero = (domain) => {
      if (axis === "x") {
        return domain;
      }
  
      const defaultMin = y0Min !== Infinity ? y0Min : 0;
      const maxDomainProp = getMaxFromProps(props, axis);
      const minDomainProp = getMinFromProps(props, axis);
      const max =
        maxDomainProp !== undefined ? maxDomainProp : Collection.getMaxValue(domain, defaultMin);
      const min =
        minDomainProp !== undefined ? minDomainProp : Collection.getMinValue(domain, defaultMin);
  
      return getDomainFromMinMax(min, max);
    };
  
    const getDomainFunction = () => {
      return getDomainFromData(props, axis, dataset);
    };
  
    const formatDomainFunction = (domain) => {
      return formatDomain(ensureZero(domain), props, axis);
    };
  
    return createDomainFunction(getDomainFunction, formatDomainFunction)(props, axis);
  }
func_code_string: function getDomainWithZero(props, axis) {
    const propsDomain = getDomainFromProps(props, axis);
    if (propsDomain) {
      return propsDomain;
    }
  
    const dataset = Data.getData(props);
    const y0Min = dataset.reduce((min, datum) => (datum._y0 < min ? datum._y0 : min), Infinity);
  
    const ensureZero = (domain) => {
      if (axis === "x") {
        return domain;
      }
  
      const defaultMin = y0Min !== Infinity ? y0Min : 0;
      const maxDomainProp = getMaxFromProps(props, axis);
      const minDomainProp = getMinFromProps(props, axis);
      const max =
        maxDomainProp !== undefined ? maxDomainProp : Collection.getMaxValue(domain, defaultMin);
      const min =
        minDomainProp !== undefined ? minDomainProp : Collection.getMinValue(domain, defaultMin);
  
      return getDomainFromMinMax(min, max);
    };
  
    const getDomainFunction = () => {
      return getDomainFromData(props, axis, dataset);
    };
  
    const formatDomainFunction = (domain) => {
      return formatDomain(ensureZero(domain), props, axis);
    };
  
    return createDomainFunction(getDomainFunction, formatDomainFunction)(props, axis);
  }
func_documentation_string: Returns a domain for a given axis. This method forces the domain to include
  zero unless the domain is explicitly specified in props.
  @param {Object} props: the props object
  @param {String} axis: the current axis
  @returns {Array} the domain for the given axis