code: def get_data(self, element, ranges, style):
      mapping = dict(image="image", x="x", y="y", dw="dw", dh="dh")
      val_dim = element.vdims[0]
      style["color_mapper"] = self._get_colormapper(
          val_dim, element, ranges, style
      )
      if "alpha" in style:
          style["global_alpha"] = style["alpha"]
  
      if self.static_source:
          return {}, mapping, style
  
      if type(element) is Raster:
          l, b, r, t = element.extents
          if self.invert_axes:
              l, b, r, t = b, l, t, r
      else:
          l, b, r, t = element.bounds.lbrt()
          if self.invert_axes:
              l, b, r, t = b, l, t, r
  
      dh, dw = t - b, r - l
      data = dict(x=[l], y=[b], dw=[dw], dh=[dh])
  
      for i, vdim in enumerate(element.vdims, 2):
          if i > 2 and "hover" not in self.handles:
              break
          img = element.dimension_values(i, flat=False)
          if img.dtype.kind == "b":
              img = img.astype(np.int8)
          if 0 in img.shape:
              img = np.array([[np.nan]])
          if self.invert_axes ^ (type(element) is Raster):
              img = img.T
          key = "image" if i == 2 else dimension_sanitizer(vdim.name)
          data[key] = [img]
  
      return (data, mapping, style)
  
imports: import sys
  import numpy
  import param
  from bokeh.models import CustomJSHover, DatetimeAxis
  from ...core.util import cartesian_product, dimension_sanitizer, isfinite
  from ...element import Raster
  from ..util import categorical_legend
  from .chart import PointPlot
  from .element import ColorbarPlot, LegendPlot
  from .selection import BokehOverlaySelectionDisplay
  from .styles import base_properties, fill_properties, line_properties, mpl_to_bokeh
  from .util import bokeh33, bokeh34, colormesh
label_desc: Use image node_id 4 for calling the RasterPlot obj's underlying member method code with example usage: obj.get_data(element, ranges, style) and returns: data,  mapping,  style, dict,  mapping,  style