class_docstr: Rasterized Rectangles specified using center points
  
  {usage}
  
  Parameters
  ----------
  {common_parameters}
  
  hjust : float, default=0.5
      Horizontal justification for the rectangle at point `x`.
      Default is 0.5, which centers the rectangle horizontally.
      Must be in the range `[0, 1]`.
  vjust : float, default=0.5
      Vertical justification for the rectangle at point `y`
      Default is 0.5, which centers the rectangle vertically.
      Must be in the range `[0, 1]`.
  interpolation : str, default=None
      How to calculate values between the center points of
      adjacent rectangles. The default is `None`{.py} not to
      interpolate. Allowed values are:
      ```python
      "antialiased"
      "nearest"
      "bilinear"
      "bicubic"
      "spline16"
      "spline36"
      "hanning"
      "hamming"
      "hermite"
      "kaiser"
      "quadric"
      "catrom"
      "gaussian"
      "bessel"
      "mitchell"
      "sinc"
      "lanczos"
      "blackman"
      ```
  filterrad : float, default=4.0
      The filter radius for filters that have a radius parameter, i.e.
      when interpolation is one of: `sinc`, `lanczos`, `blackman`.
      Must be a number greater than zero.
  
  See Also
  --------
  plotnine.geoms.geom_rect
  plotnine.geoms.geom_tile
code: def setup_data(self, data: pd.DataFrame) -> pd.DataFrame:
      hjust = self.params["hjust"]
      vjust = self.params["vjust"]
      precision = np.sqrt(np.finfo(float).eps)
  
      x_diff = np.diff(np.sort(data["x"].unique()))
      if len(x_diff) == 0:
          w = 1
      elif np.any(np.abs(np.diff(x_diff)) > precision):
          warn(
              "Raster pixels are placed at uneven horizontal intervals "
              "and will be shifted. Consider using geom_tile() instead.",
              PlotnineWarning,
          )
          w = x_diff.min()
      else:
          w = x_diff[0]
  
      y_diff = np.diff(np.sort(data["y"].unique()))
      if len(y_diff) == 0:
          h = 1
      elif np.any(np.abs(np.diff(y_diff)) > precision):
          warn(
              "Raster pixels are placed at uneven vertical intervals "
              "and will be shifted. Consider using geom_tile() instead.",
              PlotnineWarning,
          )
          h = y_diff.min()
      else:
          h = y_diff[0]
  
      data["xmin"] = data["x"] - w * (1 - hjust)
      data["xmax"] = data["x"] + w * hjust
      data["ymin"] = data["y"] - h * (1 - vjust)
      data["ymax"] = data["y"] + h * vjust
      return data
  
file_path: plotnine/plotnine/geoms/geom_raster.py
imports: from __future__ import annotations
  import typing
  from warnings import warn
  import numpy
  from .._utils import resolution
  from ..coords import coord_cartesian
  from ..doctools import document
  from ..exceptions import PlotnineError, PlotnineWarning
  from .geom import geom
  from .geom_polygon import geom_polygon
label_desc: Use image node_id 2 for calling the geom_raster obj's underlying member method code with example usage: obj.setup_data(data) and returns: data