
    h                         S r SSKrSSKJr  SSKrSSKrSSKJ	r	J
r
  SSKJr  SSKJrJr  SSKJrJr  \" S	5      u  rrrrrrrrrrrr\" \R@                  " S
5      5      r! " S S5      r"g)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)Sized   )_apicbook)Path)IdentityTransformAffine2D)	JoinStyleCapStyle   )r      c                   R   \ rS rSrSr0 SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_0 S%S&_S'S'_S(S)_S*S+_S,S-_S.S/_S0S1_S2S3_\S4_\S5_\S6_\S7_\	S8_\
S9_\S:_\S;_\S<_E\S=\S>\S?S@SASBSASCSASDSA0ErSErSFrSGr SSI jrSJ rSK rSL rSM rSN rSO rSP rSQ rSR rSS rST r SU r!SV r"SW r#SX r$SY r%SHSHSZ.S[ jr&SS\ jr'S] r(S^ r)S_ r*S` r+Sa r,Sb r-Sc r.SSe jr/Sf r0Sg r1\2Rf                  " ShSi/SjSj/SiSj//5      r4\2Rf                  " ShSi/SkSl/SmSl//5      r5\2Rf                  " SkSl/SmSl/SiSj/SjSj//5      r6\2Rf                  " ShSi/ShSj/SjSj//5      r7\2Rf                  " ShSi/ShSj/SiSj//5      r8Sn r9So r:Sp r;Sq r<Sr r=Ss r>St r?Su r@Sv rASw rBSx rCSy rDSz rE\2" S{S|/S{Sd//5      rFS} rGS~ rH\2" S{S{/SdS{//5      rIS rJS rK\2" SS{/SSd//5      rLS rMS rN\2" S{S{/S{S|/S{S{/SS/S{S{/SS//\2R                  \2R                  \2R                  \2R                  \2R                  \2R                  /5      rQS rRS rSS rTS rU\2" S|S/S{S{/SdS//5      rVS rWS rXS rYS rZ\2" S|S{/S{S/SdSh//5      r[S r\S r]S r^S r_\2" S|S{/SdS{/S{S|/S{Sd//\2R                  \2R                  \2R                  \2R                  /5      r`S ra\2" S|S|/SdSd/S|Sd/SdS|//\2R                  \2R                  \2R                  \2R                  /5      rbS rc\2Rf                  " \dR                  " / SQ5      S-  5      rf\2Rf                  " \dR                  " / SQ5      S-  5      rgS rh\2Rf                  " \dR                  " / SQ5      S-  5      ri\2Rf                  " \dR                  " / SQ5      S-  5      rjS rkSrlgH)MarkerStyle   a7  
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                     SU l         X0l        Ub  [        U5      OSU l        Ub  [	        U5      OSU l        U R                  U5        U R                  U5        g)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         D/var/www/html/env/lib/python3.13/site-packages/matplotlib/markers.py__init__MarkerStyle.__init__   sW    . !%(4<4Hhx0d7@7Ly3RVI&     c                 @   U R                   c  g [        U l        [        5       U l        S U l        S U l        S U l        [        R                  U l
        U R                  =(       d    [        R                  U l        U R                  S:g  U l        U R                  5         g )NrP   )rY   _empty_path_pathr   
_transform	_alt_path_alt_transform_snap_thresholdr
   round
_joinstyler[   r   butt	_capstyle
_fillstyle_filledr_   s    re   _recacheMarkerStyle._recache   sx      ( 
+-"##//,,= &0rh   c                 R    [        [        U R                  R                  5      5      $ N)boollenrk   verticesrv   s    re   __bool__MarkerStyle.__bool__
  s    C

++,--rh   c                     U R                   $ rz   ru   rv   s    re   	is_filledMarkerStyle.is_filled      ||rh   c                     U R                   $ rz   )rt   rv   s    re   get_fillstyleMarkerStyle.get_fillstyle  s    rh   c                 z    Uc  [         R                  S   n[        R                  " U R                  US9  Xl        g)z
Set the fillstyle.

Parameters
----------
fillstyle : {'full', 'left', 'right', 'bottom', 'top', 'none'}
    The part of the marker surface that is colored with
    markerfacecolor.
Nzmarkers.fillstyle)ra   )mplrcParamsr   check_in_list
fillstylesrt   )r_   ra   s     re   r]   MarkerStyle._set_fillstyle  s2     %89I4??i@#rh   c                 .    U R                   R                  $ rz   )rq   namerv   s    re   get_joinstyleMarkerStyle.get_joinstyle"  s    ###rh   c                 .    U R                   R                  $ rz   )rs   r   rv   s    re   get_capstyleMarkerStyle.get_capstyle%  s    ~~"""rh   c                     U R                   $ rz   )_markerrv   s    re   
get_markerMarkerStyle.get_marker(  r   rh   c                    [        U[        5      (       a.  [        R                  " U5      (       a  U R                  U l        GO_[        U[        [        45      (       a2  XR                  ;   a#  [        U SU R                  U   -   5      U l        GO[        U[        R                  5      (       a5  UR                  S:X  a%  UR                  S   S:X  a  U R                  U l        O[        U[        5      (       a  U R                  U l        O[        U[         5      (       a*  [#        U5      S;   a  US   S;   a  U R$                  U l        OX[        U[&        5      (       a&  [(        R*                  " UR,                  5      U l        O [        U5        U R                  U l        [        U[&        5      (       d  Xl        U R3                  5         gg! [.         a  n[/        SU< 35      UeSnAff = f)z
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   intmarkersgetattrnpndarrayndimshape_set_verticesr   _set_path_markerr   r|   _set_tuple_markerr   copydeepcopy__dict__
ValueErrorr   rw   )r_   r`   errs      re   r^   MarkerStyle._set_marker+  sz    fc""u'9'9&'A'A$($;$;D!c
++,,0F$+D'DLL<P2P$QD!,,1AQ1$$($6$6D!%%$($9$9D!''CK6,Aq	Y&$($:$:D!,, MM&//:DMFV(,(:(:%
 &+..!LMMO /	  F 0
;=BEFFs   G 
G/G**G/c                     U R                   $ )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*.
)rk   rv   s    re   get_pathMarkerStyle.get_pathP  s     zzrh   c                     U R                   c  U R                  R                  5       $ U R                  U R                   -   R                  5       $ )zR
Return the transform to be applied to the `.Path` from
`MarkerStyle.get_path()`.
)rZ   rl   frozenrv   s    re   get_transformMarkerStyle.get_transformY  sA    
 '??))++OOd&:&::BBDDrh   c                     U R                   $ )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*.
)rm   rv   s    re   get_alt_pathMarkerStyle.get_alt_pathc  s     ~~rh   c                     U R                   c  U R                  R                  5       $ U R                  U R                   -   R                  5       $ )zV
Return the transform to be applied to the `.Path` from
`MarkerStyle.get_alt_path()`.
)rZ   rn   r   rv   s    re   get_alt_transformMarkerStyle.get_alt_transforml  sE    
 '&&--//''$*>*>>FFHHrh   c                     U R                   $ rz   )ro   rv   s    re   get_snap_thresholdMarkerStyle.get_snap_thresholdv  s    ###rh   c                 R    U R                   b  U R                   R                  5       $ g)z.Return user supplied part of marker transform.N)rZ   r   rv   s    re   get_user_transformMarkerStyle.get_user_transformy  s(    +''..00 ,rh   c                 p    [        U 5      nUR                  b  U=R                  U-  sl        U$ Xl        U$ )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   transformedMarkerStyle.transformed~  sA     !&
%%1&&)3&  *3&rh   )degradc                   Uc  Uc  [        S5      eUb  Ub  [        S5      e[        U 5      nUR                  c  [        5       Ul        Ub  UR                  R	                  U5        Ub  UR                  R                  U5        U$ )z
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   rotatedMarkerStyle.rotated  s     ;3;<==?sFGG &
%%-)1J&?&&11#6?&&--c2rh   c                     Uc  Un[        U 5      nUR                  =(       d
    [        5       nUR                  X5      Ul        U$ )a  
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   rl   s        re   scaledMarkerStyle.scaled  sC     :B &
//=8:
%/%5%5b%=
"rh   c                     SU l         g )NFr   rv   s    re   _set_nothingMarkerStyle._set_nothing  s	    rh   c                     [         R                  " [         R                  " UR                  5      5      n[	        5       R                  SU-  5      U l        Xl        g )N      ?)r   maxabsr}   r	   r   rl   rk   )r_   pathrescales      re   _set_custom_markerMarkerStyle._set_custom_marker  s:    &&./"***3=9
rh   c                 :    U R                  U R                  5        g rz   )r   r   rv   s    re   r   MarkerStyle._set_path_marker  s    -rh   c                 L    U R                  [        U R                  5      5        g rz   )r   r   r   rv   s    re   r   MarkerStyle._set_vertices  s    T\\ 23rh   c                    U R                   n[        U5      S:X  a  US   Sp2O[        U5      S:X  a	  US   US   p2US   nUS:X  aD  [        R                  " W5      U l        U R
                  =(       d    [        R                  U l        OUS:X  aD  [        R                  " W5      U l        U R
                  =(       d    [        R                  U l        O_US:X  aK  [        R                  " W5      U l        SU l        U R
                  =(       d    [        R                  U l        O[        SU 35      e[        5       R                  S5      R!                  W5      U l        g )	Nr   r           r   r   FzUnexpected tuple marker: r   )r   r|   r   unit_regular_polygonrk   r\   r
   miterrq   unit_regular_starbevelunit_regular_asteriskru   r   r	   r   r   rl   )r_   r`   numsidesrotationsymstyles        re   r   MarkerStyle._set_tuple_marker  s   v;!!'Ch[A!'F1Ih!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rh   c                    SSK Jn  U" SU R                  5       [        R                  S   S9n[        UR                  5      S:X  a  gUR                  5       n[        UR                  UR                  5      n[        5       R                  UR                  * SUR                  * -  -   UR                  * SUR                  * -  -   5      R                  SU-  5      U l        X l        S	U l        g)
zK
Draw mathtext markers '$...$' using `.TextPath` object.

Submitted by tcb
r   )TextPath)r   r   ztext.usetex)xyr)   usetexNr         ?F)matplotlib.textr   r   r   r   r|   r}   get_extentsr   widthheightr	   	translatexminyminr   rl   rk   _snap)r_   r   textbboxmax_dims        re   r   MarkerStyle._set_mathtext_path  s     	- 6T__%6"||M:<t}}"!djj$++.JY		zC4::+$55		zC4;;,DV7VWU3=! 	 

rh   c                 <    U R                  5       U R                  ;   $ rz   )r   _half_fillstylesrv   s    re   
_half_fillMarkerStyle._half_fill  s    !!#t'<'<<<rh   r   c                    [        5       R                  SU-  5      U l        [        R                  U l        U R                  5       (       d  [        R                  " 5       U l	        g [        R                  " 5       =U l	        U l        U R                  5       nU R                  R                  SSSSS.U   5        U R                  R                  5       R                  S5      U l        g )Nr   r   Z        rU   rW   rT   rV        f@)r	   r   rl   r   infro   r  r   unit_circlerk   unit_circle_righthalfrm   r   r   r   rn   )r_   sizefss      re   _set_circleMarkerStyle._set_circle  s    "***3:6!vv  ))+DJ*.*D*D*FFDJ##%BOO&&BsCBGI"&//"8"8":"E"Ed"KDrh   c                 "    U R                  SS9  g )Nr   )r  )r  rv   s    re   
_set_pointMarkerStyle._set_point  s    c"rh   c                     [         R                  " 5       U l        [        5       R	                  SS5      U l        S U l        g )Ng9߿)r   unit_rectanglerk   r	   r   rl   ro   rv   s    re   
_set_pixelMarkerStyle._set_pixel  s2    ((*
 #*..xB#rh   r   r   g333333gɿ333333?c                    [        5       R                  S5      R                  U5      U l        SU l        U R                  5       (       d  U R                  U l        OU R                  U R                  U R                  U R                  /nU R                  5       nUS:X  a!  USU-   S-     U l        USU-   S-     U l        OnUS:X  a!  USU-   S-     U l        USU-   S-     U l        OGUS:X  a!  US	U-   S-     U l        US
U-   S-     U l        O US
U-   S-     U l        US	U-   S-     U l        U R                  U l        U R                  =(       d    [         R"                  U l        g )Nr         @rW   r      r   rV   rT   r   r   )r	   r   r   rl   ro   r  _triangle_pathrk   _triangle_path_u_triangle_path_l_triangle_path_d_triangle_path_rr   rm   rn   r\   r
   r   rq   )r_   rotskipmpathsr  s        re   _set_triangleMarkerStyle._set_triangle$  sU   "***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)//rh   c                 &    U R                  SS5      $ )Nr   r   r$  rv   s    re   _set_triangle_upMarkerStyle._set_triangle_upB  s    !!#q))rh   c                 &    U R                  SS5      $ )Nr  r   r'  rv   s    re   _set_triangle_downMarkerStyle._set_triangle_downE      !!%++rh   c                 &    U R                  SS5      $ )Ng     V@r   r'  rv   s    re   _set_triangle_leftMarkerStyle._set_triangle_leftH  s    !!$**rh   c                 &    U R                  SS5      $ )Ng     p@r   r'  rv   s    re   _set_triangle_rightMarkerStyle._set_triangle_rightK  r-  rh   c                    [        5       R                  SS5      U l        SU l        U R	                  5       (       d  [
        R                  " 5       U l        O[        SS/SS/SS/SS/SS//5      U l        [        SS/SS/SS/SS/SS//5      U l        U R                  5       nSSSS	S
.U   nU R                  R                  U5        U R                  U l        U R                  =(       d    [        R                  U l        g )N             @r   r   r   r   r  r  r  )rV   rU   rW   rT   )r	   r   rl   ro   r  r   r  rk   rm   r   r   rn   r\   r
   r   rq   r_   r  r   s      re   _set_squareMarkerStyle._set_squareN  s    "*..tT:"  ,,.DJ SzC:Sz #SzC:7 8DJ!C:SzC:$':Sz#; <DN##%B !BsCHLFOO&&v."&//D..A)//rh   c                    [        5       R                  SS5      R                  S5      U l        SU l        U R                  5       (       d  [        R                  " 5       U l        O~[        SS/SS/SS/SS//5      U l        [        SS/SS/SS/SS//5      U l	        U R                  5       nSSSSS	.U   nU R                  R                  U5        U R                  U l        U R                  =(       d    [        R                  U l        g )
Nr5  -   r  r   r   r  r  r  r  )r	   r   r   rl   ro   r  r   r  rk   rm   r   rn   r\   r
   r   rq   r7  s      re   _set_diamond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)//rh   c                 \    U R                  5         U R                  R                  SS5        g )Nr  r   )r<  rl   r   rv   s    re   _set_thin_diamondMarkerStyle._set_thin_diamondn  s"    c3'rh   c                    [        5       R                  S5      U l        SU l        [        R
                  " S5      nU R                  5       (       d  Xl        OUR                  nS[        R                  " S5      -   S-  n[	        U/ SQ   5      n[	        U/ SQ   5      n[	        US   US   US	   SU* /US   /5      n[	        US   US
   US   SU* /US   /5      nXE4XT4Xg4Xv4S.U R                  5          u  U l        U l        U R                  U l        U R                  =(       d    [        R                   U l        g )Nr   r     r         @)r   r   r  r   )r   r   r   r  r   r   r   r  r   rW   rV   rT   rU   )r	   r   rl   ro   r   r   r  rk   r}   r   sqrtr   rm   rn   r\   r
   r   rq   )r_   polypathvertsyrW   rV   rT   rU   s           re   _set_pentagonMarkerStyle._set_pentagonr  s.   "***3/",,Q/  !J%%ERWWQZ2%Au\*+C%01Fq58U1XA2waIJD%(E!HeAhQBqJKE}*   "*$&DJ #'//D..A)//rh   c           	         [        5       R                  S5      U l        SU l        [        R
                  " SSS9nU R                  5       (       d  Xl        OUR                  n[	        [        R                  " USS USS	 USS
 /5      5      n[	        [        R                  " USS USS /5      5      n[	        [        R                  " USS USS
 /5      5      n[	        [        R                  " USS
 USS	 USS
 /5      5      nX44XC4XV4Xe4S.U R                  5          u  U l        U l        U R                  U l        U R                  =(       d    [        R                   U l        g )Nr   r  rB  gŋ!r?)innerCircler   r     
   r   r         rD  )r	   r   rl   ro   r   r   r  rk   r}   r   concatenater   rm   rn   r\   r
   r   rq   )r_   rF  rG  rW   rV   rT   rU   s          re   	_set_starMarkerStyle._set_star  sF   "***3/"))!B  !J%%Er~~uQqz52;a
&KLMC"..%!*eAaj)ABCFa
E!AJ'?@ADqU1R[%!*(MNOE}*   "*$&DJ #'//D..A)//rh   c                    [        5       R                  S5      U l        S U l        [        R
                  " S5      nU R                  5       (       d  Xl        OUR                  n[        R                  " [        R                  " S[        R                  -  S-  5      5      n[	        [        R                  " U* S4/U/ SQ   US4//5      5      n[	        [        R                  " U* S4/USS US4//5      5      n[	        USS 5      n[	        U/ S	Q   5      nXE4XT4Xg4Xv4S
.U R                  5          u  U l        U l        U R                  U l        U R"                  =(       d    [$        R&                  U l        g )Nr   rP  rB  g      @r   )r   r   rB  r   r  )r   rB  r  r   rD  )r	   r   rl   ro   r   r   r  rk   r}   r   r   cospirQ  r   rm   rn   r\   r
   r   rq   )r_   rF  rG  r5   rW   rV   rT   rU   s           re   _set_hexagon1MarkerStyle._set_hexagon1  sA   "***3/#,,Q/  !J%%Ervva"%%i"n-.Ar~~!Qy%	2BaVH&MNOC"..QB7)U1QZ1a&)JKLFa
#D|,-E}*   "*$&DJ #'//D..A)//rh   c           	         [        5       R                  S5      R                  S5      U l        S U l        [
        R                  " S5      nU R                  5       (       d  Xl        OUR                  n[        R                  " S5      S-  SpC[        U/ SQ   5      n[        USS	 5      n[        [        R                  " X44/US S U* U* 4X44//5      5      n[        [        R                  " X44/US	S
S2   U* U* 4//5      5      nXV4Xe4Xx4X4S.U R                  5          u  U l        U l        U R                  U l        U R                   =(       d    ["        R$                  U l        g )Nr      rP  r   r  g      ?)r   r   rB  r  r   r   rB  r   r  rD  )r	   r   r   rl   ro   r   r   r  rk   r}   r   rE  rQ  r   rm   rn   r\   r
   r   rq   )	r_   rF  rG  r5   rH  rW   rV   rT   rU   s	            re   _set_hexagon2MarkerStyle._set_hexagon2  sV   "***3/::2>#,,Q/  !J%%E771:>6qu_-.C%!*%F%)rA2h%7(9 : ;D%!B-A2r()5 6 7E }*   "*$&DJ #'//D..A)//rh   c           
         [        5       R                  S5      U l        SU l        [        R
                  " S5      nU R                  5       (       d"  U R                  R                  S5        Xl        O[        R                  " S5      S-  n[	        SS/SS	/U* S	/SU/SU* /U* S/SS//5      =U l        U l        U R                  5       nU R                  R                  SS
SSS.U   5        U R                  R                  5       R                  S5      U l        U R                  =(       d    [         R"                  U l        g )Nr   r  rO  g     6@r6  rC  r   r  r   r  r  r  )rT   rV   rU   rW   r  )r	   r   rl   ro   r   r   r  r   rk   r   rE  rm   r   r   rn   r\   r
   r   rq   )r_   rF  r5   r  s       re   _set_octagonMarkerStyle._set_octagon  s   "***3/",,Q/  OO&&t,!Jb A*.R1a&A2q'B7qbQB8aW.+/ /DJ ##%BOO&&b3sCBGI"&//"8"8":"E"Ee"LD..A)//rh   r         c                 ~    [        5       R                  S5      U l        SU l        SU l        U R
                  U l        g Nr   r   F)r	   r   rl   ro   ru   _line_marker_pathrk   rv   s    re   
_set_vlineMarkerStyle._set_vline  s2    "***3/"++
rh   c                 d    U R                  5         U R                  R                  S5      U l        g Nr  )rd  rl   r   rv   s    re   
_set_hlineMarkerStyle._set_hline  s"    //44R8rh   c                     [        5       R                  SS5      U l        SU l        SU l        U R
                  U l        g )Nr`  r   Fr	   r   rl   ro   ru   _tickhoriz_pathrk   rv   s    re   _set_tickleftMarkerStyle._set_tickleft  s4    "***45"))
rh   c                     [        5       R                  SS5      U l        SU l        SU l        U R
                  U l        g Nr   Frk  rv   s    re   _set_tickrightMarkerStyle._set_tickright  s4    "***34"))
rh   g       c                     [        5       R                  SS5      U l        SU l        SU l        U R
                  U l        g rp  r	   r   rl   ro   ru   _tickvert_pathrk   rv   s    re   _set_tickupMarkerStyle._set_tickup  s4    "***34"((
rh   c                     [        5       R                  SS5      U l        SU l        SU l        U R
                  U l        g )Nr   r`  Frt  rv   s    re   _set_tickdownMarkerStyle._set_tickdown  s4    "***35"((
rh   g?r   gc                 ~    [        5       R                  S5      U l        SU l        SU l        U R
                  U l        g )Nr   r  F)r	   r   rl   ro   ru   	_tri_pathrk   rv   s    re   _set_tri_downMarkerStyle._set_tri_down  s0    "***3/"^^
rh   c                 d    U R                  5         U R                  R                  S5      U l        g Nr  r}  rl   r   rv   s    re   _set_tri_upMarkerStyle._set_tri_up  $    //44S9rh   c                 d    U R                  5         U R                  R                  S5      U l        g Nr  r  rv   s    re   _set_tri_leftMarkerStyle._set_tri_left  r  rh   c                 d    U R                  5         U R                  R                  S5      U l        g rg  r  rv   s    re   _set_tri_rightMarkerStyle._set_tri_right#  s$    //44R8rh   g      ?c                     [        5       R                  S5      U l        SU l        SU l        U R
                  U l        U R                  =(       d    [        R                  U l
        g Nr   g      @F)r	   r   rl   ro   ru   _caret_pathrk   r\   r
   r   rq   rv   s    re   _set_caretdownMarkerStyle._set_caretdown)  sH    "***3/"%%
..A)//rh   c                 d    U R                  5         U R                  R                  S5      U l        g r  r  rl   r   rv   s    re   _set_caretupMarkerStyle._set_caretup0  $    //44S9rh   c                 d    U R                  5         U R                  R                  S5      U l        g r  r  rv   s    re   _set_caretleftMarkerStyle._set_caretleft4  r  rh   c                 d    U R                  5         U R                  R                  S5      U l        g rg  r  rv   s    re   _set_caretrightMarkerStyle._set_caretright8  s$    //44R8rh   g      c                 F    U R                  5         U R                  U l        g rz   )r  _caret_path_baserk   rv   s    re   _set_caretdownbaseMarkerStyle._set_caretdownbase>  s    **
rh   c                 d    U R                  5         U R                  R                  S5      U l        g r  r  rl   r   rv   s    re   _set_caretupbaseMarkerStyle._set_caretupbaseB  $    !//44S9rh   c                 d    U R                  5         U R                  R                  S5      U l        g r  r  rv   s    re   _set_caretleftbaseMarkerStyle._set_caretleftbaseF  r  rh   c                 d    U R                  5         U R                  R                  S5      U l        g rg  r  rv   s    re   _set_caretrightbaseMarkerStyle._set_caretrightbaseJ  s$    !//44R8rh   c                 ~    [        5       R                  S5      U l        SU l        SU l        U R
                  U l        g rb  )r	   r   rl   ro   ru   
_plus_pathrk   rv   s    re   	_set_plusMarkerStyle._set_plusS  s0    "***3/"__
rh   c                 ~    [        5       R                  S5      U l        SU l        SU l        U R
                  U l        g r  )r	   r   rl   ro   ru   _x_pathrk   rv   s    re   _set_xMarkerStyle._set_x^  s0    "***3/"\\
rh   ))r  )r   r  )r   r  )r   r  r   r   r   r   r   r   r  r   r  r   r  r   )r  r  )r  r  rP  ))r   r   r  r  r  r  r  r  )r  r   c                    [        5       U l        SU l        U R                  =(       d    [        R
                  U l        U R                  5       (       d  U R                  U l	        g U R                  =U l	        U l        U R                  5       nU R                  R                  SSSSS.U   5        U R                  R                  5       R                  S5      U l        g Nr  r   r  r  r  )rW   rT   rV   rU   )r	   rl   ro   r\   r
   r   rq   r  _plus_filled_pathrk   _plus_filled_path_trm   r   r   r   rn   r_   r  s     re   _set_plus_filledMarkerStyle._set_plus_filledk  s    "*"..A)//  //DJ +/*B*BBDJ##%BOO&&2sCBGI"&//"8"8":"E"Ec"JDrh   ))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                    [        5       U l        SU l        U R                  =(       d    [        R
                  U l        U R                  5       (       d  U R                  U l	        g U R                  =U l	        U l        U R                  5       nU R                  R                  SSSSS.U   5        U R                  R                  5       R                  S5      U l        g r  )r	   rl   ro   r\   r
   r   rq   r  _x_filled_pathrk   _x_filled_path_trm   r   r   r   rn   r  s     re   _set_x_filledMarkerStyle._set_x_filled  s    "*"..A)//  ,,DJ +/*?*??DJ##%BOO&&2sCBGI"&//"8"8":"E"Ec"JDrh   )r   rm   rn   rs   ru   rt   rq   r   rY   rk   r   ro   rl   r[   r\   rZ   )NNNNrz   )r   )m__name__
__module____qualname____firstlineno____doc__TICKLEFT	TICKRIGHTTICKUPTICKDOWN	CARETLEFT
CARETRIGHTCARETUP	CARETDOWNCARETLEFTBASECARETRIGHTBASECARETUPBASECARETDOWNBASEr   filled_markersr   r   rf   rw   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/  r2  r8  r<  r?  rI  rR  rW  r[  r^  rc  rd  rh  rl  rm  rq  ru  rv  ry  MOVETOLINETOr|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   arrayr  r  r  r  r  r  __static_attributes__ rh   re   r   r      s=    *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#$ ((1a&2r(QG)DEN**QFT4L3++NO**
T{QGb"X68**QFQGb"X+FG**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
" ++BHH 6D -EGH-I J --bhh 8/ /023/4 5K (( 3B *CEF*G HN **288 5% ,&(),* +Krh   r   )#r  r   collections.abcr   numpyr   
matplotlibr   rR   r   r   r   r   
transformsr   r	   _enumsr
   r   ranger  r  r  r  r  r  r  r  r  r  r  r  emptyrj   r   r  rh   re   <module>r     sp   @B  !     3 '
 ?DBi<9fh
J]288F#$vK vKrh   