
    %Wh6                        d dl Z d dl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mZ d dlmZ ej$                  j'                  d      gZd2dZ e	dgd	
      d        Z e	dgd	
      d        Z e	dgd	
      d        Z e	dgd	
      d        Z e	dgd	
      d        Z e	dgd	
      d        Z e	dgd	
      d        Z e	dgd	d      d        Z e	dgd	
      d        Zd Zd3dZ d  Z!d! Z"ej$                  jG                  d"d#d$g      d%        Z$d& Z%d' Z&d( Z'd) Z(d* Z)ej$                  jU                  d+      d,        Z+d- Z,d. Z-d/ Z.d0 Z/d1 Z0y)4    N)assert_array_equal)image_comparison)AnchoredOffsetboxDrawingArea)	Rectangletext_placeholdersc                     | j                  ddg       | j                  d       | j                  d|       | j                  d|       | j	                  d|       y )	N         nbinsx-labelfontsizey-labelTitle)plotlocator_params
set_xlabel
set_ylabel	set_title)axr   s     [/var/www/html/jupyter_env/lib/python3.12/site-packages/matplotlib/tests/test_tightlayout.pyexample_plotr      sR    GGQFOAMM)hM/MM)hM/LL8L,    tight_layout1mpl20)stylec                  t    t        j                         \  } }t        |d       t        j                          y)z'Test tight_layout for a single subplot.   r   Npltsubplotsr   tight_layoutfigr   s     r   test_tight_layout1r(      s)     llnGCb!r   tight_layout2c                      t        j                  dd      \  } \  \  }}\  }}t        |       t        |       t        |       t        |       t        j                          y)(Test tight_layout for multiple subplots.r   )nrowsncolsNr"   )r'   ax1ax2ax3ax4s        r   test_tight_layout2r2   #   sR     %(LLq$B!C	!*3jsCr   tight_layout3c                      t        j                  d      } t        j                  d      }t        j                  d      }t        |        t        |       t        |       t        j                          y)r+         z   N)r#   subplotr   r%   )r.   r/   r0   s      r   test_tight_layout3r9   .   sR     ++c
C
++c
C
++c
Cr   tight_layout4c                  B   t        j                  dd      } t        j                  ddd      }t        j                  dddd      }t        j                  ddd	      }t        |        t        |       t        |       t        |       t        j                          y
)z#Test tight_layout for subplot2grid.)r   r   r   r   )r   r
   r   )colspan)r
   r   r=   rowspan)r
   r   )r?   N)r#   subplot2gridr   r%   )r.   r/   r0   r1   s       r   test_tight_layout4rA   :   s     

66
*C


661
5C


661a
@C


661
5Cr   tight_layout5c                      t        j                         } t        j                  d      j	                  d      }| j                  |d       t        j                          y)zTest tight_layout for image.d   
   rF   none)interpolationN)r#   r8   nparangereshapeimshowr%   )r   arrs     r   test_tight_layout5rN   H   sC     
B
))C.
 
 
*CIIcI(r   tight_layout6c            
         t        j                         5  t        j                  dt               t	        j
                         } t        j                  j                  dd      }| j                  |d         }| j                  |d         }t        |       t        |       |j                  | g d       t        j                  j                  dd      }|D ]@  }| j                  |      }t        |       |j                  d       |j                  d       B j                  d	d
       |j                  | g dd       t        |j                  |j                        }t!        |j"                  |j"                        }|j                  | dd||j"                  z
  z   dd|j                  |z
  z
  g       |j                  | dd||j"                  z
  z   dd|j                  |z
  z
  gd       ddd       y# 1 sw Y   yxY w)zTest tight_layout for gridspec.ignorer   r
   r   )r   r         ?r
   rectr    r      r   )rR   r   r
   r
   g?)rT   h_padNrR   )warningscatch_warningssimplefilterUserWarningr#   figuremplgridspecGridSpecadd_subplotr   r%   r   r   mintopmaxbottom)	r'   gs1r.   r/   gs2ssr   rb   rd   s	            r   test_tight_layout6rh   Q   s    
	 	 	"  %h4jjlll##Aq)ooc!f%ooc!f%SS>2ll##Aq) 	B$BLLMM"		 	i"->>#''377#SZZ,D!vcjj/@*A$'cggck):$< 	=CfSZZ.?)@$(!swws{*;$=# 	 	%= %  %  %s   GG==Htight_layout7c                  D   d} t        j                         \  }}|j                  ddg       |j                  d       |j	                  d|        |j                  d|        |j                  d	d
