B
    ]”t\)†  ã               @   s’   d Z ddlmZ ddlmZ ddlZddlmZm	Z	 ddl
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 d
¡ƒZG dd„ deƒZdS )u`  
This module contains functions to handle markers.  Used by both the
marker functionality of `~matplotlib.axes.Axes.plot` and
`~matplotlib.axes.Axes.scatter`.

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  ``""``        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, style, angle)``          The marker can also be a tuple
                                      ``(numsides, style, angle)``, which
                                      will create a custom, regular symbol.

                                      ``numsides``:
                                          the number of sides

                                      ``style``:
                                          the style of the regular symbol:

                                          - 0: a regular polygon
                                          - 1: a star-like symbol
                                          - 2: an asterisk
                                          - 3: a circle (``numsides`` and
                                            ``angle`` is ignored);
                                            deprecated.

                                      ``angle``:
                                          the angle of rotation of the symbol
============================== ====== =========================================

For backward compatibility, the form ``(verts, 0)`` is also accepted, but it is
deprecated and equivalent to just ``verts`` for giving a raw set of vertices
that define the shape.

``None`` is the default which means 'nothing', however this table is
referred to from other docs for the valid inputs from marker inputs and in
those cases ``None`` still means 'default'.

Note that special symbols can be defined via the
:doc:`STIX math font </tutorials/text/mathtext>`,
e.g. ``"$â™«$"``. 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)


Examples showing the use of markers:

* :doc:`/gallery/lines_bars_and_markers/marker_reference`
* :doc:`/gallery/lines_bars_and_markers/marker_fillstyle_reference`
* :doc:`/gallery/shapes_and_collections/marker_path`


.. |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
é    )ÚSized)ÚNumberNé   )ÚcbookÚrcParams)ÚPath)ÚIdentityTransformÚAffine2Dé   )r   é   c            R   @   sð  e Zd Z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"d#d$d%d%d&d'd(d)d*d+d,d-d.d/d0d1ed2ed3ed4ed5ed6ed7e	d8e
d9ed:ed;ed<ed=d>d?d@d?dAd?dBd?i)ZdCZdDZdEZdFZdådGdH„ZdIdJ„ ZdKdL„ ZdMdN„ ZdOdP„ ZdQdR„ ZdSdT„ ZdUdV„ ZdWdX„ ZdYdZ„ Zd[d\„ Zd]d^„ Zd_d`„ Z dadb„ Z!dcdd„ Z"dedf„ Z#dgdh„ Z$didj„ Z%dkdl„ Z&dmdn„ Z'dodp„ Z(dqdr„ Z)dædtdu„Z*dvdw„ Z+dxdy„ Z,e-dzdsgd{d{gdsd{gdzdsgge-j.e-j/e-j/e-j0gƒZ1e-dzdsgd|d}gd~d}gdzdsgge-j.e-j/e-j/e-j0gƒZ2e-d|d}gd~d}gdsd{gd{d{gd|d}gge-j.e-j/e-j/e-j/e-j0gƒZ3e-dzdsgdzd{gd{d{gdzdsgge-j.e-j/e-j/e-j0gƒZ4e-dzdsgdzd{gdsd{gdzdsgge-j.e-j/e-j/e-j0gƒZ5dd€„ Z6dd‚„ Z7dƒd„„ Z8d…d†„ Z9d‡dˆ„ Z:d‰dŠ„ Z;d‹dŒ„ Z<ddŽ„ Z=dd„ Z>d‘d’„ Z?d“d”„ Z@d•d–„ ZAd—d˜„ ZBe-dzd{gdzdsggƒZCd™dš„ ZDd›dœ„ ZEe-dzdzgdsdzggƒZFddž„ ZGdŸd „ ZHe-d¡dzgd¡dsggƒZId¢d£„ ZJd¤d¥„ ZKe-dzdzgdzd{gdzdzgd¦dFgdzdzgd§dFgge-j.e-j/e-j.e-j/e-j.e-j/gƒZLd¨d©„ ZMdªd«„ ZNd¬d­„ ZOd®d¯„ ZPe-d{d°gdzdzgdsd°ggƒZQd±d²„ ZRd³d´„ ZSdµd¶„ ZTd·d¸„ ZUe-d{dzgdzd¹gdsdºggƒZVd»d¼„ ZWd½d¾„ ZXd¿dÀ„ ZYdÁdÂ„ ZZe-d{dzgdsdzgdzd{gdzdsgge-j.e-j/e-j.e-j/gƒZ[dÃdÄ„ Z\e-d{d{gdsdsgd{dsgdsd{gge-j.e-j/e-j.e-j/gƒZ]dÅdÆ„ Z^e-dÇdÈdÉdÊdËdÌdÍdÎdÏdÐdÑdÒdÇge-j.e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j0gƒZ_e-dÓdËdÌdÍdÎdÏdÐdÔdÓg	e-j.e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j0g	ƒZ`dÕdÖ„ Zae-d×dØdÙdÚdÛdÜdÝdÞdßdàdádâd×ge-j.e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j/e-j0gƒZbe-dÛdÜdÝdÞdßdàdádÛge-j.e-j/e-j/e-j/e-j/e-j/e-j/e-j0gƒZcdãdä„ Zdd@S )çÚMarkerStyleÚ.Zpointú,ZpixelÚoZcircleÚvZtriangle_downú^Ztriangle_upú<Ztriangle_leftú>Ztriangle_rightÚ1Ztri_downÚ2Ztri_upÚ3Ztri_leftÚ4Z	tri_rightÚ8ZoctagonÚsZsquareÚpZpentagonÚ*ZstarÚhZhexagon1ÚHZhexagon2ú+ZplusÚxÚDZdiamondÚdZthin_diamondú|ZvlineÚ_ZhlineÚPZplus_filledÚXZx_filledZtickleftZ	tickrightZtickupZtickdownZ	caretleftZ
caretrightZcaretupZ	caretdownZcaretleftbaseZcaretrightbaseZcaretupbaseZcaretdownbaseÚNoneZnothingNú Ú )r   r   r   r   r   r   r   r   r   r   r   r    r!   r$   r%   )ZfullÚleftÚrightÚbottomÚtopZnone)r)   r*   r+   r,   g      à?c             C   s   d| _ |  |¡ |  |¡ dS )aù  
        MarkerStyle

        Attributes
        ----------
        markers : list of known marks

        fillstyles : list of known fillstyles

        filled_markers : list of known filled markers.

        Parameters
        ----------
        marker : string or array_like, optional, default: None
            See the descriptions of possible markers in the module docstring.

        fillstyle : string, optional, default: 'full'
            'full', 'left", 'right', 'bottom', 'top', 'none'
        N)Ú_marker_functionÚset_fillstyleÚ
