
    ^j                         d Z ddlZddlmZmZ ddlZddlZddl	m
Z
mZ ddlmZ ddlmZmZ ddlmZmZ  ed	      \  ZZZZZZZZZZZZ  e ejB                  d
            Z" G d d      Z#y)a  
Functions to handle markers; used by the marker functionality of
`~matplotlib.axes.Axes.plot`, `~matplotlib.axes.Axes.scatter`, and
`~matplotlib.axes.Axes.errorbar`.

All possible markers are defined here:

============================== ====== =========================================
marker                         symbol description
============================== ====== =========================================
``"."``                        |m00|  point
``","``                        |m01|  pixel
``"o"``                        |m02|  circle
``"v"``                        |m03|  triangle_down
``"^"``                        |m04|  triangle_up
``"<"``                        |m05|  triangle_left
``">"``                        |m06|  triangle_right
``"1"``                        |m07|  tri_down
``"2"``                        |m08|  tri_up
``"3"``                        |m09|  tri_left
``"4"``                        |m10|  tri_right
``"8"``                        |m11|  octagon
``"s"``                        |m12|  square
``"p"``                        |m13|  pentagon
``"P"``                        |m23|  plus (filled)
``"*"``                        |m14|  star
``"h"``                        |m15|  hexagon1
``"H"``                        |m16|  hexagon2
``"+"``                        |m17|  plus
``"x"``                        |m18|  x
``"X"``                        |m24|  x (filled)
``"D"``                        |m19|  diamond
``"d"``                        |m20|  thin_diamond
``"|"``                        |m21|  vline
``"_"``                        |m22|  hline
``0`` (``TICKLEFT``)           |m25|  tickleft
``1`` (``TICKRIGHT``)          |m26|  tickright
``2`` (``TICKUP``)             |m27|  tickup
``3`` (``TICKDOWN``)           |m28|  tickdown
``4`` (``CARETLEFT``)          |m29|  caretleft
``5`` (``CARETRIGHT``)         |m30|  caretright
``6`` (``CARETUP``)            |m31|  caretup
``7`` (``CARETDOWN``)          |m32|  caretdown
``8`` (``CARETLEFTBASE``)      |m33|  caretleft (centered at base)
``9`` (``CARETRIGHTBASE``)     |m34|  caretright (centered at base)
``10`` (``CARETUPBASE``)       |m35|  caretup (centered at base)
``11`` (``CARETDOWNBASE``)     |m36|  caretdown (centered at base)
``"none"`` or ``"None"``              nothing
``" "`` or  ``""``                    nothing
``"$...$"``                    |m37|  Render the string using mathtext.
                                      E.g ``"$f$"`` for marker showing the
                                      letter ``f``.
``verts``                             A list of (x, y) pairs used for Path
                                      vertices. The center of the marker is
                                      located at (0, 0) and the size is
                                      normalized, such that the created path
                                      is encapsulated inside the unit cell.
``path``                              A `~matplotlib.path.Path` instance.
``(numsides, 0, angle)``              A regular polygon with ``numsides``
                                      sides, rotated by ``angle``.
``(numsides, 1, angle)``              A star-like symbol with ``numsides``
                                      sides, rotated by ``angle``.
``(numsides, 2, angle)``              An asterisk with ``numsides`` sides,
                                      rotated by ``angle``.
============================== ====== =========================================

Note that special symbols can be defined via the
:ref:`STIX math font <mathtext>`,
e.g. ``"$\u266B$"``. For an overview over the STIX font symbols refer to the
`STIX font table <http://www.stixfonts.org/allGlyphs.html>`_.
Also see the :doc:`/gallery/text_labels_and_annotations/stix_fonts_demo`.

Integer numbers from ``0`` to ``11`` create lines and triangles. Those are
equally accessible via capitalized variables, like ``CARETDOWNBASE``.
Hence the following are equivalent::

    plt.plot([1, 2, 3], marker=11)
    plt.plot([1, 2, 3], marker=matplotlib.markers.CARETDOWNBASE)

Markers join and cap styles can be customized by creating a new instance of
MarkerStyle.
A MarkerStyle can also have a custom `~matplotlib.transforms.Transform`
allowing it to be arbitrarily rotated or offset.

Examples showing the use of markers:

* :doc:`/gallery/lines_bars_and_markers/marker_reference`
* :doc:`/gallery/lines_bars_and_markers/scatter_star_poly`
* :doc:`/gallery/lines_bars_and_markers/multivariate_marker_plot`

