rL i dZddlZddlmZddlZddlZddlm Z m Z ddl m Z ddl mZmZddlmZmZed \ ZZZZZZZZZZZZe ej@d Z!Gd 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 `, e.g. ``"$\u266B$"``. For an overview over the STIX font symbols refer to the `STIX font table `_. 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)_apicbook)Path)IdentityTransformAffine2D) JoinStyleCapStyle )rcBeZdZdZidddddddd d d d d ddddddddddddddddddd d!d"d#id$d%d&d&d'd(d)d*d+d,d-d.d/d0d1d2ed3ed4ed5ed6ed7e d8e d9e d:e d;e dd?d@dAd@dBd@dCd@iZdDZdEZdFZ ddHZdIZdJZdKZdLZdMZdNZdOZdPZdQZdRZdSZdTZ dUZ!dVZ"dWZ#dXZ$dGdGdYdZZ%dd[Z&d\Z'd]Z(d^Z)d_Z*d`Z+daZ,dbZ-dddZ.deZ/dfZ0e1jddgdhgdidigdhdiggZ3e1jddgdhgdjdkgdldkggZ4e1jddjdkgdldkgdhdigdidiggZ5e1jddgdhgdgdigdidiggZ6e1jddgdhgdgdigdhdiggZ7dmZ8dnZ9doZ:dpZ;dqZdtZ?duZ@dvZAdwZBdxZCdyZDe1dzd{gdzdcggZEd|ZFd}ZGe1dzdzgdcdzggZHd~ZIdZJe1ddzgddcggZKdZLdZMe1dzdzgdzd{gdzdzgddgdzdzgddgge1je1je1je1je1je1jgZPdZQdZRdZSdZTe1d{dgdzdzgdcdggZUdZVdZWdZXdZYe1d{dzgdzdgdcdgggZZdZ[dZ\dZ]dZ^e1d{dzgdcdzgdzd{gdzdcgge1je1je1je1jgZ_dZ`e1d{d{gdcdcgd{dcgdcd{gge1je1je1je1jgZadZbe1jdecjgddz Zee1jdecjgddz ZfdZge1jdecjgddz Zhe1jdecjgddz ZidZjyG) 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,pixelocirclev triangle_down^ triangle_up< triangle_left>triangle_right1tri_down2tri_up3tri_left4 tri_right8octagonssquareppentagon*starhhexagon1Hhexagon2+plusxDdiamondd thin_diamond|vline_hlineP plus_filledXx_filledtickleft tickrighttickuptickdown caretleft caretrightcaretup caretdown caretleftbasecaretrightbase caretupbase caretdownbaseNonenothingnone )rrrrrrr&r(r*r,r.r0r5r7r=r?)fullleftrightbottomtoprO)rSrTrUrVNcd|_||_| t|nd|_| t |nd|_|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)selfmarker fillstyle transformcapstyle joinstyles X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/markers.py__init__zMarkerStyle.__init__sY.!%(4<4Hhx0d7@7Ly3RV I&  c4|jyt|_t|_d|_d|_d|_tj|_ |jxstj|_|jdk7|_|jy)NrO)rX _empty_path_pathr _transform _alt_path_alt_transform_snap_thresholdr round _joinstylerZr butt _capstyle _fillstyle_filledr^s rd_recachezMarkerStyle._recachesx  (   +-"##//,,= &0  rfcRtt|jjSN)boollenriverticesrts rd__bool__zMarkerStyle.__bool__ sC ++,--rfc|jSrwrsrts rd is_filledzMarkerStyle.is_filled  ||rfc|jSrw)rrrts rd get_fillstylezMarkerStyle.get_fillstyles rfc~|tjd}tj|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. Nzmarkers.fillstyle)r`)mplrcParamsr check_in_list fillstylesrr)r^r`s rdr\zMarkerStyle._set_fillstyles4   %89I 4??i@#rfc.|jjSrw)ronamerts rd get_joinstylezMarkerStyle.get_joinstyle"s###rfc.|jjSrw)rqrrts rd get_capstylezMarkerStyle.get_capstyle%s~~"""rfc|jSrw)_markerrts rd get_markerzMarkerStyle.get_marker(rrfc~t|tr(tj|r|j|_n=t|t tfr0||jvr"t|d|j|z|_nt|tjr3|jdk(r$|jddk(r|j|_nt|tr|j|_nt|t r&t#|dvr|ddvr|j$|_nRt|t&r%t)j*|j,|_n t||j|_t|t&s||_|j3yy#t.$r}t/d||d}~wwxYw)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 )rrr zUnrecognized marker style N) isinstancestrr is_math_text_set_mathtext_pathrXintmarkersgetattrnpndarrayndimshape _set_verticesr_set_path_markerrry_set_tuple_markerrcopydeepcopy__dict__ ValueErrorrru)r^r_errs rdr]zMarkerStyle._set_marker+sf fc "u'9'9&'A$($;$;D ! c +$,,0F$+D'DLL*>>FFH Hrfc|jSrw)rmrts rdget_snap_thresholdzMarkerStyle.get_snap_thresholdvs###rfcP|j|jjSy)z.Return user supplied part of marker transform.N)rYrrts rdget_user_transformzMarkerStyle.get_user_transformys(    +''..0 0 ,rfcpt|}|j|xj|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. )rrY)r^ra new_markers rd transformedzMarkerStyle.transformed~sC!&  % % 1  & &) 3 &*3J &rf)degradc| | td| | tdt|}|jt|_||jj |||jj ||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. zOne of deg or rad is requiredz'Only one of deg and rad can be supplied)rrrYr rotate_degrotate)r^rrrs rdrotatedzMarkerStyle.rotateds ;3;<= = ?sFG G &  % % -)1J & ?  & & 1 1# 6 ?  & & - -c 2rfc||}t|}|jxs 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. )rrYr scale)r^sxsyrrjs rdscaledzMarkerStyle.scaledsE :B & //=8: %/%5%5b"%= "rfcd|_y)NFr}rts rd _set_nothingzMarkerStyle._set_nothings  rfctjtj|j}t j d|z |_||_y)N?)rmaxabsrzr rrjri)r^pathrescales rd_set_custom_markerzMarkerStyle._set_custom_markers<&& ./"***3=9 rfc:|j|jyrw)rrrts rdrzMarkerStyle._set_path_markers  -rfcL|jt|jyrw)rrrrts rdrzMarkerStyle._set_verticess T\\ 23rfc|j}t|dk(r|dd}}nt|dk(r |d|d}}|d}|dk(r>tj|_|j xst j|_n|dk(r>tj|_|j xst j|_nX|dk(rEtj|_d|_ |j xst j|_ntd|tjdj!|_y) Nr rrrFzUnexpected tuple marker: r)rryrunit_regular_polygonrir[r miterrounit_regular_starbevelunit_regular_asteriskrsrr rrrj)r^r_numsidesrotationsymstyles rdrzMarkerStyle._set_tuple_markers v;! !'ChH [A !'F1IhH!9 q=228?DJ!Aq6Aq6Aq6Aq6"BCDN##%B SCHLF OO & &v ."&//D ..A)//rfc\|j|jjddy)Nrr)rrjrrts rd_set_thin_diamondzMarkerStyle._set_thin_diamondns"  c3'rfcttjd|_d|_t j d}|j s||_n|j}dtjdzdz }t |gd}t |gd}t |d|d|d d| g|dg}t |d|d |d d| g|dg}||f||f||f||fd |j\|_|_ |j|_ |jxstj |_y) Nrrr@)rrrr)rr rrrrr rrrVrUrSrT)r rrjrmrrrrirzrsqrtrrkrlr[r rro)r^polypathvertsyrVrUrSrTs rd _set_pentagonzMarkerStyle._set_pentagonrs5"***3/",,Q/ !DJ%%ERWWQZ2%Au\*+C%01Fq58U1XA2waIJD%(E!HeAhQBqJKEV} u  *  "*$ &DJ#'//D ..A)//rfc tjd|_d|_t j dd}|j s||_n|j}t tj|dd|dd |dd g}t tj|d d |d dg}t tj|dd |dd g}t tj|dd |dd |dd g}||f||f||f||fd|j\|_|_ |j|_ |jxstj |_y)Nrrrgŋ!r?) innerCirclerr rrr)r rrjrmrrrrirzr concatenaterrkrlr[r rro)r^r r!rVrUrSrTs rd _set_starzMarkerStyle._set_starsM"***3/"))!B !DJ%%Er~~uQqz52;a &KLMC"..%!*eAaj)ABCFa E!AJ'?@ADqU1R[%!*(MNOEV} u  *  "*$ &DJ#'//D ..A)//rfctjd|_d|_t j d}|j s||_n|j}tjtjdtjzdz }t tj| dfg|gd|dfgg}t tj| dfg|dd|dfgg}t |dd}t |gd }||f||f||f||fd |j\|_|_|j|_|j"xst$j&|_y) Nrr)rg@r)rrrr r)rrrrr)r rrjrmrrrrirzrrcospir*rrkrlr[r rro)r^r r!r4rVrUrSrTs rd _set_hexagon1zMarkerStyle._set_hexagon1sH"***3/#,,Q/ !DJ%%Ervva"%%i"n-.Ar~~!Qy% 2BaVH&MNOC"..QB7)U1QZ1a&)JKLFa #D|,-EV} u  *  "*$ &DJ#'//D ..A)//rfc tjdjd|_d|_t j d}|js||_n|j}tjddz d}}t |gd}t |dd }t tj||fg|dd| | f||fgg}t tj||fg|d d d | | fgg}||f||f||f||fd |j\|_|_|j|_|j xst"j$|_y) Nrr)rrg?)rrrrrrrr rr)r rrrjrmrrrrirzrrr*rrkrlr[r rro) r^r r!r4r"rVrUrSrTs rd _set_hexagon2zMarkerStyle._set_hexagon2se"***3/::2>#,,Q/ !DJ%%E771:>6qAu_-.C%!*%FQ%)rA2hA%7(9:;DQ%!B-A2r()567EV} u  *  "*$ &DJ#'//D ..A)//rfc ttjd|_d|_t j d}|j s#|jjd||_ntjddz }t ddgdd g| d gd|gd| g| dgddggx|_|_ |j}|jjdd d d d ||jjjd|_|jxst j"|_y)Nrrr(g6@rrrrrrrr)rSrUrTrVr)r rrjrmrrrrrirrrkrrrlr[r rro)r^r r4rs rd _set_octagonzMarkerStyle._set_octagons"***3/",,Q/ OO & &t ,!DJ b A*.R1a&A2q'B7qbQB8aW.+/ /DJ##%B OO & &b3sCBG I"&//"8"8":"E"Ee"LD ..A)//rfrc~tjd|_d|_d|_|j |_yNrrF)r rrjrmrs_line_marker_pathrirts rd _set_vlinezMarkerStyle._set_vlines2"***3/" ++ rfcd|j|jjd|_yNr)r9rjrrts rd _set_hlinezMarkerStyle._set_hlines" //44R8rfctjdd|_d|_d|_|j |_y)Nr5rFr rrjrmrs_tickhoriz_pathrirts rd _set_tickleftzMarkerStyle._set_ticklefts4"***45" )) rfctjdd|_d|_d|_|j |_yNrFr>rts rd_set_tickrightzMarkerStyle._set_tickrights4"***34" )) rfgctjdd|_d|_d|_|j |_yrBr rrjrmrs_tickvert_pathrirts rd _set_tickupzMarkerStyle._set_tickups4"***34" (( rfctjdd|_d|_d|_|j |_y)Nrr5FrErts rd _set_tickdownzMarkerStyle._set_tickdowns4"***35" (( rfg?rgc~tjd|_d|_d|_|j |_y)NrrF)r rrjrmrs _tri_pathrirts rd _set_tri_downzMarkerStyle._set_tri_downs0"***3/" ^^ rfcd|j|jjd|_yNrrLrjrrts rd _set_tri_upzMarkerStyle._set_tri_up$ //44S9rfcd|j|jjd|_yNrrOrts rd _set_tri_leftzMarkerStyle._set_tri_leftrQrfcd|j|jjd|_yr;rOrts rd_set_tri_rightzMarkerStyle._set_tri_right#s$ //44R8rfg?ctjd|_d|_d|_|j |_|jxstj|_ yNrg@F) r rrjrmrs _caret_pathrir[r rrorts rd_set_caretdownzMarkerStyle._set_caretdown)sH"***3/" %% ..A)//rfcd|j|jjd|_yrNrZrjrrts rd _set_caretupzMarkerStyle._set_caretup0$ //44S9rfcd|j|jjd|_yrSr\rts rd_set_caretleftzMarkerStyle._set_caretleft4r^rfcd|j|jjd|_yr;r\rts rd_set_caretrightzMarkerStyle._set_caretright8s$ //44R8rfgcF|j|j|_yrw)rZ_caret_path_baserirts rd_set_caretdownbasezMarkerStyle._set_caretdownbase>s ** rfcd|j|jjd|_yrNrerjrrts rd_set_caretupbasezMarkerStyle._set_caretupbaseB$ !//44S9rfcd|j|jjd|_yrSrgrts rd_set_caretleftbasezMarkerStyle._set_caretleftbaseFrirfcd|j|jjd|_yr;rgrts rd_set_caretrightbasezMarkerStyle._set_caretrightbaseJs$ !//44R8rfc~tjd|_d|_d|_|j |_yr7)r rrjrmrs _plus_pathrirts rd _set_pluszMarkerStyle._set_plusSs0"***3/" __ rfc~tjd|_d|_d|_|j |_yrX)r rrjrmrs_x_pathrirts rd_set_xzMarkerStyle._set_x^s0"***3/" \\ rf) )r)rrt)rr)rrrrrrrrrrrrrtr)rtr)rrr)))rrrurvrwrxryrz)rtrct|_d|_|jxstj |_|js|j|_ y|jx|_ |_ |j}|jjddddd||jjjd|_yNrrrrr)rVrSrUrT)r rjrmr[r rror_plus_filled_pathri_plus_filled_path_trkrrrrlr^rs rd_set_plus_filledzMarkerStyle._set_plus_filledks"*"..A)// //DJ+/*B*B BDJ##%B OO & &2sCBG I"&//"8"8":"E"Ec"JD rf) )r)rr)rr)r rrrr rrr rrrr rrrr)rrr)rrrrrrrct|_d|_|jxstj |_|js|j|_ y|jx|_ |_ |j}|jjddddd||jjjd|_yr|)r rjrmr[r rror_x_filled_pathri_x_filled_path_trkrrrrlrs rd _set_x_filledzMarkerStyle._set_x_filleds"*"..A)// ,,DJ+/*?*? ?DJ##%B OO & &2sCBG I"&//"8"8":"E"Ec"JD rf)NNNNrw)r)k__name__ __module__ __qualname____doc__TICKLEFT TICKRIGHTTICKUPTICKDOWN CARETLEFT CARETRIGHTCARETUP CARETDOWN CARETLEFTBASECARETRIGHTBASE CARETUPBASE CARETDOWNBASErfilled_markersrrrerur{r~rr\rrrr]rrrrrrrrrrrrrrrrrrrr_create_closedrrrrrrr r rrrrrr#r+r/r2r4r8r9r<r?r@rCrFrGrIMOVETOLINETOrKrLrPrTrVrYrZr]r`rbrdrerhrkrmrorprrrsrarrayr}r~rrrrrfrdrrsW * 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\NDJ9KO!< . $$##JEI$1  "t:, .4E*0= L# $)T((1a&2r(QG)DEN*t**QFT4L3++NO*t** T{QGb"X68*t**QFQGb"X+FG*t**QFQGaW+EFB<*,+,B$ B(B.B,B0B4B*sDkC:67, 9S#Jc 34O* * D#;s 45N) ) sCj3+Cj3*Cj4+/kk4;;kk4;;kk4;;01I$ ::9s c3Z#s<=KB::9dC[3+Qx@A+::9c{S#JT{S#J0{{DKK{{DKK12J % T4L3*3K#t.KKKK./G " ,++HBHH6D-EGH-IJ.$--hbhh8//023/45 K)T((3B*CEF*GHN+t**82885%,&(),*+ Krfr)#rrcollections.abcrnumpyr matplotlibrrQrrrr transformsrr _enumsr r rangerrrrrrrrrrrremptyrhrrrfrdrsr@B !3' ?DBi<9fh J ]8288F#$ v Kv Krf