<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def plot_2d_single(x, y, pdffilename, **kwargs):
 """ Do make_2d_single_plot and pass all arguments args: x: array_like xdata y: array_like ydata filepath: string filepath of pdf to save **kwargs: figure_options: passed to matplotlib.pyplot.figure xlabel_options: dict kwargs passed in set_xlabel ylabel_options: dict kwargs passed in set_ylabel suptitle_options: dict kwargs passed in figure.suptitle title_options: dict kwargs passed in set_title scilimits: tuple if number outside this limits, will use scientific notation errors: dictionary, array_like, scalar dictionary: {"xerr": xerr, "yerr": yerr} array_like, scalar: yerr fmt: string, default="k." line format bestfitfmt: string, default="k-" bestfit line format bestfit: BestFit child class eg. bestfit.polyfit.PolyFit, bestfit.logfit.LogFit bestfitlim: tuple, default=None xlim for bestfit line suptitle: string, default=xlim suptitle of pdf plot, formatted with outputdict suptitle_fontsize: int, default=15 font size of suptitle title: string, default=None title of the pdf plot title_fontsize: int, default=12 font size of title, formatted with outputdict xlabel: string, default=None label of string xlabel, formatted with outputdict ylabel: string, default=None label of string ylabel, formatted with outputdict xlim: tuple, default=None xlim ylim: tuple, default=None ylim outputdict: dictionary, default=None pass keys and arguments for formatting and to output """

        pdffilepath = DataSets.get_pdffilepath(pdffilename)
        plotsingle2d = PlotSingle2D(x, y, pdffilepath, **kwargs)
        return plotsingle2d.plot()