.. |m00| image:: /_static/markers/m00.png
.. |m01| image:: /_static/markers/m01.png
.. |m02| image:: /_static/markers/m02.png
.. |m03| image:: /_static/markers/m03.png
.. |m04| image:: /_static/markers/m04.png
.. |m05| image:: /_static/markers/m05.png
.. |m06| image:: /_static/markers/m06.png
.. |m07| image:: /_static/markers/m07.png
.. |m08| image:: /_static/markers/m08.png
.. |m09| image:: /_static/markers/m09.png
.. |m10| image:: /_static/markers/m10.png
.. |m11| image:: /_static/markers/m11.png
.. |m12| image:: /_static/markers/m12.png
.. |m13| image:: /_static/markers/m13.png
.. |m14| image:: /_static/markers/m14.png
.. |m15| image:: /_static/markers/m15.png
.. |m16| image:: /_static/markers/m16.png
.. |m17| image:: /_static/markers/m17.png
.. |m18| image:: /_static/markers/m18.png
.. |m19| image:: /_static/markers/m19.png
.. |m20| image:: /_static/markers/m20.png
.. |m21| image:: /_static/markers/m21.png
.. |m22| image:: /_static/markers/m22.png
.. |m23| image:: /_static/markers/m23.png
.. |m24| image:: /_static/markers/m24.png
.. |m25| image:: /_static/markers/m25.png
.. |m26| image:: /_static/markers/m26.png
.. |m27| image:: /_static/markers/m27.png
.. |m28| image:: /_static/markers/m28.png
.. |m29| image:: /_static/markers/m29.png
.. |m30| image:: /_static/markers/m30.png
.. |m31| image:: /_static/markers/m31.png
.. |m32| image:: /_static/markers/m32.png
.. |m33| image:: /_static/markers/m33.png
.. |m34| image:: /_static/markers/m34.png
.. |m35| image:: /_static/markers/m35.png
.. |m36| image:: /_static/markers/m36.png
.. |m37| image:: /_static/markers/m37.png
    N)HashableSized   )_apicbook)Path)IdentityTransformAffine2D)	JoinStyleCapStyle   )r      c                   B   e Zd ZdZi dddddddd	d
dddddddddddddddddddddd d!d"d#i d$d%d&d&d'd(d)d*d+d,d-d.d/d0d1d2ed3ed4ed5ed6ed7e	d8e
d9ed:ed;ed<ed=ed>d?d@dAd@dBd@dCd@iZdDZdEZdFZ	 ddHZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT Z dU Z!dV Z"dW Z#dX Z$dGdGdYdZZ%dd[Z&d\ Z'd] Z(d^ Z)d_ Z*d` Z+da Z,db Z-dddZ.de Z/df Z0 e1jd                  dgdhgdidigdhdigg      Z3 e1jd                  dgdhgdjdkgdldkgg      Z4 e1jd                  djdkgdldkgdhdigdidigg      Z5 e1jd                  dgdhgdgdigdidigg      Z6 e1jd                  dgdhgdgdigdhdigg      Z7dm Z8dn Z9do Z:dp Z;dq Z<dr Z=ds Z>dt Z?du Z@dv ZAdw ZBdx ZCdy ZD e1dzd{gdzdcgg      ZEd| ZFd} ZG e1dzdzgdcdzgg      ZHd~ ZId ZJ e1ddzgddcgg      ZKd ZLd ZM e1dzdzgdzd{gdzdzgddgdzdzgddgge1j                  e1j                  e1j                  e1j                  e1j                  e1j                  g      ZPd ZQd ZRd ZSd ZT e1d{dgdzdzgdcdgg      ZUd ZVd ZWd ZXd ZY e1d{dzgdzdgdcdggg      ZZd Z[d Z\d Z]d Z^ e1d{dzgdcdzgdzd{gdzdcgge1j                  e1j                  e1j                  e1j                  g      Z_d Z` e1d{d{gdcdcgd{dcgdcd{gge1j                  e1j                  e1j                  e1j                  g      Zad Zb e1jd                   ecj                  g d      dz        Ze e1jd                   ecj                  g d      dz        Zfd Zg e1jd                   ecj                  g d      dz        Zh e1jd                   ecj                  g d      dz        Zid ZjyG)MarkerStyleag  
    A class representing marker types.

    Instances are immutable. If you need to change anything, create a new
    instance.

    Attributes
    ----------
    markers : dict
        All known markers.
    filled_markers : tuple
        All known filled markers. This is a subset of *markers*.
    fillstyles : tuple
        The supported fillstyles.
    .point,pixelocirclevtriangle_down^triangle_up<triangle_left>triangle_right1tri_down2tri_up3tri_left4	tri_right8octagonssquareppentagon*starhhexagon1Hhexagon2+plusxDdiamonddthin_diamond|vline_hlinePplus_filledXx_filledtickleft	tickrighttickuptickdown	caretleft