|        |j                  dd|        t        j                          y )Nr!   r
   r   r   r   r   r   r   z
Left Titleleft)locr   zRight Titleright)r#   r$   r   r   r   r   r   r%   )r   r'   r   s      r   test_tight_layout7rn   {   s     HllnGCGGQFOAMM)hM/MM)hM/LL6HL=LLGhL?r   tight_layout8{Gzt?)r   tolc                      t        j                         } | j                  dd       | j                         }t	        |d       | j                          y)#Test automatic use of tight_layout.tight皙?)layoutpadr!   r   N)r#   r\   set_layout_enginer`   r   draw_without_renderingr&   s     r   test_tight_layout8rz      sD     **,Cc2		Bb! r   tight_layout9c                      t        j                  dd      \  } }|d   d   j                  d       t        j                          y )Nr   r
   F)r#   r$   set_visibler%   )faxarrs     r   test_tight_layout9r      s:     ||Aq!HAu	!HQKE"r   c                     t        j                         } | j                  d      }|j                  j	                  ddd       |j
                  j	                  ddd       |j                  j	                  ddddd	       |j
                  j	                  ddddd	       |j                  j                  d
gd       |j
                  j                  d
gd       | j                  d      }|j                  j	                  ddd       |j
                  j	                  ddd       | j                  d      }|j                  j	                  ddd       |j
                  j	                  ddd       | j                  d      }|j                  j	                  ddd       |j
                  j	                  ddd       t        j                          ddgddggddgddggddgddggddgddggg}t        | j                        D ]D  \  }}t        t        j                  |j                         j                         d      ||          F y)rs   r5   out   r   )tickdirlengthwidth    Tminor)r   r   r   tick1Onwhichr   )r      inr6   inout   gZd;O?g\(\?gʡE?gB`"?gd;O?g/$?gDl?gm?N)r#   r\   r`   xaxisset_tick_paramsyaxis	set_ticksr%   	enumerateaxesr   rI   roundget_position
get_points)r'   r   expectednns       r   test_outward_ticksr      s$   
**,C		BHHU2Q?HHU2Q?HHb4w  HHHb4w  HHHs$'HHs$'		BHHT"A>HHT"A>		BHHWRqAHHWRqA		BHHU2Q?HHU2Q? %(
%(
%(
%(	H CHH% )B288BOO$5$@$@$BAF#B<	))r   c           
         |d|z   }}| | f| df| |fd|f||f|df|| fd| fg}|D ]^  }t        ||      }t        d|||ddd      }	|j                  |	       t        d|d	d|| j                  d	
      }
