rL i6ddlZddlZddlmZddlZddlZddlm Z ddl m Z ddl mZmZddlmZej$j'dgZd2dZe dgd d Ze d gd d Ze dgd dZe dgd dZe dgd dZe dgd dZe dgd dZe dgd ddZe dgd dZdZd3dZ d Z!d!Z"ej$jGd"d#d$gd%Z$d&Z%d'Z&d(Z'd)Z(d*Z)ej$jUd+d,Z+d-Z,d.Z-d/Z.d0Z/d1Z0y)4N)assert_array_equal)image_comparison)AnchoredOffsetbox DrawingArea) Rectangletext_placeholdersc|jddg|jd|jd||jd||j d|y) Nnbinsx-labelfontsizey-labelTitle)plotlocator_params set_xlabel set_ylabel set_title)axrs g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_tightlayout.py example_plotrsRGGQFOAMM)hM/MM)hM/LL8L, tight_layout1mpl20)stylecttj\}}t|dtjy)z'Test tight_layout for a single subplot.rNpltsubplotsr tight_layoutfigrs rtest_tight_layout1r(s)llnGCb!r tight_layout2ctjdd\}\\}}\}}t|t|t|t|tjy)(Test tight_layout for multiple subplots.r )nrowsncolsNr")r'ax1ax2ax3ax4s rtest_tight_layout2r2#sR%(LLq$B!C !*3jsCr tight_layout3ctjd}tjd}tjd}t|t|t|tjy)r+zN)r#subplotrr%)r.r/r0s rtest_tight_layout3r9.sR ++c C ++c C ++c Cr tight_layout4cBtjdd}tjddd}tjdddd}tjddd }t|t|t|t|tjy ) z#Test tight_layout for subplot2grid.)r r rr)rr r )colspan)r rr=rowspan)r r )r?N)r# subplot2gridrr%)r.r/r0r1s rtest_tight_layout4rA:s   66 *C  661 5C  661a @C  661 5Cr tight_layout5ctj}tjdj d}|j |dtj y)zTest tight_layout for image.d rFnone) interpolationN)r#r8nparangereshapeimshowr%)rarrs rtest_tight_layout5rNHsC B ))C.  *CIIcI(r tight_layout6c tj5tjdtt j }t jjdd}|j|d}|j|d}t|t||j|gdt jjdd}|D]@}|j|}t||jd|jdBjd d |j|gd d t|j|j}t!|j"|j"}|j|dd||j"z zdd|j|z z g|j|dd||j"z zdd|j|z z gd dddy#1swYyxYw)zTest tight_layout for gridspec.ignorer r r)rr?r rectr r r)rRrr r g?)rTh_padNrR)warningscatch_warnings simplefilter UserWarningr#figuremplgridspecGridSpec add_subplotrr%rrmintopmaxbottom) r'gs1r.r/gs2ssrrbrds rtest_tight_layout6rhQs  " %h 4jjlll##Aq)ooc!f%ooc!f%SS >2ll##Aq) B$B   LL  MM"    i" - >>#''377#SZZ, D!vcjj/@*A$'cggck):$< = CfSZZ.?)@$(!swws{*;$=#  %= % % %s GG==H tight_layout7cDd}tj\}}|jddg|jd|j d||j d||j d d | |j d d | tjy)Nr!r r r r rrrz Left Titleleft)locrz Right Titleright)r#r$rrrrrr%)rr'rs rtest_tight_layout7rn{sHllnGCGGQFOAMM)hM/MM)hM/LL6HL=LLGhL?r tight_layout8{Gzt?)rtolctj}|jdd|j}t |d|j y)#Test automatic use of tight_layout.tight皙?)layoutpadr!rN)r#r\set_layout_enginer`rdraw_without_renderingr&s rtest_tight_layout8rzsD **,Cc2  Bb! r tight_layout9ctjdd\}}|ddjdtjy)Nr r F)r#r$ set_visibler%)faxarrs rtest_tight_layout9rs:||Aq!HAu !HQKE"rctj}|jd}|jj ddd|j j ddd|jj ddddd |j j ddddd |jj d gd |j j d gd |jd }|jj d dd|j j d dd|jd}|jj ddd|j j ddd|jd}|jj ddd|j j dddtjddgddggddgddggddgddggddgddggg}t|jD]D\}}ttj|jjd||Fy)rsr5outr )tickdirlengthwidth Tminor)rrrtick1Onwhichr)rinr6inoutgZd;O?g\(\?gʡE?gB`"?gd;O?g/$?gDl?gm?N)r#r\r`xaxisset_tick_paramsyaxis set_ticksr% enumerateaxesrrIround get_position get_points)r'rexpectednns rtest_outward_ticksrs$ **,C  BHHU2Q?HHU2Q?HHb4wHHHb4wHHHs$'HHs$'  BHHT"A>HHT"A>  BHHWRqAHHWRqA  BHHU2Q?HHU2Q? %( %( %( %( H CHH%)B288BOO$5$@$@$BAF#B< ))rc |d|z}}| | f| df| |fd|f||f|df|| fd| fg}|D]^}t||}td|||ddd} |j| td|d d||jd } |j| `y ) z& Surround ax with OffsetBoxes r rRr<NonerF)rheight facecolor edgecolor linewidth antialiasedcenterg)rlchildrwframeonbbox_to_anchorbbox_transform borderpadN)rr add_artistr transAxes) rsizemargincolormmp anchor_pointspointda background anchored_boxs radd_offsetboxesrs AfHrAb1"XBx1"b"XBx"b1"XQBx)M$ t $vT&*).)/)*+0 2 j!( <<  l#%$rcdxgdddgxfd}|d\}}|j|d\}}|jt|j|jD]\}}|j}|j}|j|jkDsJ|j |j ksJ|j |j kDsJ|j|jkrJg} |jD]c}|jD]N} t| ts| j} | D]} | j| sJ| j| Pe|d\} }|jD]9}|jD]$} t| ts| jd&;| jt|j|jD]M\}}|j}|j}t|j!|j!Oy)Nr )redbluegreenyellowrr ctj\}}t|jD]*\}}|j  ||st |d|,||fS)N)r)r#r$zipflatrr) with_boxesr'axsrrcolorscolsrowsxys r _subplotsz0test_tight_layout_offsetboxes.._subplotssa<<d+SSXXv. 5IB GGAqG &Be4 5CxrFT)r%rrrx0x1y0y1 get_children isinstancerget_window_extentoverlapsappendr}rr)rfig0axs0fig1axs1ax0r.bbox0bbox1bboxesrbbox other_bboxfig2axs2rr/bbox2rrrrrs @@@@@rtest_tight_layout_offsetboxesrs1 OD4 /F FNA5!JD$4JD$ 499-#S  "  "xx%(("""xx%(("""xx%(("""xx%((""" #Fyy %%' Ee%67**,D$ 5 ==444 5 MM$    4JD$ii)__& )E%!23!!%( ))  499-CS  "  "5++-u/?/?/ABCrcLtj}|jy)zETest that tight layout doesn't cause an error when there are no Axes.N)r#gcfr%)r's rtest_empty_layoutr$s '')Crlabelxlabelylabelc^tjd\}}|jdi|diy)z8Test that no warning emitted when xlabel/ylabel too big.r r figsizedaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaN)r#r$set)rr'rs rtest_verybig_decoratorsr*s,ll6*GC BFF eY  rctjddd\}}|djd|djdy) z+Test that doesn't warn when xlabel too big.r r rrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbN)r#r$rr'rs rtest_big_decorators_horizontalr1<||Aq&1HCFhFhrctjddd\}}|djd|djdy) z+Test that doesn't warn when ylabel too big.r r rrraaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbN)r#r$rrs rtest_big_decorators_verticalr8rrctjddtjddddtjt5tj dddy#1swYyxYw)N)r<)rr)rr r rr>)r#r@pytestwarnsr[r%rrrtest_badsubplotgridr?sSVV$VVQ: k " s A''A0c4tjd\}}|jddg|jddg|j dddd |j }t jt5tj|j }|j|jk(sJ dddt jt5tjgd  dddy#1swYDxYw#1swYyxYw) NTr%rr zBIG LONG STRING)g?r )g%@g?F)xyxytextannotation_clip)rr皙?rrS) r#r$set_xlimset_ylimannotaterrrr[r%r)r'rp1p2s rtest_collapsedrHs ll-GCKKAKKAKK!i %'  B k "$  __ xx288###$ k "0 ./00 $$ 00s>AD DD Dctjd\}}|jd}|jd}|jj |j j|j jkDsJy)NTrfoobar) r#r$suptitlercanvasdrawrrr)r'rstts r test_suptitler]sjll-GC e B UAJJOO   ! $ $q':':'<'?'? ?? ?rpdfctjjjfd}|j tjjd|t j \}}|jy)Nc~t|tjjjsJ|g|i|y)N)rr]backends backend_pdf RendererPdf)selfargskwargsunpatched_inits r__init__z'test_non_agg_renderer..__init__is7$ 8 8 D DEEEt-d-f-rr)r] backend_bases RendererBasersetattrr#r$r%) monkeypatchrecwarnrr'rrs @rtest_non_agg_rendererr esZ&&33<++---++--- .rctj\}}tjtd5|j ddiddd|j y#1swYxYw)Nzwill be deprecatedr$rw333333?)r#r$rrPendingDeprecationWarningset_tight_layoutryr&s rtest_tight_padsrBsXllnGC /0 2, eT]+, ,,s A  A)cZtjddi\}}|jy)Nrwr?r)r#r$ryr&s rtest_tight_kwargsrDs$ll 6GC rcbtj\}}tjt5|j d|j sJ|j d|j rJ|j d|j sJ dddy#1swYyxYw)NTF)r#r$rrr@rAget_tight_layoutr&s rtest_tight_togglerGsllnGC / 0& T"##%%% U#''))) T"##%%% &&&s A*B%%B.)rV)rFrublack)1rXnumpyrI numpy.testingrr matplotlibr]matplotlib.testing.decoratorsrmatplotlib.pyplotpyplotr#matplotlib.offsetboxrrmatplotlib.patchesrmark usefixtures pytestmarkrr(r2r9rArNrhrnrzrrrrr parametrizerrrrrrbackendr r+r=rBrDrGrrrrVs, :?( KK/0 -?#734?#734?#734?#73 4 ?#734?#73&%4&%R?#73 4 ?#7>!?!?#734 )F$:ECP 8X"67!8!   0*@U   .0!! &r