caretrightcaretup	caretdowncaretleftbasecaretrightbasecaretupbasecaretdownbaseNonenothingnone  )r   r   r   r   r   r   r'   r)   r+   r-   r/   r1   r6   r8   r>   r@   )fullleftrightbottomtoprP   )rT   rU   rV   rW   Nc                     d| _         || _        |t        |      nd| _        |t	        |      nd| _        | j                  |       | j                  |       y)a]  
        Parameters
        ----------
        marker : str, array-like, Path, MarkerStyle
            - Another instance of `MarkerStyle` copies the details of that *marker*.
            - For other possible marker values, see the module docstring
              `matplotlib.markers`.

        fillstyle : str, default: :rc:`markers.fillstyle`
            One of 'full', 'left', 'right', 'bottom', 'top', 'none'.

        transform : `~matplotlib.transforms.Transform`, optional
            Transform that will be combined with the native transform of the
            marker.

        capstyle : `.CapStyle` or %(CapStyle)s, optional
            Cap style that will override the default cap style of the marker.

        joinstyle : `.JoinStyle` or %(JoinStyle)s, optional
            Join style that will override the default join style of the marker.
        N)_marker_function_user_transformr   _user_capstyler   _user_joinstyle_set_fillstyle_set_marker)selfmarker	fillstyle	transformcapstyle	joinstyles         K/opt/ringagent/.cad-venv/lib/python3.12/site-packages/matplotlib/markers.py__init__zMarkerStyle.__init__   sY    . !%(4<4Hhx0d7@7Ly3RVI&     c                 4   | j                   y t        | _        t               | _        d | _        d | _        d | _        t        j                  | _
        | j                  xs t        j                  | _        | j                  dk7  | _        | j                          y )NrP   )rY   _empty_path_pathr	   
_transform	_alt_path_alt_transform_snap_thresholdr   round
_joinstyler[   r   butt	_capstyle
_fillstyle_filledr_   s    re   _recachezMarkerStyle._recache   sx      ( 
+-"##//,,= &0rg   c                 R    t        t        | j                  j                              S N)boollenrj   verticesru   s    re   __bool__zMarkerStyle.__bool__
  s    C

++,--rg   c                     | j                   S rx   rt   ru   s    re   	is_filledzMarkerStyle.is_filled      ||rg   c                     | j                   S rx   )rs   ru   s    re   get_fillstylezMarkerStyle.get_fillstyle  s    rg   c                     t        j                  |d      }t        j                  | j                  |       || _        y)z
        Set the fillstyle.

        Parameters
        ----------
        fillstyle : {'full', 'left', 'right', 'bottom', 'top', 'none'}
            The part of the marker surface that is colored with
            markerfacecolor.
        zmarkers.fillstyle)ra   N)mpl
_val_or_rcr   check_in_list
fillstylesrs   )r_   ra   s     re   r]   zMarkerStyle._set_fillstyle  s0     NN9.AB	4??i@#rg   c                 .    | j                   j                  S rx   )rp   nameru   s    re   get_joinstylezMarkerStyle.get_joinstyle!  s    ###rg   c                 .    | j                   j                  S rx   )rr   r   ru   s    re   get_capstylezMarkerStyle.get_capstyle$  s    ~~"""rg   c                     | j                   S rx   )_markerru   s    re   
get_markerzMarkerStyle.get_marker'  r   rg   c                 r   t        |t              r(t        j                  |      r| j                  | _        n7t        |t              r0|| j                  v r"t        | d| j                  |   z         | _        nt        |t        j                        r3|j                  dk(  r$|j                  d   dk(  r| j                  | _        nt        |t              r| j                  | _        nt        |t               r&t#        |      dv r|d   dv r| j$                  | _        nRt        |t&              r%t)        j*                  |j,                        | _        n	 t        |       | j                  | _        t        |t&              s|| _        | j3                          yy# t.        $ r}t/        d|      |d}~ww xY w)a=  
        Set the marker.

        Parameters
        ----------
        marker : str, array-like, Path, MarkerStyle
            - Another instance of `MarkerStyle` copies the details of that *marker*.
            - For other possible marker values see the module docstring
              `matplotlib.markers`.
        _set_r   r   )r      )r   r   r   zUnrecognized marker style N)
