Make a scatter plot between X and Y on the canvas given.
        
        the kwargs are plotting library specific kwargs!
        
        :param canvas: the plotting librarys specific canvas to plot on.
        :param array-like X: the inputs to plot.
        :param array-like Y: the outputs to plot.
        :param array-like Z: the Z level to plot (if plotting 3d).
        :param array-like c: the colorlevel for each point.
        :param float vmin: minimum colorscale
        :param float vmax: maximum colorscale
        :param kwargs: the specific kwargs for your plotting library

def scatter(self, canvas, X, Y, Z=None, color=None, vmin=None, vmax=None, label=None, **kwargs):
        """
        Make a scatter plot between X and Y on the canvas given.
        
        the kwargs are plotting library specific kwargs!
        
        :param canvas: the plotting librarys specific canvas to plot on.
        :param array-like X: the inputs to plot.
        :param array-like Y: the outputs to plot.
        :param array-like Z: the Z level to plot (if plotting 3d).
        :param array-like c: the colorlevel for each point.
        :param float vmin: minimum colorscale
        :param float vmax: maximum colorscale
        :param kwargs: the specific kwargs for your plotting library
        """
        raise NotImplementedError("Implement all plot functions in AbstractPlottingLibrary in order to use your own plotting library")