set_marker)ÚselfÚmarkerÚ	fillstyle© r3   ú1lib/python3.7/site-packages/matplotlib/markers.pyÚ__init__ß   s    
zMarkerStyle.__init__c             C   sL   | j d krd S t| _tƒ | _d | _d | _d | _d| _d| _	d| _
|   ¡  d S )NÚroundZbuttT)r-   Ú_empty_pathÚ_pathr   Ú
_transformÚ	_alt_pathÚ_alt_transformÚ_snap_thresholdÚ
_joinstyleÚ	_capstyleÚ_filled)r0   r3   r3   r4   Ú_recache÷   s    
zMarkerStyle._recachec             C   s   t t| jjƒƒS )N)ÚboolÚlenr8   Úvertices)r0   r3   r3   r4   Ú__bool__  s    zMarkerStyle.__bool__c             C   s   | j S )N)r?   )r0   r3   r3   r4   Ú	is_filled  s    zMarkerStyle.is_filledc             C   s   | j S )N)Ú
_fillstyle)r0   r3   r3   r4   Úget_fillstyle
  s    zMarkerStyle.get_fillstylec             C   s@   |dkrt d }|| jkr.tdd | j¡ ƒ‚|| _|  ¡  dS )z{
        Sets fillstyle

        Parameters
        ----------
        fillstyle : string amongst known fillstyles
        Nzmarkers.fillstylezUnrecognized fillstyle %sr'   )r   Ú
fillstylesÚ
ValueErrorÚjoinrF   r@   )r0   r2   r3   r3   r4   r.     s    
zMarkerStyle.set_fillstylec             C   s   | j S )N)r=   )r0   r3   r3   r4   Úget_joinstyle  s    zMarkerStyle.get_joinstylec             C   s   | j S )N)r>   )r0   r3   r3   r4   Úget_capstyle   s    zMarkerStyle.get_capstylec             C   s   | j S )N)Ú_marker)r0   r3   r3   r4   Ú
get_marker#  s    zMarkerStyle.get_markerc             C   s  t |tjƒr.|jdkr.|jd dkr.| j| _nÈt |tƒrLt 	|¡rL| j
| _nªt |tƒr`| j| _n–t |tƒrŒt|ƒdkrŒ|d dkrŒ| j| _njt |tjtfƒs¾|| jkr¾t| d| j|  ƒ| _n8yt|ƒ | j| _W n" tk
rô   td |¡ƒ‚Y nX || _|  ¡  d S )Nr   r   )r   é   )r   r   r   rO   Z_set_zUnrecognized marker style {!r})Ú
isinstanceÚnpZndarrayÚndimÚshapeÚ_set_verticesr-   Ústrr   Zis_math_textÚ_set_mathtext_pathr   Ú_set_path_markerr   rB   Ú_set_tuple_markerÚlistÚmarkersÚgetattrrI   ÚformatrM   r@   )r0   r1   r3   r3   r4   r/   &  s,    





zMarkerStyle.set_markerc             C   s   | j S )N)r8   )r0   r3   r3   r4   Úget_path@  s    zMarkerStyle.get_pathc             C   s
   | j  ¡ S )N)r9   Úfrozen)r0   r3   r3   r4   Úget_transformC  s    zMarkerStyle.get_transformc             C   s   | j S )N)r:   )r0   r3   r3   r4   Úget_alt_pathF  s    zMarkerStyle.get_alt_pathc             C   s
   | j  ¡ S )N)r;   r^   )r0   r3   r3   r4   Úget_alt_transformI  s    zMarkerStyle.get_alt_transformc             C   s   | j S )N)r<   )r0   r3   r3   r4   Úget_snap_thresholdL  s    zMarkerStyle.get_snap_thresholdc             C   s
   d| _ d S )NF)r?   )r0   r3   r3   r4   Ú_set_nothingO  s    zMarkerStyle._set_nothingc          	   C   s\   |j }tt t |d d …df ¡¡t t |d d …df ¡¡ƒ}tƒ  d| ¡| _|| _d S )Nr   r   g      à?)rC   ÚmaxrQ   Úabsr	   Úscaler9   r8   )r0   ÚpathÚvertsZrescaler3   r3   r4   Ú_set_custom_markerR  s
    zMarkerStyle._set_custom_markerc             C   s   |   | j¡ d S )N)ri   rM   )r0   r3   r3   r4   rW   Y  s    zMarkerStyle._set_path_markerc             C   s   | j }t|ƒ}|  |¡ d S )N)rM   r   ri   )r0   rh   r1   r3   r3   r4   rT   \  s    zMarkerStyle._set_verticesc             C   s  | j }t|d tƒrät|ƒdkr0|d d }}nt|ƒdkrN|d |d  }}|d }|dkrrt |¡| _d| _n\|dkrŽt |¡| _d| _n@|dkr°t 	|¡| _d| _
d| _n|dkrÎt d	d
¡ t ¡ | _tƒ  d¡ |¡| _n,t d	d¡ t |d ¡}t|ƒ}|  |¡ d S )Nr   r   g        rO   r   ÚmiterÚbevelFz3.0z“Setting a circle marker using `(..., 3)` is deprecated since Matplotlib 3.0, and support for it will be removed in 3.2.  Directly pass 'o' instead.g      à?zPassing vertices as `(verts, 0)` is deprecated since Matplotlib 3.0, and support for it will be removed in 3.2.  Directly pass `verts` instead.)rM   rP   r   rB   r   Úunit_regular_polygonr8   r=   Úunit_regular_starZunit_regular_asteriskr?   r   Zwarn_deprecatedÚunit_circler	   rf   Ú
rotate_degr9   rQ   Zasarrayri   )r0   r1   ZnumsidesZrotationZsymstylerh   rg   r3   r3   r4   rX   a  s6    
zMarkerStyle._set_tuple_markerc             C   sÌ   ddl m} ddlm} |dd}|d|  ¡ |td d}t|jƒdkrLd	S |jjdd
\}}|jj	dd
\}}|| }	|| }
t	|	|
ƒ}t
ƒ  | d|	   | d|
   ¡ d| ¡| _|| _d| _d	S )za
        Draws mathtext markers '$...$' using TextPath object.

        Submitted by tcb
        r   )ÚTextPath)ÚFontPropertiesg      ð?)Úsize)r   r   ztext.usetex)Zxyr   ZfontpropertiesZusetexN)Zaxisg      à?F)Zmatplotlib.textrp   Zmatplotlib.font_managerrq   rN   r   rB   rC   Úminrd   r	   Ú	translaterf   r9   r8   Z_snap)r0   rp   rq   ZpropsÚtextZxminZyminZxmaxZymaxÚwidthZheightZmax_dimr3   r3   r4   rV   ƒ  s"    

 zMarkerStyle._set_mathtext_pathc             C   s   |   ¡ }|| jk}|S )N)rG   Ú_half_fillstyles)r0   ÚfsÚresultr3   r3   r4   Ú
_half_fill¡  s    
zMarkerStyle._half_fillç      ð?c             C   s–   t ƒ  d| ¡| _tj| _|  ¡ }|  ¡ s6t 	¡ | _
n\|dkrDd}n |dkrRd}n|dkr`d}nd}t ¡  | _
| _| j |¡ | j ¡  d¡| _d S )	Ng      à?r+   g     àp@r,   g     €V@r)   g     €f@g        )r	   rf   r9   rQ   Úinfr<   rG   rz   r   rn   r8   Zunit_circle_righthalfr:   ro   r^   r;   )r0   Ú	reductionrx   Úrotater3   r3   r4   Ú_set_circle¦  s    zMarkerStyle._set_circlec             C   s$   t  ¡ | _tƒ  dd¡| _d | _d S )Ng9î”Öÿß¿)r   Úunit_rectangler8   r	   rt   r9   r<   )r0   r3   r3   r4   Ú
_set_pixel»  s    

