
    h                        S r SSKJr  SSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr   " S S\R2                  5      r " S	 S
\R6                  5      r " S S\R:                  5      r " S S\5      r\" \5        \	" S/SS9S 5       r \	" S/S\RB                  " 5       S:X  a  SOSS9S 5       r"g)z)
Testing that skewed Axes properly work.
    )	ExitStackN)image_comparison)Axes)register_projectionc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	SkewXTick   c                   > [        5        nU R                  U R                  U R                  U R                  U R
                  4 H-  nUR                  UR                  UR                  5       5        M/     [        R                  " U R                  R                  U R                  5       5      n[        R                  " U R                  R                  U R                  5       5      nU R                  R                  U R                  R                  5       =(       a    U5        U R                  R                  U R                  R                  5       =(       a    U5        U R                  R                  U R                  R                  5       =(       a    U5        U R
                  R                  U R
                  R                  5       =(       a    U5        [        TU ]A  U5        S S S 5        g ! , (       d  f       g = f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         L/var/www/html/env/lib/python3.13/site-packages/matplotlib/tests/test_skew.pyr   SkewXTick.draw   sQ   [E==$..$..;;5v1163E3E3GH5 %66		$$dlln6K$66		$$dlln6KNN&&**,<>KK##'')9k;NN&&**,<>KK##'')9k;GL"! [[s   GG11
G?c                 J    U R                   R                  R                  5       $ r   )r   xaxisget_view_intervalr   s    r#   r'   SkewXTick.get_view_interval*   s    yy0022     )__name__
__module____qualname____firstlineno__r   r'   __static_attributes____classcell__r"   s   @r#   r   r      s    #&3 3r*   r   c                        \ rS rSrS rS rSrg)	SkewXAxis0   c                 ,    [        U R                  S US9$ )N)major)r   r   )r   r7   s     r#   	_get_tickSkewXAxis._get_tick1   s    D66r*   c                 f    U R                   R                  S   U R                   R                  S   4$ )Nr      )r   r   r   r(   s    r#   r'   SkewXAxis.get_view_interval4   s+    yy##A&		(<(<Q(???r*   r+   N)r,   r-   r.   r/   r8   r'   r0   r+   r*   r#   r4   r4   0   s    7@r*   r4   c                       \ rS rSrS rSrg)	SkewSpine;   c                     U R                   R                  nU R                  S:X  a  U R                  R                  US S 2S4'   g U R                  R
                  US S 2S4'   g )Ntopr   )_pathvertices
spine_typer   r   r   r   ptss     r#   _adjust_locationSkewSpine._adjust_location<   sK    jj!!??e#		,,C1I		,,C1Ir*   r+   N)r,   r-   r.   r/   rG   r0   r+   r*   r#   r>   r>   ;   s    -r*   r>   c                   X   ^  \ rS rSrSrS rS rU 4S jr\S 5       r	\S 5       r
SrU =r$ )		SkewXAxesG   skewxc                    [        U 5      U l        U R                  R                  R	                  U R                  5        U R                  R
                  R	                  U R                  5        [        R                  " U 5      U l        U R                  R                  R	                  U R                  5        U R                  R                  R	                  U R                  5        g r   )r4   r&   spinesrA   register_axisbottommaxisYAxisyaxisleftrightr(   s    r#   
_init_axisSkewXAxes._init_axisL   s    t_
%%djj1((4[[&
&&tzz2''

3r*   c                     [         R                  U S5      [        R                  R                  U S5      [        R                  R                  U S5      [        R                  R                  U S5      S.nU$ )NrA   rP   rT   rU   )rA   rP   rT   rU   )r>   linear_spinemspinesSpine)r   rN   s     r#   _gen_axes_spinesSkewXAxes._gen_axes_spinesU   s]    "//e<#MM66tXF!--44T6B"==55dGDF r*   c                   > Sn[         TU ]  5         U R                  U R                  [        R
                  " 5       R                  US5      -   -   U l        U R                  U R                  -   U l	        [        R                  " U R                  U R                  -   [        R                  " 5       5      [        R
                  " 5       R                  US5      -   U R                  -   U l        g)zi
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#   r`   !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    U R                   R                  R                  $ r   )r   viewLim	intervalxr(   s    r#   r   SkewXAxes.lower_xlimy   s    yy  ***r*   c                 r    SS/SS//nU R                   R                  5       R                  U5      S S 2S4   $ )Ng        g      ?r   )re   inverted	transformrE   s     r#   r   SkewXAxes.upper_xlim}   s=    Bx"b"##,,.88=adCCr*   )rj   rg   re   r&   rS   )r,   r-   r.   r/   namerV   r\   r`   propertyr   r   r0   r1   r2   s   @r#   rJ   rJ   G   sD     D4E: + + D Dr*   rJ   	skew_axesT)remove_textc                      [         R                  " 5       n U R                  SSSSS9nUR                  SS5        UR	                  SS5        UR                  S5        UR                  SSS	9  g )
Nr;   rL   )
projectioni2   Tr   b)color)pltfigureadd_subplotset_xlimset_ylimgridaxvline)figaxs     r#   test_set_line_coll_dash_imager      s\    
**,C	AqW	5BKKRKKCGGDM JJqJr*   
skew_rectsx86_64g;On?)rx   tolc                  b   [         R                  " SSSSSS9u  pUR                  n[        [        R
                  " / SQSS95      nUS   R                  S	S
/5        US   R                  S	S
/5        US   R                  SSS9  [        X5       H  u  nu  pESU-  SU-  pv[        R                  " 5       R                  Xg5      nUR                  SU SU S35        UR                  [        R                   " SS/SSXR"                  -   SSS95        M     [         R$                  " SSSSSS9  g )N   T)   r   )sharexshareyfigsize)r   r;         )repeatr   r   r   equal)share-   zSkew of z
 in X and z in Yr   g      ?coral)rs   alpha	facecolorg{Gz?gGz?)wspacerT   rU   rP   rA   )r~   subplotsflatlist	itertoolsproductr   r   
set_aspectzipr   rc   rd   	set_title	add_patchmpatch	Rectanglerg   subplots_adjust)	fixr   	rotationsr   xrotsyrotsxdegydegts	            r#   test_skew_rectangler      s%    Q$tVLIC99DY&&'8CDIGb!WGb!WGwd+!$2NU%Zed!**46
xvZvU;<
V%%r2h101LL0@,/7D 	E 3 qt4$Or*   )#__doc__
contextlibr   r   platformmatplotlib.pyplotpyplotr~   matplotlib.testing.decoratorsr   matplotlib.axesr   matplotlib.transformsr   matplotlib.axisaxisrQ   matplotlib.spinesrN   rZ   matplotlib.patchespatchesr   matplotlib.projectionsr   XTickr   XAxisr4   r[   r>   rJ   r   machiner   r+   r*   r#   <module>r      s    !    :   *  # # 6
3 34@ @- -9D 9D| I  ;-T2 3 <.d#++-9auFPFPr*   