
    (?e1                        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 d8dZ e	dgd	
          d             Z e	dg          d             Z e	dg          d             Z e	dgdd          d             Z e	dg          d             Z e	dg          d             Z e	dgd	
          d             Z e	dg          d             Z e	dg          d             Zd Zd9d#Z e	d$d%g          d&             Zd' Zej         !                    d(d)d*g          d+             Z"d, Z#d- Z$d. Z%d/ Z&d0 Z'ej         (                    d1          d2             Z)d3 Z*d4 Z+d5 Z,d6 Z-d7 Z.dS ):    N)assert_array_equal)image_comparison)AnchoredOffsetboxDrawingArea)	Rectangle   c                     |                      ddg           |                     d           |                     d|           |                     d|           |                     d|           d S )	N         nbinsx-labelfontsizey-labelTitle)plotlocator_params
set_xlabel
set_ylabel	set_title)axr   s     Alib/python3.11/site-packages/matplotlib/tests/test_tightlayout.pyexample_plotr      st    GGQFOOOAMM)hM///MM)hM///LL8L,,,,,    tight_layout1gffffff?)tolc                  z    t          j                    \  } }t          |d           t          j                     dS )z'Test tight_layout for a single subplot.   r   Npltsubplotsr   tight_layoutfigr   s     r   test_tight_layout1r'      s;     lnnGCb!!!!r   tight_layout2c                      t          j        dd          \  } \  \  }}\  }}t          |           t          |           t          |           t          |           t          j                     dS )(Test tight_layout for multiple subplots.r   )nrowsncolsNr!   )r&   ax1ax2ax3ax4s        r   test_tight_layout2r1      sw     %(Lq$B$B$B!C	!*3jsCr   tight_layout3c                      t          j        d          } t          j        d          }t          j        d          }t          |            t          |           t          |           t          j                     dS )r*         z   N)r"   subplotr   r$   )r-   r.   r/   s      r   test_tight_layout3r8   )   sp     +c

C
+c

C
+c

Cr   tight_layout4)z2.5.5z2.6.1Q?)freetype_versionr   c                  Z   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                     d
S )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.   r/   r0   s       r   test_tight_layout4rB   5   s     
66
*
*C

661
5
5
5C

661a
@
@
@C

661
5
5
5Cr   tight_layout5c                      t          j                    } t          j        d                              d          }|                     |d           t          j                     dS )zTest tight_layout for image.d   
   rG   none)interpolationN)r"   r7   nparangereshapeimshowr$   )r   arrs     r   test_tight_layout5rO   D   sU     
B
)C..
 
 
*
*CIIcI(((r   tight_layout6c            
      H   t          j                    5  t          j        dt                     t	          j                    } t          j                            dd          }| 	                    |d                   }| 	                    |d                   }t          |           t          |           |                    | g d           t          j                            dd          }|D ]P}| 	                    |          }t          |           |                    d           |                    d           Q|                    d	d
           |                    | g dd           t          |j        |j                  }t!          |j        |j                  }|                    | dd||j        z
  z   dd|j        |z
  z
  g           |                    | dd||j        z
  z   dd|j        |z
  z
  gd           ddd           dS # 1 swxY w Y   dS )zTest tight_layout for gridspec.ignorer   r
   r   )r   r         ?r
   rectr    r   r   r   )rS   r   r
   r
   g?)rU   h_padNrS   )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   M   s_    
	 	"	"  %  %h444jlll##Aq))ooc!f%%ooc!f%%SS>>>222l##Aq)) 	 	B$$BLLMM"
i"--->>>>>>#'37##SZ,,D!vcj/@*A$'cgck):$< 	= 	= 	=CfSZ.?)@$(!sws{*;$=# 	 	% 	% 	%= %  %  %  %  %  %  %  %  %  %  %  %  %  %  %  %  %  %s   G6HHHtight_layout7c                  r   d} t          j                    \  }}|                    ddg           |                    d           |                    d|            |                    d|            |                    d	d
|            |                    dd|            t          j                     d S )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   w   s     HlnnGCGGQFOOOAMM)hM///MM)hM///LL6HL===LLGhL???r   tight_layout8c                      t          j                    } |                     dd           |                                 }t	          |d           |                                  dS )#Test automatic use of tight_layout.tight皙?)layoutpadr    r   N)r"   r\   set_layout_enginer`   r   draw_without_renderingr%   s     r   test_tight_layout8rx      sb     *,,Cc222			Bb!!!!     r   tight_layout9c                      t          j        dd          \  } }|d         d                             d           t          j                     d S )Nr   r
   F)r"   r#   set_visibler$   )faxarrs     r   test_tight_layout9r~      sJ     |Aq!!HAu	!HQKE"""r   c                     t          j                    } |                     d          }|j                            ddd           |j                            ddd           |j                            ddddd	           |j                            ddddd	           |j                            d