zMarkerStyle._set_pixelc             C   s   | j | jd d S )N)r}   )r   Ú_point_size_reduction)r0   r3   r3   r4   Ú
_set_pointÉ  s    zMarkerStyle._set_pointg        g      ð¿g333333ã¿gš™™™™™É¿g333333ã?c             C   s
  t ƒ  dd¡ |¡| _d| _|  ¡ }|  ¡ s6| j| _nÊ| j	| j
| j| jg}|dkrx|d| d  | _|d| d  | _n€|dkr¦|d| d  | _|d| d  | _nR|dkrÔ|d	| d  | _|d
| d  | _n$|d
| d  | _|d	| d  | _| j| _d| _d S )Ng      à?g      @r,   r   é   r   r+   r)   r   rO   rj   )r	   rf   ro   r9   r<   rG   rz   Ú_triangle_pathr8   Ú_triangle_path_uÚ_triangle_path_lÚ_triangle_path_dÚ_triangle_path_rr:   r;   r=   )r0   ZrotÚskiprx   Zmpathsr3   r3   r4   Ú_set_triangleÞ  s,    
zMarkerStyle._set_trianglec             C   s   |   dd¡S )Ng        r   )r‹   )r0   r3   r3   r4   Ú_set_triangle_upü  s    zMarkerStyle._set_triangle_upc             C   s   |   dd¡S )Ng     €f@r   )r‹   )r0   r3   r3   r4   Ú_set_triangle_downÿ  s    zMarkerStyle._set_triangle_downc             C   s   |   dd¡S )Ng     €V@rO   )r‹   )r0   r3   r3   r4   Ú_set_triangle_left  s    zMarkerStyle._set_triangle_leftc             C   s   |   dd¡S )Ng     àp@r   )r‹   )r0   r3   r3   r4   Ú_set_triangle_right  s    zMarkerStyle._set_triangle_rightc             C   sÎ   t ƒ  dd¡| _d| _|  ¡ }|  ¡ s2t ¡ | _n’|dkr@d}n |dkrNd}n|dkr\d}nd	}t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 
|¡ | j| _d| _d S )Ng      à¿g       @r+   g        r,   g     €f@r)   g     àp@g     €V@g      ð?g      à?rj   )r	   rt   r9   r<   rG   rz   r   r€   r8   r:   ro   r;   r=   )r0   rx   r~   r3   r3   r4   Ú_set_square  s&    zMarkerStyle._set_squarec             C   sÈ   t ƒ  dd¡ d¡| _d| _|  ¡ }|  ¡ s8t ¡ | _	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ƒ| _
|dkrŠd}n |dkr˜d	}n|d
kr¦d}nd}| j |¡ | j| _d| _d S )Ng      à¿é-   g      @g        g      ð?r+   g     àp@r,   g     €V@r)   g     €f@rj   )r	   rt   ro   r9   r<   rG   rz   r   r€   r8   r:   r;   r=   )r0   rx   r~   r3   r3   r4   Ú_set_diamond$  s$    "zMarkerStyle._set_diamondc             C   s   |   ¡  | j dd¡ d S )Ng333333ã?g      ð?)r’   r9   rf   )r0   r3   r3   r4   Ú_set_thin_diamond=  s    zMarkerStyle._set_thin_diamondc             C   sN  t ƒ  d¡| _d| _t d¡}|  ¡ }|  ¡ s8|| _n|j	}dt
 d¡ d }t|d |d |d |d gƒ}t|d |d |d	 |d |d gƒ}t|d |d |d d| g|d gƒ}t|d |d |d	 d| g|d gƒ}|d
