(*args, **kwargs)
return plots
Plots a 2D parametric plot.

    The plotting uses an adaptive algorithm which samples recursively to
    accurately plot the plot. The adaptive algorithm uses a random point near
    the midpoint of two points that has to be further sampled. Hence the same
    plots can appear slightly different.

    Usage
    =====

    Single plot.

    ``plot_parametric(expr_x, expr_y, range, **kwargs)``

    If the range is not specified, then a default range of (-10, 10) is used.

    Multiple plots with same range.

    ``plot_parametric((expr1_x, expr1_y), (expr2_x, expr2_y), range, **kwargs)``

    If the range is not specified, then a default range of (-10, 10) is used.

    Multiple plots with different ranges.

    ``plot_parametric((expr_x, expr_y, range), ..., **kwargs)``

    Range has to be specified for every expression.

    Default range may change in the future if a more advanced default range
    detection algorithm is implemented.

    Arguments
    =========

    ``expr_x`` : Expression representing the function along x.

    ``expr_y`` : Expression representing the function along y.

    ``range``: (u, 0, 5), A 3-tuple denoting the range of the parameter
    variable.

    Keyword Arguments
    =================

    Arguments for ``Parametric2DLineSeries`` class:

    ``adaptive``: Boolean. The default value is set to True. Set adaptive to
    False and specify ``nb_of_points`` if uniform sampling is required.

    ``depth``: int Recursion depth of the adaptive algorithm. A depth of
    value ``n`` samples a maximum of `2^{n}` points.

    ``nb_of_points``: int. Used when the ``adaptive`` is set to False. The
    function is uniformly sampled at ``nb_of_points`` number of points.

    Aesthetics
    ----------

    ``line_color``: function which returns a float. Specifies the color for the
    plot. See ``sympy.plotting.Plot`` for more details.

    If there are multiple plots, then the same Series arguments are applied to
    all the plots. If you want to set these options separately, you can index
    the returned ``Plot`` object and set it.

    Arguments for ``Plot`` class:

    ``xlabel`` : str. Label for the x-axis.

    ``ylabel`` : str. Label for the y-axis.

    ``xscale``: {'linear', 'log'} Sets the scaling of the x-axis.

    ``yscale``: {'linear', 'log'} Sets the scaling if the y-axis.

    ``axis_center``: tuple of two floats denoting the coordinates of the center
    or {'center', 'auto'}

    ``xlim`` : tuple of two floats, denoting the x-axis limits.

    ``ylim`` : tuple of two floats, denoting the y-axis limits.

    Examples
    ========

    >>> from sympy import symbols, cos, sin
    >>> from sympy.plotting import plot_parametric
    >>> u = symbols('u')

    Single Parametric plot

    >>> plot_parametric(cos(u), sin(u), (u, -5, 5))
    Plot object containing:
    [0]: parametric cartesian line: (cos(u), sin(u)) for u over (-5.0, 5.0)


    Multiple parametric plot with single range.

    >>> plot_parametric((cos(u), sin(u)), (u, cos(u)))
    Plot object containing:
    [0]: parametric cartesian line: (cos(u), sin(u)) for u over (-10.0, 10.0)
    [1]: parametric cartesian line: (u, cos(u)) for u over (-10.0, 10.0)

    Multiple parametric plots.

    >>> plot_parametric((cos(u), sin(u), (u, -5, 5)),
    ...     (cos(u), u, (u, -5, 5)))
    Plot object containing:
    [0]: parametric cartesian line: (cos(u), sin(u)) for u over (-5.0, 5.0)
    [1]: parametric cartesian line: (cos(u), u) for u over (-5.0, 5.0)


    See Also
    ========
    Plot, Parametric2DLineSeries
