
    EVfo                     d   d Z ddlm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j0                        Z G d	 d
ej4                        Z G d dej8                        Z G d de
      Z ee        edgd      d        Z edgd      d        Z y)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                  |j                  |j                                . t        j                  | j                  j                  | j                               }t        j                  | j                  j                  | j                               }| j                  j                  | j                  j                         xr |       | j                  j                  | j                  j                         xr |       | j                  j                  | j                  j                         xr |       | j
                  j                  | j
                  j                         xr |       t        | A  |       d d d        y # 1 sw Y   y xY w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         c/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/matplotlib/tests/test_skew.pyr   zSkewXTick.draw   sc   [ 	#E==$..$..;;5 Iv1163E3E3GHI %66		$$dlln6K$66		$$dlln6KNN&&**,<>KK##'')9k;NN&&**,<>KK##'')9k;GL"!	# 	# 	#s   GGG"c                 J    | j                   j                  j                         S r
   )r   xaxisget_view_intervalr   s    r"   r%   zSkewXTick.get_view_interval)   s    yy0022    )__name__
__module____qualname__r   r%   __classcell__r!   s   @r"   r   r      s    #&3r'   r   c                       e Zd Zd Zd Zy)	SkewXAxisc                 2    t        | j                  d |      S )N)major)r   r   )r   r0   s     r"   	_get_tickzSkewXAxis._get_tick0   s    D66r'   c                 f    | j                   j                  d   | j                   j                  d   fS )Nr      )r   r   r   r&   s    r"   r%   zSkewXAxis.get_view_interval3   s+    yy##A&		(<(<Q(???r'   N)r(   r)   r*   r1   r%    r'   r"   r.   r.   /   s    7@r'   r.   c                       e Zd Zd Zy)	SkewSpinec                     | j                   j                  }| j                  dk(  r| j                  j                  |d d df<   y | j                  j
                  |d d df<   y )Ntopr   )_pathvertices
spine_typer   r   r   r   ptss     r"   _adjust_locationzSkewSpine._adjust_location;   sK    jj!!??e#		,,C1I		,,C1Ir'   N)r(   r)   r*   r>   r4   r'   r"   r6   r6   :   s    -r'   r6   c                   N     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
                  j	                  | j                         t        j                  |       | _        | j                  j                  j	                  | j                         | j                  j                  j	                  | j                         y r
   )r.   r$   spinesr8   register_axisbottommaxisYAxisyaxisleftrightr&   s    r"   
_init_axiszSkewXAxes._init_axisK   s    t_
%%djj1((4[[&
&&tzz2''

3r'   c                     t         j                  | d      t        j                  j                  | d      t        j                  j                  | d      t        j                  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_spinesT   s]    "//e<#MM66tXF!--44T6B"==55dGDF r'   c                    d}t         |           | j                  | j                  t	        j
                         j                  |d      z   z   | _        | j                  | j                  z   | _	        t	        j                  | j                  | j                  z   t	        j                               t	        j
                         j                  |d      z   | j                  z   | _        y)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!1!+!4!4!6!?!?Q!G"H!I
 --> ",!E!EOOd...((*", !**32"3 7;nn!Er'   c                 B    | j                   j                  j                  S r
   )r   viewLim	intervalxr&   s    r"   r   zSkewXAxes.lower_xlimx   s    yy  ***r'   c                 r    ddgddgg}| j                   j                         j                  |      d d df   S )Ng        g      ?r   )rX   inverted	transformr<   s     r"   r   zSkewXAxes.upper_xlim|   s=    Bx"b"##,,.88=adCCr'   )r(   r)   r*   namerK   rP   rS   propertyr   r   r+   r,   s   @r"   r@   r@   F   sD     D4E: + + D Dr'   r@   	skew_axesT)remove_textc                      t        j                         } | j                  dddd      }|j                  dd       |j	                  dd       |j                  d       |j                  dd	       y )
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	5BKKRKKCGGDM JJqJr'   
skew_rectsc                  ~   t        j                  ddddd      \  } }|j                  }t        t	        j
                  g dd            }|d   j                  d	d
g       |d   j                  d	d
g       |d   j                  dd       t        ||      D ]  \  }\  }}d|z  d|z  }}t        j                         j                  ||      }|j                  d| d| d       |j                  t        j                   ddgdd||j"                  z   dd              t        j$                  ddddd       y )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      s8    Q$tVLIC99DY&&'8CDIGb!WGb!WGwd+!$	2 ENUE%Zed!**46
xvZvU;<
V%%r2h101BLL0@,/7D 	EE qt4$Or'   )!__doc__
contextlibr   r   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   r   r4   r'   r"   <module>r      s    !   :   *  # # 6
3 34@ @- -9D 9D| I  ;-T2 3 <.d3P 4Pr'   