'VfiddlmZddlmZddlZddlZerddlm Z GddZ d d Z e d kr e dSdS) ) annotations) TYPE_CHECKINGN)IterablecReZdZdZ d d!d Zd"dZd#dZd$d%dZdZdZ d&d'dZ dS)( TablePlotterzg Layout some DataFrames in vertical/horizontal layout for explanation. Used in merging.rst Gz??@ cell_widthfloat cell_height font_sizereturnNonec0||_||_||_dSN)r r r)selfr r rs Dc:\PYTHON\DbComparer\venv\Lib\site-packages\pandas/util/_doctools.py__init__zTablePlotter.__init__s %&"df pd.DataFrametuple[int, int]cR|j\}}||jjz||jjzfS)zA Calculate table shape considering index levels. )shapecolumnsnlevelsindex)rrrowcols r_shapezTablePlotter._shapes.8SRZ''rx/?)???rc|rzttfd|D|d}tfd|D|dz}nptfd|D|dgz}tfd|D|dgz}||fS)zQ Calculate appropriate figure size based on left and right data. c3NK|]}|dV dSrNr!.0rrs r z*TablePlotter._get_cells..*s2??BT[[__Q/??????rrc3NK|]}|dV dSNr%r&s rr(z*TablePlotter._get_cells..+s2;;R+;;;;;;rr+cFg|]}|dS)rr%r&s r z+TablePlotter._get_cells..-(<<<$++b//!,<<..r.r)maxsumr!)rleftrightverticalvcellshcellss` r _get_cellszTablePlotter._get_cells$s   X????$?????UASASTUAVWWF;;;;d;;;;;dkk%>P>PQR>SSFF<<<.Bs#...2 2...r)figsizec3NK|]}|dV dSr*r%r&s rr(z$TablePlotter.plot..Q2BBr B 2BBBBBBrc3NK|]}|dV dSr$r%r&s rr(z$TablePlotter.plot..RrBr?)titleheightResultg?g?g?gffffff?)topbottomr2r3c3NK|]}|dV dSr$r%r&s rr(z$TablePlotter.plot..[s2GG"4;;r??1-GGGGGGrr+g333333?) matplotlibr=matplotlib.pyplotpyplot isinstancelistr?r7r r figureGridSpeclenr0 enumeratezip add_subplot _make_tablesubplotsubplots_adjustnpr!)rr2r3r9r4r=pltr6r5r@figgs max_left_cols max_left_rowsi_left_labelaxmax_rowsrFrsps` rplotzTablePlotter.plot1sD ('''''''''''$%% 6D....... 5!!uh??  Jo.0@60IIGGo.0@60IIGjjj))  N""3t99f55BBBBBTBBBBBMBBBBTBBBBBM&/D&0A0A&B&B V V"?E6__R1]?(:%;<<  U&}AT UUUUR=>> 1233B   Rhtf}  M M M   C4t  L L L LGGGGwGGGGGH26(+++F""1f--BA!$//   F[[____R1q2a5y=(8%9::  Rvf EEERU R122Y''B   Rhv  F F F   DD  M M M rct|tjr2|j|d}n|}|d}|S)zF Convert each input to appropriate for table outplot. N)nameNaN)rNpdSeriesrhto_framefillna)rdatas rr?zTablePlotter._convlsX dBI & & 'y }}"}--}}{{5!! rc jj}|dkrddjnDt |D]4}|d|j|5jj}|dkrsjd}fdt d|D}tj|}|j_tj |g|_S)Nr+rIndexcNg|]!}j|j"Sr8)r_get_level_values_values)r'r_rns rr-z.TablePlotter._insert_index..s9>? ..q119r) copyrrinsertrangerrrrj DataFrameconcat)rrn idx_nlevelsr_ col_nlevelsr valuescol_dfs ` r _insert_indexzTablePlotter._insert_indexxsyy{{j( !   KK7DJ / / / /;'' M M A{q{{DJ,H,H,K,KLLLLl* ??,0033CCHKCXCXF\&))F!>DL9fd^,,DDL rNrEstrrF float | Nonec||ddSddlm}|jj}|jj}||}|||d}||j |dt|dzz }| } | d D]|\\} } } | d kr| dnC| |kr| |kr| dn!| |ks| |kr| d | |}|||j |d dS) NFr)plotting )locrDr+celldz#AAAAAA)sizeoff) set_visiblepandasrrrrr}table set_fontsizerrR propertiesitems set_facecolor set_height set_titleaxis) rrbrrErFrryrztbpropsrccells rrVzTablePlotter._make_tables| : NN5 ! ! ! F######h& j(    # # ^^B^ * * ''' >CGGaK(F !'N0022 $ $LFQDBww  ''''[Q__  ''''[A OO""9--- OOF # # # # U 000 r)rr r )r r r r rr rr)rrrr)rr)r8T)r9r:r4r;r)rEr~rFrrr) __name__ __module__ __qualname____doc__rr!r7rer?r}rVr8rrrr s!! #####@@@@    99999v   ,rrrrcddlm}t}tjgdgdgdd}tjddgdd gd }|||gtj||gd d gd |tjddgdd gd}|||gtj||gdd d gd|tj gd}tj ddg}tjgdgdd|}||_ |||dg|dS)Nr) )) )ABCrrrr)rrdf1df2T)r9r4)XZr+)rF)r+rr+r)r+r)r)rr)rrrr)r+r)rrrr)v1v2)rdf3)r9) rLrMrrjrwrerxshow MultiIndex from_tuplesr)rZprrridxcolumns rmainrs######A ,\\\ <<<PP Q QC ,b"XRH55 6 6CFFC:ry#s,,eU^dFSSSHHJJJ ,b"XRH55 6 6CFF c BIsCjq1115%.SX HHJJJ - # #DDD  C] & &('; < rs"""""" )((((((]]]]]]]]@8 zDFFFFFr