
    _Mh                         d dl Zd dlmZ g dZed	d            Zd Zed	d            Zed	d            Z	ed	d            Z
dS )
    N)	decorator)delaunay_plot_2dconvex_hull_plot_2dvoronoi_plot_2dc                 f   dd l m} |3|                                }|                                } | |fd|i|S  t	          |dd                       }|r | |fd|i|S 	 |                    d            | |fd|i||                    |           S # |                    |           w xY w)Nr   axisholdc                      dS )NT r       X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/spatial/_plotutils.py<lambda>z_held_figure.<locals>.<lambda>   s    T r   T)matplotlib.pyplotpyplotfiguregcagetattrhold)funcobjr   kwpltfigwas_helds          r   _held_figurer      s    ######	zjjllWWYYtC%%B%"%%% 3wr8\\2244H &tC%%B%"%%%
tC%%B%"%%
s   $B B0c                 $   dt          j        |d          z  }|                    d          |z
  }|                    d          |z   }|                     |d         |d                    |                     |d         |d                    d S )Ng?r   axis   )npptpminmaxset_xlimset_ylim)r   pointsmarginxy_minxy_maxs        r   _adjust_boundsr*      s    26&q))))FZZQZ&(FZZQZ&(FKKq	6!9%%%KKq	6!9%%%%%r   c                 ,   | j         j        d         dk    rt          d          | j         j        \  }}|                    ||d           |                    ||| j                                                   t          || j                    |j	        S )aB  
    Plot the given Delaunay triangulation in 2-D

    Parameters
    ----------
    tri : scipy.spatial.Delaunay instance
        Triangulation to plot
    ax : matplotlib.axes.Axes instance, optional
        Axes to plot on

    Returns
    -------
    fig : matplotlib.figure.Figure instance
        Figure for the plot

    See Also
    --------
    Delaunay
    matplotlib.pyplot.triplot

    Notes
    -----
    Requires Matplotlib.

    Examples
    --------

    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy.spatial import Delaunay, delaunay_plot_2d

    The Delaunay triangulation of a set of random points:

    >>> rng = np.random.default_rng()
    >>> points = rng.random((30, 2))
    >>> tri = Delaunay(points)

    Plot it:

    >>> _ = delaunay_plot_2d(tri)
    >>> plt.show()

    r      z!Delaunay triangulation is not 2-Do)
r&   shape
ValueErrorTplottriplot	simplicescopyr*   r   )trir   xys       r   r   r   $   s    Z za<===:<DAqGGAq#JJq!S]''))***2sz"""9r   c                 d    ddl m}  j        j        d         dk    rt	          d          |                     j        dddf          j        dddf         d            fd j        D             }|                     ||d	d
                     t          | j                   |j	        S )a&  
    Plot the given convex hull diagram in 2-D

    Parameters
    ----------
    hull : scipy.spatial.ConvexHull instance
        Convex hull to plot
    ax : matplotlib.axes.Axes instance, optional
        Axes to plot on

    Returns
    -------
    fig : matplotlib.figure.Figure instance
        Figure for the plot

    See Also
    --------
    ConvexHull

    Notes
    -----
    Requires Matplotlib.


    Examples
    --------

    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy.spatial import ConvexHull, convex_hull_plot_2d

    The convex hull of a random set of points:

    >>> rng = np.random.default_rng()
    >>> points = rng.random((30, 2))
    >>> hull = ConvexHull(points)

    Plot it:

    >>> _ = convex_hull_plot_2d(hull)
    >>> plt.show()

    r   LineCollectionr   r,   zConvex hull is not 2-DNr-   c                 *    g | ]}j         |         S r   )r&   ).0simplexhulls     r   