Plots a 2D parametric plot.
Plots a 2D parametric plot .
def plot_parametric(*args, **kwargs):
    """
    Plots a 2D parametric plot.

    The plotting uses an adaptive algorithm which samples recursively to
    accurately plot the plot. The adaptive algorithm uses a random point near
    the midpoint of two points that has to be further sampled. Hence the same
    plots can appear slightly different.

    Usage
    =====

    Single plot.

    ``plot_parametric(expr_x, expr_y, range, **kwargs)``

    If the range is not specified, then a default range of (-10, 10) is used.

    Multiple plots with same range.

    ``plot_parametric((expr1_x, expr1_y), (expr2_x, expr2_y), range, **kwargs)``

    If the range is not specified, then a default range of (-10, 10) is used.

    Multiple plots with different ranges.

    ``plot_parametric((expr_x, expr_y, range), ..., **kwargs)``

    Range has to be specified for every expression.

    Default range may change in the future if a more advanced default range
    detection algorithm is implemented.

    Arguments
    =========

    ``expr_x`` : Expression representing the function along x.

    ``expr_y`` : Expression representing the function along y.

    ``range``: (u, 0, 5), A 3-tuple denoting the range of the parameter
    variable.

    Keyword Arguments
    =================

    Arguments for ``Parametric2DLineSeries`` class:

    ``adaptive``: Boolean. The default value is set to True. Set adaptive to
    False and specify ``nb_of_points`` if uniform sampling is required.

    ``depth``: int Recursion depth of the adaptive algorithm. A depth of
    value ``n`` samples a maximum of `2^{n}` points.

    ``nb_of_points``: int. Used when the ``adaptive`` is set to False. The
    function is uniformly sampled at ``nb_of_points`` number of points.

    Aesthetics
    ----------

    ``line_color``: function which returns a float. Specifies the color for the
    plot. See ``sympy.plotting.Plot`` for more details.

    If there are multiple plots, then the same Series arguments are applied to
    all the plots. If you want to set these options separately, you can index
    the returned ``Plot`` object and set it.

    Arguments for ``Plot`` class:

    ``xlabel`` : str. Label for the x-axis.

    ``ylabel`` : str. Label for the y-axis.

    ``xscale``: {'linear', 'log'} Sets the scaling of the x-axis.

    ``yscale``: {'linear', 'log'} Sets the scaling if the y-axis.

    ``axis_center``: tuple of two floats denoting the coordinates of the center
    or {'center', 'auto'}

    ``xlim`` : tuple of two floats, denoting the x-axis limits.

    ``ylim`` : tuple of two floats, denoting the y-axis limits.

    Examples
    ========

    >>> from sympy import symbols, cos, sin
    >>> from sympy.plotting import plot_parametric
    >>> u = symbols('u')

    Single Parametric plot

    >>> plot_parametric(cos(u), sin(u), (u, -5, 5))
    Plot object containing:
    [0]: parametric cartesian line: (cos(u), sin(u)) for u over (-5.0, 5.0)


    Multiple parametric plot with single range.

    >>> plot_parametric((cos(u), sin(u)), (u, cos(u)))
    Plot object containing:
    [0]: parametric cartesian line: (cos(u), sin(u)) for u over (-10.0, 10.0)
    [1]: parametric cartesian line: (u, cos(u)) for u over (-10.0, 10.0)

    Multiple parametric plots.

    >>> plot_parametric((cos(u), sin(u), (u, -5, 5)),
    ...     (cos(u), u, (u, -5, 5)))
    Plot object containing:
    [0]: parametric cartesian line: (cos(u), sin(u)) for u over (-5.0, 5.0)
    [1]: parametric cartesian line: (cos(u), u) for u over (-5.0, 5.0)


    See Also
    ========
    Plot, Parametric2DLineSeries

    """
    args = list(map(sympify, args))
    show = kwargs.pop('show', True)
    series = []
    plot_expr = check_arguments(args, 2, 1)
    series = [Parametric2DLineSeries(*arg, **kwargs) for arg in plot_expr]
    plots = Plot(*series, **kwargs)
    if show:
        plots.show()
    return plots
def plot_parametric ( * args , * * kwargs ) : args = list ( map ( sympify , args ) ) show = kwargs . pop ( 'show' , True ) series = [ ] plot_expr = check_arguments ( args , 2 , 1 ) series = [ Parametric2DLineSeries ( * arg , * * kwargs ) for arg in plot_expr ] plots = Plot ( * series , * * kwargs ) if show : plots . show ( ) return plots