krú|| }	}
n6|dkr|| }	}
n |dkr&|| }	}
n
|| }	}
|	| _|
| _| j| _d| _d S )Ng      à?g      @é   r   g      @r   r„   r   rO   r,   r+   r)   rj   )r	   rf   r9   r<   r   rl   rG   rz   r8   rC   rQ   Úsqrtr:   r;   r=   )r0   Úpolypathrx   rh   Úyr,   r+   r)   r*   ÚmpathÚ	mpath_altr3   r3   r4   Ú_set_pentagonA  s.    

 &((


zMarkerStyle._set_pentagonc       
      C   s\  t ƒ  d¡| _d| _|  ¡ }tjddd}|  ¡ s<|| _n|j	}tt
 |dd…d d …f |dd	…d d …f |d f¡ƒ}tt
 |d
d…d d …f |d
 f¡ƒ}tt
 |dd…d d …f |d f¡ƒ}tt
 |d |dd	…d d …f |d f¡ƒ}|dkr|| }}	n6|dkr|| }}	n |dkr4|| }}	n
|| }}	|| _|	| _| j| _d| _d S )Ng      à?g      @r”   gœÅ‹…!rØ?)ZinnerCircler   r„   é   é
   rO   é   é   r,   r+   r)   rk   )r	   rf   r9   r<   rG   r   rm   rz   r8   rC   rQ   Úvstackr:   r;   r=   )
