class_docstr: Univariate and bivariate histogram estimator.
class_docstr_tok: ["Univariate","and","bivariate","histogram","estimator","."]
docstr: Inner function for histogram of two variables.
docstr_tok: ["Inner","function","for","histogram","of","two","variables","."]
code: def _eval_bivariate(self, x1, x2, weights):
      """Inner function for histogram of two variables."""
      bin_kws = self.bin_kws
      if bin_kws is None:
          bin_kws = self.define_bin_params(x1, x2, cache=False)
  
      density = self.stat == "density"
  
      hist, *bin_edges = np.histogram2d(
          x1, x2, **bin_kws, weights=weights, density=density
      )
  
      area = np.outer(
          np.diff(bin_edges[0]),
          np.diff(bin_edges[1]),
      )
  
      if self.stat == "probability" or self.stat == "proportion":
          hist = hist.astype(float) / hist.sum()
      elif self.stat == "percent":
          hist = hist.astype(float) / hist.sum() * 100
      elif self.stat == "frequency":
          hist = hist.astype(float) / area
  
      if self.cumulative:
          if self.stat in ["density", "frequency"]:
              hist = (hist * area).cumsum(axis=0).cumsum(axis=1)
          else:
              hist = hist.cumsum(axis=0).cumsum(axis=1)
  
      return hist, bin_edges
  
imports: from numbers import Number
  from statistics import NormalDist
  import numpy
  import pandas
  from .algorithms import bootstrap
  from .utils import _check_argument
label_desc: Use image node_id 4 for calling the Histogram obj's underlying member method code with example usage: obj._eval_bivariate(x1, x2, weights) and returns: hist,  bin_edges