Add a data series to the plot.

        :param x: array containing x-values.
        :param y: array containing y-values.
        :param xerr: (optional) array containing errors on the x-values.
        :param yerr: (optional) array containing errors on the y-values.
        :param mark: the symbol used to mark the data point.  May be None,
            or any plot mark accepted by TikZ (e.g. ``*, x, +, o, square,
            triangle``).
        :param linestyle: the line style used to connect the data points.
            May be None, or any line style accepted by TikZ (e.g. solid,
            dashed, dotted, thick, or even combinations like
            "red,thick,dashed").
        :param use_steps: if True, draw a stepped plot.
        :param markstyle: the style of the plot marks (e.g. 'mark
            size=.75pt')

        The dimensions of x, y, xerr and yerr should be equal.  However,
        xerr and yerr may be empty lists.  Each element in xerr and yerr
        may be a single value for symmetric error bars, or a tuple of
        two values for assymetric errors.

def plot(self, x, y, xerr=[], yerr=[], mark='o',
             linestyle='solid', use_steps=False, markstyle=None, legend=None):
        """Add a data series to the plot.

        :param x: array containing x-values.
        :param y: array containing y-values.
        :param xerr: (optional) array containing errors on the x-values.
        :param yerr: (optional) array containing errors on the y-values.
        :param mark: the symbol used to mark the data point.  May be None,
            or any plot mark accepted by TikZ (e.g. ``*, x, +, o, square,
            triangle``).
        :param linestyle: the line style used to connect the data points.
            May be None, or any line style accepted by TikZ (e.g. solid,
            dashed, dotted, thick, or even combinations like
            "red,thick,dashed").
        :param use_steps: if True, draw a stepped plot.
        :param markstyle: the style of the plot marks (e.g. 'mark
            size=.75pt')

        The dimensions of x, y, xerr and yerr should be equal.  However,
        xerr and yerr may be empty lists.  Each element in xerr and yerr
        may be a single value for symmetric error bars, or a tuple of
        two values for assymetric errors.

        """
        if len(x) != len(y):
            raise RuntimeError(
                'The length of the x and y coordinates should be equal')
        if (len(xerr) and len(xerr) != len(x) or
                len(yerr) and len(yerr) != len(y)):
            raise RuntimeError(
                'The length of the errors and coordinates should be equal')

        # clear the background of the marks
        self._clear_plot_mark_background(x, y, mark, markstyle)
        # draw the plot series over the background
        options = self._parse_plot_options(mark, linestyle, use_steps,
                                           markstyle)
        plot_series = self._create_plot_series_object(x, y, xerr, yerr,
                                                      options, legend)
        self.plot_series_list.append(plot_series)