r0   rx   r–   rh   r,   r+   r)   r*   r˜   r™   r3   r3   r4   Ú	_set_stara  s,    
8&&,



zMarkerStyle._set_starc             C   s@  t ƒ  d¡| _d | _|  ¡ }t d¡}|  ¡ s8|| _ nþ|j	}t
 t
 dt
j d ¡¡}tt
 | dg|dd d …f |dgf¡ƒ}tt
 | dg|dd…d d …f |dgf¡ƒ}t|dd d …f ƒ}t|d	d d …f ƒ}|d
krì|| }	}
n6|dkr|| }	}
n |dkr|| }	}
n
|| }	}
|	| _|
| _| j| _d| _d S )Ng      à?rž   r”   g      @r   )r   r   r”   r   )r   r   r   rO   )r   r”   r„   rO   r,   r+   r)   rj   )r	   rf   r9   r<   rG   r   rl   rz   r8   rC   rQ   re   ZcosZpirŸ   r:   r;   r=   )r0   rx   r–   rh   r   r,   r+   r)   r*   r˜   r™   r3   r3   r4   Ú_set_hexagon1€  s.    

*.


zMarkerStyle._set_hexagon1c             C   sF  t ƒ  d¡ d¡| _d | _|  ¡ }t d¡}|  ¡ s>|| _	 nþ|j
}t d¡d d }}t|dd d …f ƒ}t|dd d …f ƒ}tt ||g|d	d d …f | | g||gf¡ƒ}tt ||g|d
d d …f | | gf¡ƒ}	|dkrò|| }
}n6|dkr|| }
}n |dkr||	 }
}n
|	| }
}|
| _	|| _| j| _d| _d S )Ng      à?é   rž   rO   r„   g      è?)r   r   r”   r„   r   )r   r   rO   r„   )r   r   r   )r”   r„   rO   r,   r+   r)   rj   )r	   rf   ro   r9   r<   rG   r   rl   rz   r8   rC   rQ   r•   rŸ   r:   r;   r=   )r0   rx   r–   rh   r   r—   r,   r+   r)   r*   r˜   r™   r3   r3   r4   Ú_set_hexagon2¢  s0    

