code: def __init__(
      self,
      data,
      bins: int | np.ndarray | list[np.ndarray] = 10,
      bottom: int | np.ndarray = 0,
      *,
      range=None,
      weights=None,
      **kwargs,
  ) -> None:
      if is_list_like(bottom):
          bottom = np.array(bottom)
      self.bottom = bottom
  
      self._bin_range = range
      self.weights = weights
  
      self.xlabel = kwargs.get("xlabel")
      self.ylabel = kwargs.get("ylabel")
      # Do not call LinePlot.__init__ which may fill nan
      MPLPlot.__init__(
          self, data, **kwargs
      )  # pylint: disable=non-parent-init-called
  
      self.bins = self._adjust_bins(bins)
  
imports: from __future__ import annotations
  from typing import TYPE_CHECKING, Any, Literal, final
  import numpy
  from pandas.core.dtypes.common import is_integer, is_list_like
  from pandas.core.dtypes.generic import ABCDataFrame, ABCIndex
  from pandas.core.dtypes.missing import isna, remove_na_arraylike
  from pandas.io.formats.printing import pprint_thing
  from pandas.plotting._matplotlib.core import LinePlot, MPLPlot
  from pandas.plotting._matplotlib.groupby import create_iter_data_given_by, reformat_hist_y_given_by
  from pandas.plotting._matplotlib.misc import unpack_single_str_list
  from pandas.plotting._matplotlib.tools import create_subplots, flatten_axes, maybe_adjust_figure, set_ticks_props
label_desc: Use image node_id 2 to create a new HistPlot object from inherited base classes: LinePlot with example: obj = HistPlot(data, bins, bottom)