| j                  |
       ` y)z&
    Surround ax with OffsetBoxes
    r
   rR   r<   Noner   F)r   height	facecolor	edgecolor	linewidthantialiasedcenterg        )rl   childrw   frameonbbox_to_anchorbbox_transform	borderpadN)r   r   
add_artistr   	transAxes)r   sizemargincolormmpanchor_pointspointda
backgroundanchored_boxs              r   add_offsetboxesr      s     AfHrAb1"XBx1"b"XBx"b1"XQBx)M  $t$vT&*).)/)*+02
 	j!( << 	l#%$r   c                     dxg dddgxfd}  | d      \  }}|j                           | d      \  }}|j                          t        |j                  |j                        D ]  \  }}|j                         }|j                         }|j                  |j                  kD  sJ |j
                  |j
                  k  sJ |j                  |j                  kD  sJ |j                  |j                  k  rJ  g }	|j                  D ]c  }|j                         D ]N  }
t        |
t              s|
j                         }|	D ]  }|j                  |      sJ  |	j                  |       P e  | d      \  }}|j                  D ]9  }|j                         D ]$  }
t        |
t              s|
j                  d       & ; |j                          t        |j                  |j                        D ]M  \  }}|j                         }|j                         }t        |j!                         |j!                                O y )Nr   )redbluegreenyellowr   r
   c                     t        j                        \  }}t        |j                        D ]*  \  }}|j	                  	|       | st        |d|       , ||fS )N)r      )r#   r$   zipflatr   r   )

with_boxesr'   axsr   r   colorscolsrowsxys
        r   	_subplotsz0test_tight_layout_offsetboxes.<locals>._subplots   sa    <<d+SSXXv. 	5IBGGAqG&Be4	5 Cxr   FT)r%   r   r   r   x0x1y0y1get_children
isinstancer   get_window_extentoverlapsappendr}   r   r   )r   fig0axs0fig1axs1ax0r.   bbox0bbox1bboxesr   bbox
other_bboxfig2axs2r   r/   bbox2r   r   r   r   r   s                     @@@@@r   test_tight_layout_offsetboxesr      s1     OD4/FFNA  5!JD$ 4JD$ 		499- #S  "  "xx%(("""xx%(("""xx%(("""xx%(("""# Fyy  %%' 	 Ee%67**,D$ 5
==4445MM$	   4JD$ii )__& 	)E%!23!!%(	)) 	 		499- CS  "  "5++-u/?/?/ABCr   c                  L    t        j                         } | j                          y)zETest that tight layout doesn't cause an error when there are no Axes.N)r#   gcfr%   )r'   s    r   test_empty_layoutr   $  s    
'')Cr   labelxlabelylabelc                 ^    t        j                  d      \  }} |j                  di | di y)z8Test that no warning emitted when xlabel/ylabel too big.r   r   figsizedaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaN )r#   r$   set)r   r'   r   s      r   test_verybig_decoratorsr   *  s,     ll6*GC
BFF eY r   c                      t        j                  ddd      \  } }|d   j                  d       |d   j                  d       y)	z+Test that doesn't warn when xlabel too big.r
   r   r   r   r   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbN)r#   r$   r   r'   r   s     r   test_big_decorators_horizontalr   1  <    ||Aq&1HCFhFhr   c                      t        j                  ddd      \  } }|d   j                  d       |d   j                  d       y)	z+Test that doesn't warn when ylabel too big.r   r
   r   r   r   aaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbN)r#   r$   r   r   s     r   test_big_decorators_verticalr   8  r   r   c                      t        j                  dd       t        j                  dddd       t        j                  t              5  t        j
                          d d d        y # 1 sw Y   y xY w)N)      r<   )r   r   )r   r   r   r   r>   )r#   r@   pytestwarnsr[   r%   r   r   r   test_badsubplotgridr   ?  sS    VV$VVQ:	k	"   s   	A''A0c                  4   t        j                  d      \  } }|j                  ddg       |j                  ddg       |j	                  dddd	       |j                         }t        j                  t              5  t        j                          |j                         }|j                  |j                  k(  sJ 	 d d d        t        j                  t              5  t        j                  g d
       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)NTr%   r   r
   zBIG LONG STRING)g      ?r   )g      %@g      ?F)xyxytextannotation_clip)r   r   皙?r   rS   )r#   r$   set_xlimset_ylimannotater   r   r   r[   r%   r   )r'   r   p1p2s       r   test_collapsedr  H  s    
 ll-GCKKAKKAKK!i %  '		B	k	" $__xx288###$
 
k	" 0./0 0$ $
0 0s   >A D DDDc                     t        j                  d      \  } }| j                  d      }|j                  d      }| j                  j                          |j                         j                  |j                         j                  kD  sJ y )NTr   foobar)	r#   r$   suptitler   canvasdrawr   r   r   )r'   r   stts       r   test_suptitler  ]  sj    ll-GC	e	B
UAJJOO!$$q':':'<'?'????r   pdfc                     t         j                  j                  j                  fd}| j	                  t         j                  j                  d|       t        j                         \  }}|j                          y )Nc                 ~    t        | t        j                  j                  j                        sJ  | g|i | y )N)r   r]   backendsbackend_pdfRendererPdf)selfargskwargsunpatched_inits      r   __init__z'test_non_agg_renderer.<locals>.__init__i  s7     $ 8 8 D DEEEt-d-f-r   r  )r]   backend_basesRendererBaser  setattrr#   r$   r%   )monkeypatchrecwarnr  r'   r   r  s        @r   test_non_agg_rendererr   e  sZ    &&33<<N. ))66
HMllnGCr   c                     t        j                  dd      \  } }|d   j                  ddgddgddg      }|d   j                         }| j	                  |j
                  dz   |j                  d|j                  g      }| j                  ||       t        j                  t        d	
      5  | j                          d d d        y # 1 sw Y   y xY w)Nr
   r   r   r   )crp   gQ?)caxzThis figure includes Axesmatch)r#   r$   scatterr   add_axesr   r   r   colorbarr   r   r[   r%   )r'   r   ptsax_rectr#  s        r   test_manual_colorbarr+  t  s    Q"IC
q'//1a&1a&QF/
3C1g""$G
,,	e	WZZ?C LL#L	k)D	E   s   .CCc                     t        j                  d      j                  d      } t        j                  d      }|j                  dd      }|j                  dd	      }|j                  d
d      }|||fD ]  }|j                  d       |j                  | d d df         \  }|j                  |       }|j                         sJ |j                         sJ t        ddd|j                        }|j                  |       |j                  |j                         |j                                |j                         rJ |j                         sJ  y )NrD   rE   )   r   r      rectilinear)
projection   	mollweide   polarFr   r<   rR   )	transform)rI   rJ   rK   r#   r\   r`   gridr   pcolor_fully_clipped_to_axesr   r   set_clip_pathget_pathget_transform)	rM   r'   r.   r/   r0   r   hr   rT   s	            r   test_clipped_to_axesr=    s*    ))C.
 
 
*C
**V
$C
//#-/
8C
//#+/
6C
//#'/
2CCo .
WWSAYIIcN'')))'')))cR\\B		););)=>++---++---.r   c                      t        j                         \  } }t        j                  t        d      5  | j                  ddi       d d d        | j                          y # 1 sw Y   xY w)Nzwill be deprecatedr$  rw   333333?)r#   r$   r   r   PendingDeprecationWarningset_tight_layoutry   r&   s     r   test_tight_padsrB    sX    llnGC	/0
2 ,eT]+,  , ,s   A  A)c                  Z    t        j                  ddi      \  } }| j                          y )Nrw   r?  r   )r#   r$   ry   r&   s     r   test_tight_kwargsrD    s$    ll6GC r   c                  b   t        j                         \  } }t        j                  t              5  | j                  d       | j                         sJ | j                  d       | j                         rJ | j                  d       | j                         sJ 	 d d d        y # 1 sw Y   y xY w)NTF)r#   r$   r   r   r@  rA  get_tight_layoutr&   s     r   test_tight_togglerG    s    llnGC	/	0 &T"##%%%U#'')))T"##%%%& & &s   A*B%%B.)rV   )rF   ru   black)1rX   numpyrI   numpy.testingr   r   
matplotlibr]   matplotlib.testing.decoratorsr   matplotlib.pyplotpyplotr#   matplotlib.offsetboxr   r   matplotlib.patchesr   markusefixtures
pytestmarkr   r(   r2   r9   rA   rN   rh   rn   rz   r   r   r   r   r   parametrizer   r   r   r   r  r  backendr   r+  r=  rB  rD  rG  r   r   r   <module>rV     s     ,   :  ? ( KK/0

- ?#73 4 ?#73 4 ?#73 4 ?#73
 4
 ?#73 4 ?#73&% 4&%R ?#73
 4
 ?#7>! ?! ?#73 4 )F$:ECP 8X"67! 8!  0*@ U 
.0!!
&r   