,


zMarkerStyle._set_hexagon2c          	   C   sê   t ƒ  d¡| _d| _|  ¡ }t d¡}|  ¡ sB| j d¡ || _	nžt
 d¡d }tddgdd	g| d	gd|gd| g| dgddggƒ}|d
kr–d}n |dkr¤d}n|dkr²d}nd}| j |¡ | | _	| _| j ¡  d¡| _d| _d S )Ng      à?g      @r   g     €6@g       @g      @r   éÿÿÿÿr   r+   g     €V@r,   g     àp@r*   g     €f@g        rj   )r	   rf   r9   r<   rG   r   rl   rz   ro   r8   rQ   r•   r:   r^   r;   r=   )r0   rx   r–   r   Zhalfr~   r3   r3   r4   Ú_set_octagonÅ  s*    
zMarkerStyle._set_octagonc             C   s&   t ƒ  d¡| _d| _d| _| j| _d S )Ng      à?g      ð?F)r	   rf   r9   r<   r?   Ú_line_marker_pathr8   )r0   r3   r3   r4   Ú
_set_vlineå  s    zMarkerStyle._set_vlinec             C   s   |   ¡  | j d¡| _d S )NéZ   )r§   r9   ro   )r0   r3   r3   r4   Ú
_set_hlineë  s    zMarkerStyle._set_hlinec             C   s(   t ƒ  dd¡| _d| _d| _| j| _d S )Ng      ð¿g      ð?F)r	   rf   r9   r<   r?   Ú_tickhoriz_pathr8   )r0   r3   r3   r4   Ú_set_tickleftñ  s    zMarkerStyle._set_tickleftc             C   s(   t ƒ  dd¡| _d| _d| _| j| _d S )Ng      ð?F)r	   rf   r9   r<   r?   rª   r8   )r0   r3   r3   r4   Ú_set_tickright÷  s    zMarkerStyle._set_tickrightg       €c             C   s(   t ƒ  dd¡| _d| _d| _| j| _d S )Ng      ð?F)r	   rf   r9   r<   r?   Ú_tickvert_pathr8   )r0   r3   r3   r4   Ú_set_tickupÿ  s    zMarkerStyle._set_tickupc             C   s(   t ƒ  dd¡| _d| _d| _| j| _d S )Ng      ð?g      ð¿F)r	   rf   r9   r<   r?   r­   r8   )r0   r3   r3   r4   Ú_set_tickdown  s    zMarkerStyle._set_tickdowngš™™™™™é?gš™™™™™é¿c             C   s&   t ƒ  d¡| _d| _d| _| j| _d S )Ng      à?g      @F)r	   rf   r9   r<   r?   Ú	_tri_pathr8   )r0   r3   r3   r4   Ú_set_tri_down  s    zMarkerStyle._set_tri_downc             C   s   |   ¡  | j d¡| _d S )Né´   )r±   r9   ro   )r0   r3   r3   r4   Ú_set_tri_up  s    zMarkerStyle._set_tri_upc             C   s   |   ¡  | j d¡| _d S )Ni  )r±   r9   ro   )r0   r3   r3   r4   Ú_set_tri_left  s    zMarkerStyle._set_tri_leftc             C   s   |   ¡  | j d¡| _d S )Nr¨   )r±   r9   ro   )r0   r3   r3   r4   Ú_set_tri_right   s    zMarkerStyle._set_tri_rightg      ø?c             C   s,   t ƒ  d¡| _d| _d| _| j| _d| _d S )Ng      à?g      @Frj   )r	   rf   r9   r<   r?   Ú_caret_pathr8   r=   )r0   r3   r3   r4   Ú_set_caretdown&  s
    zMarkerStyle._set_caretdownc             C   s   |   ¡  | j d¡| _d S )Nr²   )r·   r9   ro   )r0   r3   r3   r4   Ú_set_caretup-  s    zMarkerStyle._set_caretupc             C   s   |   ¡  | j d¡| _d S )Ni  )r·   r9   ro   )r0   r3   r3   r4   Ú_set_caretleft1  s    zMarkerStyle._set_caretleftc             C   s   |   ¡  | j d¡| _d S )Nr¨   )r·   r9   ro   )r0   r3   r3   r4   Ú_set_caretright5  s    zMarkerStyle._set_caretrightg      ø¿r   c             C   s   |   ¡  | j| _d S )N)r·   Ú_caret_path_baser8   )r0   r3   r3   r4   Ú_set_caretdownbase;  s    zMarkerStyle._set_caretdownbasec             C   s   |   ¡  | j d¡| _d S )Nr²   )r¼   r9   ro   )r0   r3   r3   r4   Ú_set_caretupbase?  s    zMarkerStyle._set_caretupbasec             C   s   |   ¡  | j d¡| _d S )Ni  )r¼   r9   ro   )r0   r3   r3   r4   Ú_set_caretleftbaseC  s    zMarkerStyle._set_caretleftbasec             C   s   |   ¡  | j d¡| _d S )Nr¨   )r¼   r9   ro   )r0   r3   r3   r4   Ú_set_caretrightbaseG  s    zMarkerStyle._set_caretrightbasec             C   s&   t ƒ  d¡| _d| _d| _| j| _d S )Ng      à?g      ð?F)r	   rf   r9   r<   r?   Ú
