code: def __init__(
      self,
      ax,
      df,
      glyph,
      aggregator,
      agg_hook,
      shade_hook,
      plot_width,
      plot_height,
      x_range,
      y_range,
      width_scale,
      height_scale,
      origin="lower",
      interpolation="none",
      **kwargs,
  ):
      super().__init__(
          ax, origin=origin, interpolation=interpolation, **kwargs
      )
      self.axes = ax
      self.df = df
      self.glyph = glyph
      self.aggregator = aggregator
      self.agg_hook = agg_hook
      self.shade_hook = shade_hook
      self.plot_width = plot_width
      self.plot_height = plot_height
      self.width_scale = width_scale
      self.height_scale = height_scale
      if x_range is None:
          x_col = glyph.x_label
          x_range = (df[x_col].min(), df[x_col].max())
      if y_range is None:
          y_col = glyph.y_label
          y_range = (df[y_col].min(), df[y_col].max())
      ax.set_xlim(x_range)
      ax.set_ylim(y_range)
  
imports: import warnings
  from matplotlib.image import _ImageBase
  from matplotlib.patches import Patch
  from matplotlib.transforms import Bbox, TransformedBbox, BboxTransform
  import matplotlib
  import numpy
  from .None import reductions
  from .None import transfer_functions
  from .colors import Sets1to3
  from .core import bypixel, Canvas
label_desc: Use image node_id 1 to create a new DSArtist object from inherited base classes: _ImageBase with example: obj = DSArtist(ax, df, glyph, aggregator, agg_hook, shade_hook, plot_width, plot_height, x_range, y_range, width_scale, height_scale, origin, interpolation)