isinstancestrr   is_math_text_set_mathtext_pathrY   r   markersgetattrnpndarrayndimshape_set_verticesr   _set_path_markerr   rz   _set_tuple_markerr   copydeepcopy__dict__
ValueErrorr   rv   )r_   r`   errs      re   r^   zMarkerStyle._set_marker*  sb    fc"u'9'9&'A$($;$;D!)f.D$+D'DLL<P2P$QD!,1AQ1$$($6$6D!%$($9$9D!'CK6,Aq	Y&$($:$:D!, MM&//:DMFV(,(:(:%
 &+.!DLMMO /	  F 0
;=BEFFs   F 	F6"F11F6c                     | j                   S )z
        Return a `.Path` for the primary part of the marker.

        For unfilled markers this is the whole marker, for filled markers,
        this is the area to be drawn with *markerfacecolor*.
        )rj   ru   s    re   get_pathzMarkerStyle.get_pathO  s     zzrg   c                     | j                   | j                  j                         S | j                  | j                   z   j                         S )zj
        Return the transform to be applied to the `.Path` from
        `MarkerStyle.get_path()`.
        )rZ   rk   frozenru   s    re   get_transformzMarkerStyle.get_transformX  sA    
 '??))++OOd&:&::BBDDrg   c                     | j                   S )z
        Return a `.Path` for the alternate part of the marker.

        For unfilled markers, this is *None*; for filled markers, this is the
        area to be drawn with *markerfacecoloralt*.
        )rl   ru   s    re   get_alt_pathzMarkerStyle.get_alt_pathb  s     ~~rg   c                     | j                   | j                  j                         S | j                  | j                   z   j                         S )zn
        Return the transform to be applied to the `.Path` from
        `MarkerStyle.get_alt_path()`.
        )rZ   rm   r   ru   s    re   get_alt_transformzMarkerStyle.get_alt_transformk  sE    
 '&&--//''$*>*>>FFHHrg   c                     | j                   S rx   )rn   ru   s    re   get_snap_thresholdzMarkerStyle.get_snap_thresholdu  s    ###rg   c                 P    | j                   | j                   j                         S y)z.Return user supplied part of marker transform.N)rZ   r   ru   s    re   get_user_transformzMarkerStyle.get_user_transformx  s(    +''..00 ,rg   c                 p    t        |       }|j                  |xj                  |z  c_        |S ||_        |S )z
        Return a new version of this marker with the transform applied.

        Parameters
        ----------
        transform : `~matplotlib.transforms.Affine2D`
            Transform will be combined with current user supplied transform.
        )r   rZ   )r_   rb   
new_markers      re   transformedzMarkerStyle.transformed}  sC     !&
%%1&&)3&  *3J&rg   )degradc                   ||t        d      ||t        d      t        |       }|j                  t               |_        ||j                  j	                  |       ||j                  j                  |       |S )aB  
        Return a new version of this marker rotated by specified angle.

        Parameters
        ----------
        deg : float, optional
            Rotation angle in degrees.

        rad : float, optional
            Rotation angle in radians.

        .. note:: You must specify exactly one of deg or rad.
        zOne of deg or rad is requiredz'Only one of deg and rad can be supplied)r   r   rZ   r
   
rotate_degrotate)r_   r   r   r   s       re   rotatedzMarkerStyle.rotated  s     ;3;<==?sFGG &
%%-)1J&?&&11#6?&&--c2rg   c                     ||}t        |       }|j                  xs
 t               }|j                  ||      |_        |S )aW  
        Return new marker scaled by specified scale factors.

        If *sy* is not given, the same scale is applied in both the *x*- and
        *y*-directions.

        Parameters
        ----------
        sx : float
            *X*-direction scaling factor.
        sy : float, optional
            *Y*-direction scaling factor.
        )r   rZ   r
   scale)r_   sxsyr   rk   s        re   scaledzMarkerStyle.scaled  sE     :B &
//=8:
%/%5%5b"%=
"rg   c                     d| _         y )NFr~   ru   s    re   _set_nothingzMarkerStyle._set_nothing  s	    rg   c                     t        j                  t        j                  |j                              }t	               j                  d|z        | _        || _        y )N      ?)r   maxabsr{   r
   r   rk   rj   )r_   pathrescales      re   _set_custom_markerzMarkerStyle._set_custom_marker  s<    &&./"***3=9
rg   c                 :    | j                  | j                         y rx   )r   r   ru   s    re   r   zMarkerStyle._set_path_marker  s    -rg   c                 L    | j                  t        | j                               y rx   )r   r   r   ru   s    re   r   zMarkerStyle._set_vertices  s    T\\ 23rg   c                    | j                   }t        |      dk(  r|d   d}}nt        |      dk(  r
|d   |d   }}|d   }|dk(  r>t        j                        | _        | j
                  xs t        j                  | _        n|dk(  r>t        j                        | _        | j
                  xs t        j                  | _        nX|dk(  rEt        j                        | _        d| _        | j
                  xs t        j                  | _        nt        d|       t               j                  d      j!                        | _        y )	Nr   r           r   r   FzUnexpected tuple marker: r   )r   rz   r   unit_regular_polygonrj   r\   r   miterrp   unit_regular_starbevelunit_regular_asteriskrt   r   r
   r   r   rk   )r_   r`   numsidesrotationsymstyles        re   r   zMarkerStyle._set_tuple_marker  s   v;!!'ChH[A!'F1IhH!9q=228<DJ"22EiooDO]//9DJ"22EiooDO]33H=DJ DL"22EiooDO8ABB"***3/::8Drg   c                    ddl m}  |d| j                         t        j                  d         }t        |j                        dk(  ry|j                         }t        |j                  |j                        }t               j                  |j                   d|j                   z  z   |j                   d|j                   z  z         j                  d|z        | _        || _        d	| _        y)