_plus_pathr8   )r0   r3   r3   r4   Ú	_set_plusP  s    zMarkerStyle._set_plusc             C   s&   t ƒ  d¡| _d| _d| _| j| _d S )Ng      à?g      @F)r	   rf   r9   r<   r?   Ú_x_pathr8   )r0   r3   r3   r4   Ú_set_x[  s    zMarkerStyle._set_x)gUUUUUUÕ?r   )gUUUUUUå?r   )gUUUUUUå?gUUUUUUÕ?)r   gUUUUUUÕ?)r   gUUUUUUå?)gUUUUUUå?gUUUUUUå?)gUUUUUUå?r   )gUUUUUUÕ?r   )gUUUUUUÕ?gUUUUUUå?)r   gUUUUUUå?)r   gUUUUUUÕ?)gUUUUUUÕ?gUUUUUUÕ?)r   g      à?)r   g      à?c             C   s°   t ƒ  dd¡| _d| _d| _|  ¡ }|  ¡ s6| j| _nv|dkrHd\}}n,|dkrZd\}}n|dkrld	\}}nd
\}}| j	| _| j	| _
t ƒ  dd¡| _| j |¡ | j |¡ d S )Ng      à¿g      @rj   r,   )r   r²   r+   )r²   r   r)   )r¨   i  )i  r¨   )r	   rt   r9   r<   r=   rG   rz   Ú_plus_filled_pathr8   Ú_plus_filled_path_tr:   r;   ro   )r0   rx   r~   Ú
rotate_altr3   r3   r4   Ú_set_plus_filledt  s$    



