gL irddlmZddlmZddlZddlZerddlm Z GddZ d dZ e dk(re yy) ) annotations) TYPE_CHECKINGN)Iterablec^eZdZdZ d d dZd dZd dZdddZdZdZ ddd Z y) TablePlotterzg Layout some DataFrames in vertical/horizontal layout for explanation. Used in merging.rst c.||_||_||_yN) cell_width cell_height font_size)selfr r r s [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/util/_doctools.py__init__zTablePlotter.__init__s %&"c|j\}}||jjz||jjzfS)zA Calculate table shape considering index levels. )shapecolumnsnlevelsindex)r dfrowcols r_shapezTablePlotter._shapes:88SRZZ'''rxx/?/?)???rc|r]ttfd|Dj|d}tfd|Dj|dz}||fSt|Dcgc]}j|dc}j|dgz}t|Dcgc]}j|dc}j|dgz}||fScc}wcc}w)zQ Calculate appropriate figure size based on left and right data. c3FK|]}j|dywrNr.0rr s r z*TablePlotter._get_cells..*s?BT[[_Q/?!rc3FK|]}j|dywNrrs rr z*TablePlotter._get_cells..+s;R+;r!r$)maxsumr)r leftrightverticalvcellshcellsrs` r _get_cellszTablePlotter._get_cells$s ?$??UASTUAVWF;d;;dkk%>PQR>SSFv~t<$++b/!,< E@RST@U?VVWFt<$++b/!,< E@RST@U?VVWFv~=.QBr B 2Br!c3FK|]}j|dywrrrs rr z$TablePlotter.plot..Rr1r!?)titleheightResultg?g?g?gffffff?)topbottomr'r(c3FK|]}j|dywrrrs rr z$TablePlotter.plot..[sG"4;;r?1-Gr!r$g333333?) matplotlibr.matplotlib.pyplotpyplot isinstancelist_convr,r r figureGridSpeclenr% enumeratezip add_subplot _make_tablesubplotsubplots_adjustnpr)r r'r(labelsr)r.pltrr+r*r/figgs max_left_cols max_left_rowsi_left_labelaxmax_rowsr5sps` rplotzTablePlotter.plot1s ('$%6D)-.2 2.. 5!uh? oo.0@0@60IIGoo.0@0@60IIGjjj) ""3t9f5BBTBBMBTBBM&/D&0A&B V"?E6__R1]?(:%;<  U&}AT U VR=> 123B   Rhtf}  M   C4t  L" GwGGH266(++F""1f-BA!$/  F[[___R1q2a5y=(8%9:  Rvf ERU    R12Y'B   Rhv  F   DD  M Q/sI=ct|tjr/|j|j d}n|j }|j d}|S)zF Convert each input to appropriate for table outplot. )nameNaN)r=pdSeriesrYto_framefillna)r datas rr?zTablePlotter._convlsJ dBII &yy }}"}-}}{{5! rc|j}|jj}|dk(r|jdd|jn?t |D]1}|j|d||jj |3|j j}|dkDr|j j d}t d|Dcgc]'}|j j |j)}}tj|}|j |_tj||g}||_|Scc}w)Nr$rIndex) copyrrinsertrange_get_level_valuesr_valuesr[ DataFrameconcat)r r_ idx_nlevelsrP col_nlevelsrvaluescol_dfs r _insert_indexzTablePlotter._insert_indexxsyy{jj(( !  KK7DJJ /;' M Aqc{DJJ,H,H,KL Mll** ?,,003CCHKCX>? ..q199F\\&)F!>>DL99fd^,DDL s ,ENc||jdyddlm}|jj}|j j}|j |}|j||d}|j|j|dt|dzz }|j} | djD]g\\} } } | d k(r| jdn7| |kr| |kr| jdn| |ks| |kr| jd | j|i|j||j |j!d y) NFr)plotting )locr3r$celldz#AAAAAA)sizeoff) set_visiblepandasrorrrrmtable set_fontsizer rB propertiesitems set_facecolor set_height set_titleaxis) r rSrr4r5rorirjtbpropsrccells rrFzTablePlotter._make_tables) : NN5 ! #hh&& jj((    # ^^B^ * ' >CGaK(F !'N002 $LFQDBw  '[Q_  '[A O""9- OOF # $ U 0 r)gGz?g?g@)r floatr rr rreturnNone)rz pd.DataFramertuple[int, int])rr)T)rJz Iterable[str]r)boolr )r4strr5z float | Nonerr) __name__ __module__ __qualname____doc__rrr,rVr?rmrFrrrrr s]!! ### #  #@ 9v ,rrcddlm}t}tjgdgdgdd}tjddgdd gd }|j ||gtj ||gd d gd |jtjddgdd gd}|j ||gtj ||gdd d gd|jtjjgd}tjjddg}tjgdgdd|}||_ |j ||dg|jy)Nr) )) )ABCrrrr)rrdf1df2T)rJr))XZr$)rF)r$rr$r)r$r)r)rr)rrrr)r$r)rrrpr)v1v2)rdf3)rJ) r;r<rr[rgrVrhshow MultiIndex from_tuplesr)rKprrridxcolumns rmainrs4#A ,,\ <P QC ,,b"XRH5 6CFFC:ryy#s,eU^dFSHHJ ,,b"XRH5 6CFF c BIIsCjq15%.SX HHJ -- # #D C]] & &('; rs=" (]]@8 zFr