code: def _plot_data(ax, data, bounds, color="red", strict=True, **kwds):
      """plot datapoints for a given dataset
  
      ax -- matplotlib 'Axes3D' plot object
      data -- list of datapoints, where datapoints are 3-tuples (i.e. x,y,z)
      bounds -- list of tuples of bounds for the plot; (lower,upper) for each axis
      color -- string name (or rbg value) of color to use for datapoints
      """
      _2D = kwds.get("_2D", False)
      # strict = True # always respect the bounds
      lb, ub = zip(*bounds)
      # plot the datapoints themselves
      from numpy import asarray
  
      for datapt in data:
          position = asarray(datapt)
          d_hi = ub - position
          d_lo = lb - position
          if strict and (
              any(d_hi < 0) or any(d_lo > 0)
          ):  # XXX: any or just in Y ?
              pass  # don't plot if datapt is out of bounds
          else:
              if _2D:
                  ax.plot(
                      [datapt[0]],
                      [datapt[1]],
                      color=color,
                      marker="o",
                      markersize=10,
                  )
              else:
                  ax.plot(
                      [datapt[0]],
                      [datapt[1]],
                      [datapt[2]],
                      color=color,
                      marker="o",
                      markersize=10,
                  )
      return ax
  
file_path: mystic/mystic/support.py
label_desc: Use image node_id 5 for calling a global function with example usage: _plot_data(ax, data, bounds, color, strict) and returns: ax