Create plot

def do_plot_and_bestfit(self):
        """
        Create plot
        """
        # Plot
        fmt = str(self.kwargs.get("fmt", "k."))
        if "errors" in self.kwargs:
            errors = self.kwargs["errors"]
            if isinstance(errors, dict):
                self.subplot.errorbar(self.x, self.y, fmt=fmt,
                                      xerr=errors.get("xerr", None),
                                      yerr=errors.get("yerr", None))
            elif isinstance(errors, (collections.Sequence, np.ndarray, float)):
                self.subplot.errorbar(self.x, self.y, fmt=fmt, yerr=errors)
            else:
                self.subplot.plot(self.x, self.y, fmt)
        else:
            self.subplot.plot(self.x, self.y, fmt)

        # bestfit
        bestfit = self.kwargs.get("bestfit", None)
        if bestfit is not None:
            bestfitlim = self.kwargs.get("bestfitlim", None)
            if bestfitlim is None:
                bestfitlim = self.kwargs.get("xlim", None)
            if bestfitlim is None:
                bestfitlim = (min(self.x), max(self.x))
            fit_args = bestfit.do_bestfit()
            bestfit_line = bestfit.get_bestfit_line(
                x_min=bestfitlim[0], x_max=bestfitlim[1])
            self.subplot.plot(
                bestfit_line[0], bestfit_line[1],
                self.kwargs.get("bestfitfmt", "k-")
            )
            self.outputdict["fit_args"] = fit_args
            self.outputdict["rmse"] = bestfit.get_rmse()
        return self