gd           |j                            d
gd           |                     d          }|j                            ddd           |j                            ddd           |                     d          }|j                            ddd           |j                            ddd           |                     d          }|j                            ddd           |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 ]R\  }}t          t          j        |                                                                d          ||                    SdS )rq   r4   out   r   )tickdirlengthwidth    Tminor)r   r   r   tick1Onwhichr   )r      inr5   inout   gK?gCl?gʡE?gB`"?gI+?g/$?gQ?gm?N)r"   r\   r`   xaxisset_tick_paramsyaxis	set_ticksr$   	enumerateaxesr   rJ   roundget_position
get_points)r&   r   ansnns       r   test_outward_ticksr      s   
*,,C			BHU2Q???HU2Q???Hb4w  H H HHb4w  H H HHs$'''Hs$'''			BHT"A>>>HT"A>>>			BHWRqAAAHWRqAAA			BHU2Q???HU2Q??? ENUEN+ENUEN+ENUEN+ENUEN+-C CH%% $ $B28BOO$5$5$@$@$B$BAFFr7	$ 	$ 	$ 	$$ $r   rG   rs   blackc           
      <   |d|z   }}| | f| df| |f|dfd|f||fd| f|| fd| fg	}|D ]m}t          ||          }t          d|||ddd          }	|                    |	           t          d|d	d|| j        d	
          }
|                     |
           n|
S )z&
    Surround ax with OffsetBoxes
    r
   rS   r=   Noner   F)r   height	facecolor	edgecolor	linewidthantialiasedcenterg        )rl   childru   frameonbbox_to_anchorbbox_transform	borderpad)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"qb3M  $ $t$$vT&*).)/)*+02 2 2
 	j!!!( <   	l####r   tight_layout_offsetboxes1tight_layout_offsetboxes2c                  V   dxg dddgxfd}  |             }t          j                      |             }|dz
  d          D ]C}|                                D ],}t          |t                    r|                    d           -Dt          j                     d S )Nr   )redbluegreenyellowr   r
   c                      t          j                  \  } }|j        }t          |          D ]/\  }}|                    |           t          |d|           0|S )N)r      )r"   r#   flatzipr   r   )	_axsr   r   colorscolsrowsxys	       r   	_subplotsz0test_tight_layout_offsetboxes.<locals>._subplots   sq    dD))3hS&)) 	1 	1IBGGAqG&&&B%00000
r   F)r"   r$   get_children
isinstancer   r{   )	r   r   r   r   r   r   r   r   r   s	       @@@@@r   test_tight_layout_offsetboxesr      s     OD4///FFNA         )++C )++C46<4<  ) )__&& 	) 	)E%!233 )!!%(((	) r   c                  T    t          j                    } |                                  dS )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    t          j        d          \  }} |j        di | di dS )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=     l6***GC
BF  eY     r   c                      t          j        ddd          \  } }|d                             d           |d                             d           dS )	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     R    |Aq&111HCFhFhr   c                      t          j        ddd          \  } }|d                             d           |d                             d           dS )	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     r   r   c                      t          j        dd           t          j        dddd           t          j        t                    5  t          j                     d d d            d S # 1 swxY w Y   d S )N)      r=   )r   r   )r   r   r   r   r?   )r"   rA   pytestwarnsr[   r$   r   r   r   test_badsubplotgridr     s    VV$$$VVQ::::	k	"	"                   s   A((A,/A,c                  T   t          j        d          \  } }|                    ddg           |                    ddg           |                    dddd	           |                                }t          j        t                    5  t          j	                     |                                }|j
        |j
        k    sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          j	        g d
           d d d            d S # 1 swxY w Y   d S )NTr$   r   r
   zBIG LONG STRING)g      ?r   )g      %@g      ?F)xyxytextannotation_clip)r   r   皙?r   rT   )r"   r#   set_xlimset_ylimannotater   r   r   r[   r$   r   )r&   r   p1p2s       r   test_collapsedr   #  s   
 l---GCKKAKKAKK!i %  ' ' '			B	k	"	" $ $__x28#####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 