zc
        Draw mathtext markers '$...$' using `.TextPath` object.

        Submitted by tcb
        r   )TextPath)r   r   ztext.usetex)xyr)   usetexNr         ?F)matplotlib.textr   r   r   rcParamsrz   r{   get_extentsr   widthheightr
   	translatexminyminr   rk   rj   _snap)r_   r   textbboxmax_dims        re   r   zMarkerStyle._set_mathtext_path  s     	- 6T__%6"||M:<t}}"!djj$++.JY		zC4::+$55		zC4;;,DV7VWU3=! 	 

rg   c                 :    | j                         | j                  v S rx   )r   _half_fillstylesru   s    re   
_half_fillzMarkerStyle._half_fill  s    !!#t'<'<<<rg   r   c                    t               j                  d|z        | _        t        j                  | _        | j                         st        j                         | _	        y t        j                         x| _	        | _        | j                         }| j                  j                  ddddd|          | j                  j                         j                  d      | _        y )Nr   r   Z        rU   rW   rT   rV        f@)r
   r   rk   r   infrn   r   r   unit_circlerj   unit_circle_righthalfrl   r   r   r   rm   )r_   sizefss      re   _set_circlezMarkerStyle._set_circle  s    "***3:6!vv ))+DJ*.*D*D*FFDJ##%BOO&&BsCBGI"&//"8"8":"E"Ed"KDrg   c                 (    | j                  d       y )Nr   )r   )r   ru   s    re   
_set_pointzMarkerStyle._set_point
  s    c"rg   c                     t        j                         | _        t               j	                  dd      | _        d | _        y )Ng9߿)r   unit_rectanglerj   r
   r   rk   rn   ru   s    re   
_set_pixelzMarkerStyle._set_pixel  s2    ((*
 #*..xB#rg   r   r   g333333gɿ333333?c                    t               j                  d      j                  |      | _        d| _        | j                         s| j                  | _        n| j                  | j                  | j                  | j                  g}| j                         }|dk(  r!|d|z   dz     | _        |d|z   dz     | _        nl|dk(  r!|d|z   dz     | _        |d|z   dz     | _        nF|dk(  r!|d	|z   dz     | _        |d
|z   dz     | _        n |d
|z   dz     | _        |d	|z   dz     | _        | j                  | _        | j                  xs t         j"                  | _        y )Nr         @rW   r      r   rV   rT   r   r   )r
   r   r   rk   rn   r   _triangle_pathrj   _triangle_path_u_triangle_path_l_triangle_path_d_triangle_path_rr   rl   rm   r\   r   r   rp   )r_   rotskipmpathsr   s        re   _set_trianglezMarkerStyle._set_triangle#  sR   "***3/::3?" ,,DJ++++++++-F
 ##%BU{#QXN3
!'TQ!7x#QXN3
!'TQ!7v#QXN3
!'TQ!7#QXN3
!'TQ!7"&//D..A)//rg   c                 &    | j                  dd      S )Nr   r   r  ru   s    re   _set_triangle_upzMarkerStyle._set_triangle_upA  s    !!#q))rg   c                 &    | j                  dd      S )Nr   r   r	  ru   s    re   _set_triangle_downzMarkerStyle._set_triangle_downD      !!%++rg   c                 &    | j                  dd      S )Ng     V@r   r	  ru   s    re   _set_triangle_leftzMarkerStyle._set_triangle_leftG  s    !!$**rg   c                 &    | j                  dd      S )Ng     p@r   r	  ru   s    re   _set_triangle_rightzMarkerStyle._set_triangle_rightJ  r  rg   c                    t               j                  dd      | _        d| _        | j	                         st        j                         | _        nt        ddgddgddgddgddgg      | _        t        ddgddgddgddgddgg      | _        | j                         }dddd	d
|   }| j                  j                  |       | j                  | _        | j                  xs t        j                  | _        y )N             @r   r   r   r   r   r   r   )rV   rU   rW   rT   )r
   r   rk   rn   r   r   r   rj   rl   r   r   rm   r\   r   r   rp   r_   r   r   s      re   _set_squarezMarkerStyle._set_squareM  s    "*..tT:" ,,.DJ SzC:Sz #SzC:7 8DJ!C:SzC:$':Sz#; <DN##%B !BsCHLFOO&&v."&//D..A)//rg   c                    t               j                  dd      j                  d      | _        d| _        | j                         st        j                         | _        n~t        ddgddgddgddgg      | _        t        ddgddgddgddgg      | _	        | j                         }ddddd	|   }| j                  j                  |       | j                  | _        | j                  xs t        j                  | _        y )