<listcomp>z'convex_hull_plot_2d.<locals>.<listcomp>   s     HHHgT[)HHHr   ksolid)colors	linestyle)
matplotlib.collectionsr:   r&   r.   r/   r1   r3   add_collectionr*   r   )r>   r   r:   line_segmentss   `   r   r   r   ]   s    Z 655555{q  1222GGDK1t{111a40#666HHHHHHHMnn],//68 8 8 9 9 9 2t{###9r   c           	         ddl m} | j        j        d         dk    rt	          d          |                    dd          rM|                    dd	          }|                    | j        d	d	df         | j        d	d	df         d
|           |                    dd          r5|                    | j        d	d	df         | j        d	d	df         d           |                    dd          }|                    dd          }|                    dd          }| j                            d          }t          j
        | j        d          }	g }
g }t          | j        | j                  D ]\  }}t          j        |          }t          j        |dk              r!|
                    | j        |                    S||dk             d         }| j        |d                  | j        |d                  z
  }|t          j                            |          z  }t          j        |d          |d         g          }| j        |                             d          }t          j        t          j        ||z
  |                    |z  }| j        r| }t/          |	                                |	                                z            }| j        |         ||	                                z  |z  z   }|                    | j        |         |g           |                     ||
|||d                     |                     |||||d                     t7          || j                   |j        S )ae  
    Plot the given Voronoi diagram in 2-D

    Parameters
    ----------
    vor : scipy.spatial.Voronoi instance
        Diagram to plot
    ax : matplotlib.axes.Axes instance, optional
        Axes to plot on
    show_points : bool, optional
        Add the Voronoi points to the plot.
    show_vertices : bool, optional
        Add the Voronoi vertices to the plot.
    line_colors : string, optional
        Specifies the line color for polygon boundaries
    line_width : float, optional
        Specifies the line width for polygon boundaries
    line_alpha : float, optional
        Specifies the line alpha for polygon boundaries
    point_size : float, optional
        Specifies the size of points

    Returns
    -------
    fig : matplotlib.figure.Figure instance
        Figure for the plot

    See Also
    --------
    Voronoi

    Notes
    -----
    Requires Matplotlib. For degenerate input, including collinearity and
    other violations of general position, it may be preferable to
    calculate the Voronoi diagram with Qhull options ``QJ`` for random
    joggling, or ``Qt`` to enforce triangulated output. Otherwise, some
    Voronoi regions may not be visible.

    Examples
    --------
    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy.spatial import Voronoi, voronoi_plot_2d

    Create a set of points for the example:

    >>> rng = np.random.default_rng()
    >>> points = rng.random((10,2))

    Generate the Voronoi diagram for the points:

    >>> vor = Voronoi(points)

    Use `voronoi_plot_2d` to plot the diagram:

    >>> fig = voronoi_plot_2d(vor)

    Use `voronoi_plot_2d` to plot the diagram again, with some settings
    customized:

    >>> fig = voronoi_plot_2d(vor, show_vertices=False, line_colors='orange',
    ...                       line_width=2, line_alpha=0.6, point_size=2)
    >>> plt.show()

    r   r9   r   r,   zVoronoi diagram is not 2-Dshow_pointsT
point_sizeN.)
markersizeshow_verticesr-   line_colorsr@   
line_widthg      ?
line_alphar   rA   )rB   lwalpharC   dashed)rD   r:   r&   r.   r/   getr1   verticesmeanr    r!   zipridge_pointsridge_verticesasarrayallappendlinalgnormarraysigndotfurthest_siteabsr#   r"   rE   r*   r   )vorr   r   r:   rI   rM   rN   rO   center	ptp_boundfinite_segmentsinfinite_segmentspointidxr=   itnmidpoint	directionaspect_factor	far_points                        r   r   r      ss   H 655555
za5666	vvmT"" PVVL$//


111a4 #*QQQT"2CJOOO	vvot$$ =
QQQT"CLA$6<<<&&,,Kc**Jc**JZ__!_$$Fsz***IO !133EFF C C'*W%%6'Q, 	C""3<#899991%a(A
8A;'#*Xa[*AAA"""A1Q4%1''Az(+00a088Hx&'8! < <==AI! '&J		)--// ABBMQ)immoo*E*UUI$$cl1oy%ABBBBnn_,7(2+5/6	8 8 8 9 9 9
 nn%6,7(2+5/7	9 9 9 : : : 2sz"""9r   )N)numpyr    scipy._lib.decoratorr   
_decorator__all__r   r*   r   r   r   r   r   r   <module>rt      s        8 8 8 8 8 8
H
H
H    (& & & 5 5 5 5p 8 8 8 8v x x x x x xr   