k	"	" 0 0...////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s$   :CCC8DD!$D!c                  (   t          j        d          \  } }|                     d          }|                    d          }| j                                         |                                j        |                                j        k    sJ d S )NTr   foobar)	r"   r#   suptitler   canvasdrawget_window_extenty0y1)r&   r   stts       r   test_suptitler   8  s    l---GC	e		B
UAJOO!!$q':':'<'<'???????r   pdfc                     t           j        j        j        fd}|                     t           j        j        d|           t          j                    \  }}|                                 d S )Nc                 l    t          | t          j        j        j                  sJ  | g|R i | d S )N)r   r]   backendsbackend_pdfRendererPdf)selfargskwargsunpatched_inits      r   __init__z'test_non_agg_renderer.<locals>.__init__D  sI     $ 8 DEE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  @  sq    &3<N. . . . . )6
HMMMlnnGCr   c                     t          j        dd          \  } }|d                             ddgddgddg          }|d                                         }|                     |j        dz   |j        d|j        g          }|                     ||           t          j
        t          d	
          5  |                                  d d d            d S # 1 swxY w Y   d S )Nr
   r   r   r   )cg{Gzt?r:   )caxzThis figure includes Axesmatch)r"   r#   scatterr   add_axesx1r   r   colorbarr   r   r[   r$   )r&   r   ptsax_rectr  s        r   test_manual_colorbarr  O  s!   Q""IC
q'//1a&1a&QF/
3
3C1g""$$G
,,	e	WZ? C LL#L	k)D	E	E	E                   s   4CCCc                  0   t          j        d                              d          } t          j        d          }|                    dd          }|                    dd	          }|                    d
d          }|||fD ]}|                    d           |                    | d d df                   \  }|                    |           }|	                                sJ |	                                sJ t          ddd|j                  }|                    |           |                    |                                |                                           |	                                rJ |	                                rJ d S )NrE   rF   )   r   r      rectilinear)
projection   	mollweide   polarFr   r=   rS   )	transform)rJ   rK   rL   r"   r\   r`   gridr   pcolor_fully_clipped_to_axesr   r   set_clip_pathget_pathget_transform)	rN   r&   r-   r.   r/   r   hr   rU   s	            r   test_clipped_to_axesr.  \  s    )C..
 
 
*
*C
*V
$
$
$C
//#-/
8
8C
//#+/
6
6C
//#'/
2
2CCo . .
WWSAYIIcNN'')))))'')))))cR\BBB		););)=)=>>>++-----++------. .r   c                      t          j                    \  } }t          j        t          d          5  |                     ddi           d d d            n# 1 swxY w Y   |                                  d S )Nzwill be deprecatedr  ru   333333?)r"   r#   r   r   PendingDeprecationWarningset_tight_layoutrw   r%   s     r   test_tight_padsr3  t  s    lnnGC	/0
2 
2 
2 , ,eT]+++, , , , , , , , , , , , , , ,      s   AAAc                  b    t          j        ddi          \  } }|                                  d S )Nru   r0  r   )r"   r#   rw   r%   s     r   test_tight_kwargsr5  |  s4    l666GC     r   c                     t          j                    \  } }t          j        t                    5  |                     d           |                                 sJ |                     d           |                                 rJ |                     d           |                                 sJ 	 d d d            d S # 1 swxY w Y   d S )NTF)r"   r#   r   r   r1  r2  get_tight_layoutr%   s     r   test_tight_toggler8    s   lnnGC	/	0	0 & &T"""##%%%%%U###'')))))T"""##%%%%%%& & & & & & & & & & & & & & & & & &s   BC  CC)r   )rG   rs   r   )/rX   numpyrJ   numpy.testingr   r   
matplotlibr]   matplotlib.testing.decoratorsr   matplotlib.pyplotpyplotr"   matplotlib.offsetboxr   r   matplotlib.patchesr   r   r'   r1   r8   rB   rO   rh   rn   rx   r~   r   r   r   r   markparametrizer   r   r   r   r   r   backendr  r  r.  r3  r5  r8  r   r   r   <module>rD     s        , , , , , ,      : : : : : :       ? ? ? ? ? ? ? ? ( ( ( ( ( (- - - - ?#---  .- ?#$$  %$ ?#$$  %$ ?#6H  
 
 
 ?#$$  %$ ?#$$&% &% %$&%R ?#---
 
 .-
 ?#$$! ! %$! ?#$$  %$$ $ $B   < .0KLMM$ $ NM$N   8X"677! ! 87!            0 0 0*@ @ @ U  
 
 
. . .0! ! !! ! !
& & & & &r   