zMarkerStyle._set_plus_filled)g      Ð?r   )g      à?g      Ð?)g      è?r   )r   g      Ð?)g      è?g      à?)r   g      è?)g      è?r   )g      à?g      è?)g      Ð?r   )r   g      è?)g      Ð?g      à?)r   g      Ð?c             C   s°   t ƒ  dd¡| _d| _d| _|  ¡ }|  ¡ s6| j| _nv|dkrHd\}}n,|dkrZd\}}n|dkrld	\}}nd
\}}| j	| _| j	| _
t ƒ  dd¡| _| j |¡ | j |¡ d S )Ng      à¿g      @rj   r,   )r   r²   r+   )r²   r   r)   )r¨   i  )i  r¨   )r	   rt   r9   r<   r=   rG   rz   Ú_x_filled_pathr8   Ú_x_filled_path_tr:   r;   ro   )r0   rx   r~   rÆ   r3   r3   r4   Ú_set_x_filled  s$    



zMarkerStyle._set_x_filled)NN)r{   )eÚ__name__Ú
__module__Ú__qualname__ÚTICKLEFTÚ	TICKRIGHTÚTICKUPÚTICKDOWNÚ	CARETLEFTÚ
CARETRIGHTÚCARETUPÚ	CARETDOWNÚCARETLEFTBASEÚCARETRIGHTBASEÚCARETUPBASEÚCARETDOWNBASErZ   Zfilled_markersrH   rw   r‚   r5   r@   rD   rE   rG   r.   rK   rL   rN   r/   r]   r_   r`   ra   rb   rc   ri   rW   rT   rX   rV   rz   r   r   rƒ   r   ZMOVETOZLINETOZ	CLOSEPOLYr…   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µ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÇ   rÈ   rÉ   rÊ   r3   r3   r3   r4   r   ¥   sX  
"
 "#



r   ) Ú__doc__Zcollections.abcr   Znumbersr   ZnumpyrQ   r(   r   r   rg   r   Z
transformsr   r	   ÚrangerÎ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   r×   rØ   rÙ   Úemptyr7   Úobjectr   r3   r3   r3   r4   Ú<module>’   s    