Nr  -   r   r   r   r   r   r   r   )r
   r   r   rk   rn   r   r   r   rj   rl   r   rm   r\   r   r   rp   r  s      re   _set_diamondzMarkerStyle._set_diamond_  s    "*..tT:EEbI" ,,.DJ1v1v1v1v>?DJ!Aq6Aq6Aq6Aq6"BCDN##%B SCHLFOO&&v."&//D..A)//rg   c                 \    | j                          | j                  j                  dd       y )Nr   r   )r  rk   r   ru   s    re   _set_thin_diamondzMarkerStyle._set_thin_diamondm  s"    c3'rg   c                 t   t               j                  d      | _        d| _        t	        j
                  d      }| j                         s|| _        n|j                  }dt        j                  d      z   dz  }t	        |g d         }t	        |g d         }t	        |d   |d   |d	   d| g|d   g      }t	        |d   |d
   |d   d| g|d   g      }||f||f||f||fd| j                            \  | _        | _        | j                  | _        | j                  xs t        j                   | _        y )Nr   r      r         @)r   r   r   r   )r   r   r   r   r   r   r   r   r   rW   rV   rT   rU   )r
   r   rk   rn   r   r   r   rj   r{   r   sqrtr   rl   rm   r\   r   r   rp   )r_   polypathvertsyrW   rV   rT   rU   s           re   _set_pentagonzMarkerStyle._set_pentagonq  s5   "***3/",,Q/ !DJ%%ERWWQZ2%Au\*+C%01Fq58U1XA2waIJD%(E!HeAhQBqJKEV}u*   "*$&DJ #'//D..A)//rg   c           	         t               j                  d      | _        d| _        t	        j
                  dd      }| j                         s|| _        n|j                  }t	        t        j                  |dd |dd	 |dd
 g            }t	        t        j                  |dd |dd g            }t	        t        j                  |dd |dd
 g            }t	        t        j                  |dd
 |dd	 |dd
 g            }||f||f||f||fd| j                            \  | _        | _        | j                  | _        | j                  xs t        j                   | _        y )Nr   r   r  gŋ!r?)innerCircler   r      
   r   r         r  )r
   r   rk   rn   r   r   r   rj   r{   r   concatenater   rl   rm   r\   r   r   rp   )r_   r!  r"  rW   rV   rT   rU   s          re   	_set_starzMarkerStyle._set_star  sM   "***3/"))!B !DJ%%Er~~uQqz52;a
&KLMC"..%!*eAaj)ABCFa
E!AJ'?@ADqU1R[%!*(MNOEV}u*   "*$&DJ #'//D..A)//rg   c                    t               j                  d      | _        d | _        t	        j
                  d      }| j                         s|| _        n|j                  }t        j                  t        j                  dt        j                  z  dz              }t	        t        j                  | dfg|g d   |dfgg            }t	        t        j                  | dfg|dd |dfgg            }t	        |dd       }t	        |g d	         }||f||f||f||fd
| j                            \  | _        | _        | j                  | _        | j"                  xs t$        j&                  | _        y )Nr   r*  r  g      @r   )r   r   r  r   r   )r   r  r   r   r  )r
   r   rk   rn   r   r   r   rj   r{   r   r   cospir+  r   rl   rm   r\   r   r   rp   )r_   r!  r"  r5   rW   rV   rT   rU   s           re   _set_hexagon1zMarkerStyle._set_hexagon1  sH   "***3/#,,Q/ !DJ%%Ervva"%%i"n-.Ar~~!Qy%	2BaVH&MNOC"..QB7)U1QZ1a&)JKLFa
#D|,-EV}u*   "*$&DJ #'//D..A)//rg   c           	         t               j                  d      j                  d      | _        d | _        t        j                  d      }| j                         s|| _        n|j                  }t        j                  d      dz  d}}t        |g d         }t        |dd	       }t        t        j                  ||fg|d d | | f||fgg            }t        t        j                  ||fg|d	d
d   | | fgg            }||f||f||f||fd| j                            \  | _        | _        | j                  | _        | j                   xs t"        j$                  | _        y )Nr      r*  r   r   g      ?)r   r   r  r   r   r   r  r   r   r  )r
   r   r   rk   rn   r   r   r   rj   r{   r   r   r+  r   rl   rm   r\   r   r   rp   )	r_   r!  r"  r5   r#  rW   rV   rT   rU   s	            re   _set_hexagon2zMarkerStyle._set_hexagon2  se   "***3/::2>#,,Q/ !DJ%%E771:>6qAu_-.C%!*%FQ%)rA2hA%7(9 : ;DQ%!B-A2r()5 6 7E V}u*   "*$&DJ #'//D..A)//rg   c           
      t   t               j                  d      | _        d| _        t	        j
                  d      }| j                         s#| j                  j                  d       || _        nt        j                  d      dz  }t	        ddgdd	g| d	gd|gd| g| dgddgg      x| _        | _        | j                         }| j                  j                  dd
