code: def init_artists(self, ax, plot_args, plot_kwargs):
      handles = super().init_artists(ax, plot_args, plot_kwargs)
      if (
          "holoviews.operation.datashader" not in sys.modules
          or not self.show_legend
      ):
          return handles
      try:
          legend = categorical_legend(
              self.current_frame, backend=self.backend
          )
      except Exception:
          return handles
      if legend is None:
          return handles
      legend_params = {
          k: v
          for k, v in self.param.values().items()
          if k.startswith("legend")
      }
      self._legend_plot = PointPlot(
          legend,
          axis=ax,
          fig=self.state,
          keys=self.keys,
          dimensions=self.dimensions,
          overlaid=1,
          **legend_params,
      )
      self._legend_plot.initialize_plot()
      return handles
  
imports: import sys
  import numpy
  import param
  from packaging.version import Version
  from ...core import CompositeOverlay, Element, traversal
  from ...core.util import isfinite, match_spec, max_range, unique_iterator
  from ...element.raster import RGB, Image, Raster
  from ..util import categorical_legend
  from .chart import PointPlot
  from .element import ColorbarPlot, ElementPlot, LegendPlot, OverlayPlot
  from .plot import GridPlot, MPLPlot, mpl_rc_context
  from .util import get_raster_array, mpl_version
label_desc: Use image node_id 2 for calling the RGBPlot obj's underlying member method code with example usage: obj.init_artists(ax, plot_args, plot_kwargs) and returns: handles, handles, handles, handles