'Make a step plot.
Parameters
x : array_like
1-D sequence, and it is assumed, but not checked,
that it is uniformly increasing.
y : array_like
1-D sequence
Returns
list
List of lines that were added.
Other Parameters
where : [ \'pre\' | \'post\' | \'mid\'  ]
If \'pre\' (the default), the interval from
``x[i]`` to ``x[i+1]`` has level ``y[i+1]``.
If \'post\', that interval has level ``y[i]``.
If \'mid\', the jumps in *y* occur half-way between the
*x*-values.
Notes
Additional parameters are the same as those for
:func:`~matplotlib.pyplot.plot`.'

@_preprocess_data(replace_names=[u'x', u'y'], label_namer=u'y')
def step(self, x, y, *args, **kwargs):

    where = kwargs.pop(u'where', u'pre')
    if (where not in (u'pre', u'post', u'mid')):
        raise ValueError(u"'where'    argument    to    step    must    be    'pre',    'post'    or    'mid'")
    usr_linestyle = kwargs.pop(u'linestyle', u'')
    kwargs[u'linestyle'] = ((u'steps-' + where) + usr_linestyle)
    return self.plot(x, y, *args, **kwargs)