ddd|          | j                  j                         j                  d      | _        | j                  xs t         j"                  | _        y )Nr   r   r)  g     6@r  r  r   r   r   r   r   r   )rT   rV   rU   rW   r   )r
   r   rk   rn   r   r   r   r   rj   r   r   rl   r   r   rm   r\   r   r   rp   )r_   r!  r5   r   s       re   _set_octagonzMarkerStyle._set_octagon  s   "***3/",,Q/ OO&&t,!DJb A*.R1a&A2q'B7qbQB8aW.+/ /DJ ##%BOO&&b3sCBGI"&//"8"8":"E"Ee"LD..A)//rg   r         c                 ~    t               j                  d      | _        d| _        d| _        | j
                  | _        y Nr   r   F)r
   r   rk   rn   rt   _line_marker_pathrj   ru   s    re   
_set_vlinezMarkerStyle._set_vline  s2    "***3/"++
rg   c                 d    | j                          | j                  j                  d      | _        y Nr   )r:  rk   r   ru   s    re   
_set_hlinezMarkerStyle._set_hline  s"    //44R8rg   c                     t               j                  dd      | _        d| _        d| _        | j
                  | _        y )Nr6  r   Fr
   r   rk   rn   rt   _tickhoriz_pathrj   ru   s    re   _set_tickleftzMarkerStyle._set_tickleft  s4    "***45"))
rg   c                     t               j                  dd      | _        d| _        d| _        | j
                  | _        y Nr   Fr?  ru   s    re   _set_tickrightzMarkerStyle._set_tickright  s4    "***34"))
rg   g       c                     t               j                  dd      | _        d| _        d| _        | j
                  | _        y rC  r
   r   rk   rn   rt   _tickvert_pathrj   ru   s    re   _set_tickupzMarkerStyle._set_tickup  s4    "***34"((
rg   c                     t               j                  dd      | _        d| _        d| _        | j
                  | _        y )Nr   r6  FrF  ru   s    re   _set_tickdownzMarkerStyle._set_tickdown  s4    "***35"((
rg   g?r   gc                 ~    t               j                  d      | _        d| _        d| _        | j
                  | _        y )Nr   r   F)r
   r   rk   rn   rt   	_tri_pathrj   ru   s    re   _set_tri_downzMarkerStyle._set_tri_down  s0    "***3/"^^
rg   c                 d    | j                          | j                  j                  d      | _        y Nr   rM  rk   r   ru   s    re   _set_tri_upzMarkerStyle._set_tri_up  $    //44S9rg   c                 d    | j                          | j                  j                  d      | _        y Nr   rP  ru   s    re   _set_tri_leftzMarkerStyle._set_tri_left  rR  rg   c                 d    | j                          | j                  j                  d      | _        y r<  rP  ru   s    re   _set_tri_rightzMarkerStyle._set_tri_right"  s$    //44R8rg   g      ?c                     t               j                  d      | _        d| _        d| _        | j
                  | _        | j                  xs t        j                  | _
        y Nr   g      @F)r
   r   rk   rn   rt   _caret_pathrj   r\   r   r   rp   ru   s    re   _set_caretdownzMarkerStyle._set_caretdown(  sH    "***3/"%%
..A)//rg   c                 d    | j                          | j                  j                  d      | _        y rO  r[  rk   r   ru   s    re   _set_caretupzMarkerStyle._set_caretup/  $    //44S9rg   c                 d    | j                          | j                  j                  d      | _        y rT  r]  ru   s    re   _set_caretleftzMarkerStyle._set_caretleft3  r_  rg   c                 d    | j                          | j                  j                  d      | _        y r<  r]  ru   s    re   _set_caretrightzMarkerStyle._set_caretright7  s$    //44R8rg   g      c                 F    | j                          | j                  | _        y rx   )r[  _caret_path_baserj   ru   s    re   _set_caretdownbasezMarkerStyle._set_caretdownbase=  s    **
rg   c                 d    | j                          | j                  j                  d      | _        y rO  rf  rk   r   ru   s    re   _set_caretupbasezMarkerStyle._set_caretupbaseA  $    !//44S9rg   c                 d    | j                          | j                  j                  d      | _        y rT  rh  ru   s    re   _set_caretleftbasezMarkerStyle._set_caretleftbaseE  rj  rg   c                 d    | j                          | j                  j                  d      | _        y r<  rh  ru   s    re   _set_caretrightbasezMarkerStyle._set_caretrightbaseI  s$    !//44R8rg   c                 ~    t               j                  d      | _        d| _        d| _        | j
                  | _        y r8  )r
   r   rk   rn   rt   
