docs: def line(darray, *args, **kwargs):
      """
      Line plot of DataArray index against values
  
      Wraps :func:`matplotlib:matplotlib.pyplot.plot`
  
      Parameters
      ----------
      darray : DataArray
          Must be 1 dimensional
      figsize : tuple, optional
          A tuple (width, height) of the figure in inches.
          Mutually exclusive with ``size`` and ``ax``.
      aspect : scalar, optional
          Aspect ratio of plot, so that ``aspect * size`` gives the width in
          inches. Only used if a ``size`` is provided.
      size : scalar, optional
          If provided, create a new figure for the plot with the given size.
          Height (in inches) of each plot. See also: ``aspect``.
      ax : matplotlib axes object, optional
          Axis on which to plot this figure. By default, use the current axis.
          Mutually exclusive with ``size`` and ``figsize``.
      hue : string, optional
          Dimension or coordinate for which you want multiple lines plotted.
          If plotting against a 2D coordinate, ``hue`` must be a dimension.
      x, y : string, optional
          Dimensions or coordinates for x, y axis.
          Only one of these may be specified.
          The other coordinate plots values from the DataArray on which this
          plot method is called.
      xscale, yscale : 'linear', 'symlog', 'log', 'logit', optional
          Specifies scaling for the x- and y-axes respectively
      xticks, yticks : Specify tick locations for x- and y-axes
      xlim, ylim : Specify x- and y-axes limits
      xincrease : None, True, or False, optional
          Should the values on the x axes be increasing from left to right?
          if None, use the default for the matplotlib function.
      yincrease : None, True, or False, optional
          Should the values on the y axes be increasing from top to bottom?
          if None, use the default for the matplotlib function.
      add_legend : boolean, optional
          Add legend with y axis coordinates (2D inputs only).
      *args, **kwargs : optional
          Additional arguments to matplotlib.pyplot.plot
  
      """
  
      # Handle facetgrids first
      row = kwargs.pop('row', None)
      col = kwargs.pop('col', None)
      if row or col:
          allargs = locals().copy()
          allargs.update(allargs.pop('kwargs'))
          allargs.pop('darray')
          return _easy_facetgrid(darray, line, kind='line', **allargs)
  
      ndims = len(darray.dims)
      if ndims > 2:
          raise ValueError('Line plots are for 1- or 2-dimensional DataArrays. '
                           'Passed DataArray has {ndims} '
                           'dimensions'.format(ndims=ndims))
  
      # Ensures consistency with .plot method
      figsize = kwargs.pop('figsize', None)
      aspect = kwargs.pop('aspect', None)
      size = kwargs.pop('size', None)
      ax = kwargs.pop('ax', None)
      hue = kwargs.pop('hue', None)
      x = kwargs.pop('x', None)
      y = kwargs.pop('y', None)
      xincrease = kwargs.pop('xincrease', None)  # default needs to be None
      yincrease = kwargs.pop('yincrease', None)
      xscale = kwargs.pop('xscale', None)  # default needs to be None
      yscale = kwargs.pop('yscale', None)
      xticks = kwargs.pop('xticks', None)
      yticks = kwargs.pop('yticks', None)
      xlim = kwargs.pop('xlim', None)
      ylim = kwargs.pop('ylim', None)
      add_legend = kwargs.pop('add_legend', True)
      _labels = kwargs.pop('_labels', True)
      if args is ():
          args = kwargs.pop('args', ())
  
      ax = get_axis(figsize, size, aspect, ax)
      xplt, yplt, hueplt, xlabel, ylabel, huelabel = \
          _infer_line_data(darray, x, y, hue)
  
      # Remove pd.Intervals if contained in xplt.values.
      if _valid_other_type(xplt.values, [pd.Interval]):
          # Is it a step plot? (see matplotlib.Axes.step)
          if kwargs.get('linestyle', '').startswith('steps-'):
              xplt_val, yplt_val = _interval_to_double_bound_points(xplt.values,
                                                                    yplt.values)
              # Remove steps-* to be sure that matplotlib is not confused
              kwargs['linestyle'] = (kwargs['linestyle']
                                     .replace('steps-pre', '')
                                     .replace('steps-post', '')
                                     .replace('steps-mid', ''))
              if kwargs['linestyle'] == '':
                  kwargs.pop('linestyle')
          else:
              xplt_val = _interval_to_mid_points(xplt.values)
              yplt_val = yplt.values
              xlabel += '_center'
      else:
          xplt_val = xplt.values
          yplt_val = yplt.values
  
      _ensure_plottable(xplt_val, yplt_val)
  
      primitive = ax.plot(xplt_val, yplt_val, *args, **kwargs)
  
      if _labels:
          if xlabel is not None:
              ax.set_xlabel(xlabel)
  
          if ylabel is not None:
              ax.set_ylabel(ylabel)
  
          ax.set_title(darray._title_for_slice())
  
      if darray.ndim == 2 and add_legend:
          ax.legend(handles=primitive,
                    labels=list(hueplt.values),
                    title=huelabel)
  
      # Rotate dates on xlabels
      # Do this without calling autofmt_xdate so that x-axes ticks
      # on other subplots (if any) are not deleted.
      # https://stackoverflow.com/questions/17430105/autofmt-xdate-deletes-x-axis-labels-of-all-subplots
      if np.issubdtype(xplt.dtype, np.datetime64):
          for xlabels in ax.get_xticklabels():
              xlabels.set_rotation(30)
              xlabels.set_ha('right')
  
      _update_axes(ax, xincrease, yincrease, xscale, yscale,
                   xticks, yticks, xlim, ylim)
  
      return primitive