
    P/Ph                        d Z ddlmZ ddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ  G d dej                  Z G d	 d
ej                  Z G d dej                  Z G d de          Z ee            e	dgd          d             Z  e	dgd ej!                    dk    rdnd          d             Z"dS )z)
Testing that skewed Axes properly work.
    )	ExitStackN)image_comparison)Axes)register_projectionc                   $     e Zd Z fdZd Z xZS )	SkewXTickc                    t                      5 }| j        | j        | j        | j        | j        fD ]/}|                    |j        |                                           0t          j
        | j        j        |                                           }t          j
        | j        j        |                                           }| j                            | j                                        o|           | j                            | j                                        o|           | j                            | j                                        o|           | j                            | j                                        o|           t                                          |           d d d            d S # 1 swxY w Y   d S N)r   gridline	tick1line	tick2linelabel1label2callbackset_visibleget_visible
transformsinterval_containsaxes
lower_xlimget_loc
upper_xlimsuperdraw)selfrendererstackartistneeds_lowerneeds_upper	__class__s         Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_skew.pyr   zSkewXTick.draw   s   [[ 	#E=$.$.;5 I Iv163E3E3G3GHHHH$6	$dllnn6 6K$6	$dllnn6 6KN&&**,,<> > >K##''))9k; ; ;N&&**,,<> > >K##''))9k; ; ;GGLL"""!	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   F F==GGc                 >    | j         j                                        S r
   )r   xaxisget_view_intervalr   s    r"   r%   zSkewXTick.get_view_interval*   s    y00222    )__name__
__module____qualname__r   r%   __classcell__r!   s   @r"   r   r      sG        # # # # #&3 3 3 3 3 3 3r'   r   c                       e Zd Zd Zd ZdS )	SkewXAxisc                 0    t          | j        d |          S )N)major)r   r   )r   r0   s     r"   	_get_tickzSkewXAxis._get_tick1   s    D6666r'   c                 J    | j         j        d         | j         j        d         fS )Nr      )r   r   r   r&   s    r"   r%   zSkewXAxis.get_view_interval4   s!    y#A&	(<Q(???r'   N)r(   r)   r*   r1   r%    r'   r"   r.   r.   0   s7        7 7 7@ @ @ @ @r'   r.   c                       e Zd Zd ZdS )	SkewSpinec                     | j         j        }| j        dk    r| j        j        |d d df<   d S | j        j        |d d df<   d S )Ntopr   )_pathvertices
spine_typer   r   r   r   ptss     r"   _adjust_locationzSkewSpine._adjust_location<   sM    j!?e##	,C1III	,C1IIIr'   N)r(   r)   r*   r>   r4   r'   r"   r6   r6   ;   s#        - - - - -r'   r6   c                   Z     e Zd ZdZd Zd Z fdZed             Zed             Z	 xZ
S )	SkewXAxesskewxc                    t          |           | _        | j        j                            | j                   | j        j                            | j                   t          j        |           | _        | j        j	                            | j                   | j        j
                            | j                   d S r
   )r.   r$   spinesr8   register_axisbottommaxisYAxisyaxisleftrightr&   s    r"   
_init_axiszSkewXAxes._init_axisL   s    t__
%%dj111((444[&&
&&tz222''
33333r'   c                     t                               | d          t          j                            | d          t          j                            | d          t          j                            | d          d}|S )Nr8   rE   rI   rJ   )r8   rE   rI   rJ   )r6   linear_spinemspinesSpine)r   rC   s     r"   _gen_axes_spineszSkewXAxes._gen_axes_spinesU   si    "//e<<#M66tXFF!-44T6BB"=55dGDDF F r'   c                    d}t                                                       | j        | j        t	          j                                        |d          z   z   | _        | j        | j        z   | _	        t	          j
        | j        | j        z   t	          j                              t	          j                                        |d          z   | j        z   | _        dS )z
        This is called once when the plot is created to set up all the
        transforms for the data, text and grids.
           r   N)r   _set_lim_and_transforms
transScaletransLimitsr   Affine2Dskew_degtransDataToAxes	transAxes	transDatablended_transform_factoryIdentityTransform_xaxis_transform)r   rotr!   s     r"   rS   z!SkewXAxes._set_lim_and_transforms\   s    
  	''))) !%!%!1!+!4!6!6!?!?Q!G!G"H!I
 -> ",!EOd..(**", ", !!**322"3 7;n!Er'   c                 $    | j         j        j        S r
   )r   viewLim	intervalxr&   s    r"   r   zSkewXAxes.lower_xlimy   s    y **r'   c                 ~    ddgddgg}| j                                                             |          d d df         S )Ng        g      ?r   )rX   inverted	transformr<   s     r"   r   zSkewXAxes.upper_xlim}   sD    Bx"b"#,,..88==aaadCCr'   )r(   r)   r*   namerK   rP   rS   propertyr   r   r+   r,   s   @r"   r@   r@   G   s         D4 4 4  E E E E E: + + X+ D D XD D D D Dr'   r@   	skew_axesT)remove_textc                     t          j                    } |                     dddd          }|                    dd           |                    dd           |                    d           |                    dd	           d S )
Nr3   rA   )
projectioni2   Tr   b)color)pltfigureadd_subplotset_xlimset_ylimgridaxvline)figaxs     r"   test_set_line_coll_dash_imagerw      s{    
*,,C	AqW	5	5BKKRKKCGGDMMM JJqJr'   
skew_rectsarm64g;On?)rh   tolc                     t          j        ddddd          \  } }|j        }t          t	          j        g dd                    }|d                             d	d
g           |d                             d	d
g           |d                             dd           t          ||          D ]\  }\  }}d|z  d|z  }}t          j                                        ||          }|                    d| d| d           |                    t          j        ddgdd||j        z   dd                     t          j        ddddd           d S )N   T)   r}   )sharexshareyfigsize)r   r3         )repeatr   r   r   equal)share-   zSkew of z
 in X and z in Yr   g      ?coral)rd   alpha	facecolorg{Gz?gGz?)wspacerI   rJ   rE   r8   )rn   subplotsflatlist	itertoolsproductrq   rr   
set_aspectzipr   rV   rW   	set_title	add_patchmpatch	RectanglerZ   subplots_adjust)	fixr   	rotationsrv   xrotsyrotsxdegydegts	            r"   test_skew_rectangler      s    Q$tVLLLIC9DY&'8'8'8CCCDDIGb!WGb!WGwd+++!$	22 E ENUE%Zed!!**466
;;;;;;<<<
V%r2h101BL0@,/7D D D 	E 	E 	E 	E qt4$OOOOOOr'   )#__doc__
contextlibr   r   platformmatplotlib.pyplotpyplotrn   matplotlib.testing.decoratorsr   matplotlib.axesr   matplotlib.transformsr   matplotlib.axisaxisrF   matplotlib.spinesrC   rN   matplotlib.patchespatchesr   matplotlib.projectionsr   XTickr   XAxisr.   rO   r6   r@   rw   machiner   r4   r'   r"   <module>r      s.    !                      : : : : : :             * * * * * *       # # # # # # # # # # # # 6 6 6 6 6 6
3 3 3 3 3 3 3 34@ @ @ @ @ @ @ @- - - - - - - -9D 9D 9D 9D 9D 9D 9D 9D|  I    ;-T222  32 <.d/x/11W<<ee!E E EP PE EP P Pr'   