_plus_pathrj   ru   s    re   	_set_pluszMarkerStyle._set_plusR  s0    "***3/"__
rg   c                 ~    t               j                  d      | _        d| _        d| _        | j
                  | _        y rY  )r
   r   rk   rn   rt   _x_pathrj   ru   s    re   _set_xzMarkerStyle._set_x]  s0    "***3/"\\
rg   ))r   )r   ru  )r   r   )r   r   r   r   r   r   r   r   r   r   r   r   ru  r   )ru  r   )r   r   r*  ))r   r   rv  rw  rx  ry  rz  r{  )ru  r   c                    t               | _        d| _        | j                  xs t        j
                  | _        | j                         s| j                  | _	        y | j                  x| _	        | _        | j                         }| j                  j                  ddddd|          | j                  j                         j                  d      | _        y Nr   r   r   r   r   )rW   rT   rV   rU   )r
   rk   rn   r\   r   r   rp   r   _plus_filled_pathrj   _plus_filled_path_trl   r   r   r   rm   r_   r   s     re   _set_plus_filledzMarkerStyle._set_plus_filledj  s    "*"..A)// //DJ +/*B*BBDJ##%BOO&&2sCBGI"&//"8"8":"E"Ec"JDrg   ))r   )r   r   )r   r  )r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   )r  r   r   )r  r  r  r  r  r  r  c                    t               | _        d| _        | j                  xs t        j
                  | _        | j                         s| j                  | _	        y | j                  x| _	        | _        | j                         }| j                  j                  ddddd|          | j                  j                         j                  d      | _        y r}  )r
   rk   rn   r\   r   r   rp   r   _x_filled_pathrj   _x_filled_path_trl   r   r   r   rm   r  s     re   _set_x_filledzMarkerStyle._set_x_filled  s    "*"..A)// ,,DJ +/*?*??DJ##%BOO&&2sCBGI"&//"8"8":"E"Ec"JDrg   )NNNNrx   )r   )k__name__
__module____qualname____doc__TICKLEFT	TICKRIGHTTICKUPTICKDOWN	CARETLEFT
CARETRIGHTCARETUP	CARETDOWNCARETLEFTBASECARETRIGHTBASECARETUPBASECARETDOWNBASEr   filled_markersr   r   rf   rv   r|   r   r   r]   r   r   r   r^   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _create_closedr   r   r  r  r  r  r
  r  r  r  r  r  r  r$  r,  r0  r3  r5  r9  r:  r=  r@  rA  rD  rG  rH  rJ  MOVETOLINETOrL  rM  rQ  rU  rW  rZ  r[  r^  ra  rc  re  rf  ri  rl  rn  rp  rq  rs  rt  r   arrayr~  r  r  r  r  r   rg   re   r   r      sW    *W*W* 	X* 	_	*
 	]* 	_* 	* 	Z* 	X* 	Z* 	[* 	Y* 	X* 	Z* 	V*  	Z!*" 	Z#*$ 	V%*& 	S'*( 	Y)** 	^+*, 	W-*. 	W/*0 	]1*2 	Z3*4 	*5*6 	;7*8 	9*: 	*;*< 	;=*> 	L?*@ 	A*B 	;C*D 	E*F 	(]		Y
IS*G\N DJ9 KO!<  .$$##JEI$1
  "t :,
.4E*0=
L#$ )T((1a&2r(QG)DEN*t**QFT4L3++NO*t**
T{QGb"X68*t**QFQGb"X+FG*t**QFQGaW+EFB<*,+,B$B(B.B,B0B4B* sDkC:67,9 S#Jc
34O** D#;s45N)) sCj3+Cj3*Cj4+/ kk4;;kk4;;kk4;;01I$::9 sc3Z#s<=KB::9 dC[3+Qx@A+::9 c{S#JT{S#J0{{DKK{{DKK12J
% T4L3*3K#t.KKKK./G
" ,++HBHH 6D -EGH-I J .$--hbhh 8/ /023/4 5K )T(( 3B *CEF*G HN +t**8288 5% ,&(),* +Krg   r   )$r  r   collections.abcr   r   numpyr   
matplotlibr   rR   r   r   r   r   
transformsr	   r
   _enumsr   r   ranger  r  r  r  r  r  r  r  r  r  r  r  emptyri   r   r  rg   re   <module>r     sr   @B  +     3 '
 ?DBi<9fh
J]8288F#$uK uKrg   