Plot points with dates.

    datasets can be Dataset object or list of Dataset.

def plot_date(datasets, **kwargs):
    """Plot points with dates.

    datasets can be Dataset object or list of Dataset.
    """

    defaults = {
        'grid': True,
        'xlabel': '',
        'ylabel': '',
        'title': '',
        'output': None,
        'figsize': (8, 6),
    }
    plot_params = {
        'color': 'b',
        'ls': '',
        'alpha': 0.75,
    }
    _update_params(defaults, plot_params, kwargs)
    if isinstance(datasets, Dataset):
        datasets = [datasets]

    colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k']
    color = plot_params.pop('color')
    try:
        del colors[colors.index(color)]
        colors.insert(0, color)
    except IndexError:
        pass
    colors = cycle(colors)

    fig, ax = plt.subplots()
    fig.set_size_inches(*defaults['figsize'])
    fig.autofmt_xdate()
    ax.autoscale_view()

    for dataset in datasets:
        if isinstance(dataset, Dataset):
            dates = list(dataset.get_column_by_type(dataset.DATE))
            values = list(dataset.get_column_by_type(dataset.NUM))
            label = dataset.name
        else:
            dates, values = dataset
            label = ''
        dates = date2num(dates)
        color = next(colors)
        plt.plot_date(dates, values, color=color, label=label, **plot_params)

    plt.xlabel(defaults['xlabel'])
    plt.ylabel(defaults['ylabel'])
    plt.title(defaults['title'])
    plt.grid(defaults['grid'])

    plt.legend(loc='best', prop={'size': 10})
    filename = defaults['output'] or get_tmp_file_name('.png')
    plt.savefig(filename)
    return filename