zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
U
®ý°d)ã@sVddlmZddlmZddlZddlZGdd„dƒZddœdd    „Z    e
d
krRe    ƒdS) é)Ú annotations)ÚIterableNc@szeZdZdZd#dddddœdd    „Zd
d d œd d„Zd dœdd„Zd$dddœdd„Zdd„Zdd„Z    d%dddd œd!d"„Z
dS)&Ú TablePlotterzg
    Layout some DataFrames in vertical/horizontal layout for explanation.
    Used in merging.rst
    ç®Gáz®×?çÐ?ç@ÚfloatÚNone)Ú
cell_widthÚ cell_heightÚ    font_sizeÚreturncCs||_||_||_dS)N)r
r r )Úselfr
r r ©rúLd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/util/_doctools.pyÚ__init__szTablePlotter.__init__z pd.DataFrameztuple[int, int])Údfr cCs"|j\}}||jj||jjfS)zA
        Calculate table shape considering index levels.
        )ÚshapeÚcolumnsÚnlevelsÚindex)rrÚrowÚcolrrrÚ_shapes
zTablePlotter._shape©r cs¤|rPtt‡fdd„|Dƒƒˆ |¡dƒ}t‡fdd„|Dƒƒˆ |¡d}nLt‡fdd„|Dƒˆ |¡dgƒ}t‡fdd„|Dƒˆ |¡dgƒ}||fS)    zQ
        Calculate appropriate figure size based on left and right data.
        c3s|]}ˆ |¡dVqdS©rN©r©Ú.0r©rrrÚ    <genexpr>'sz*TablePlotter._get_cells.<locals>.<genexpr>rc3s|]}ˆ |¡dVqdS©éNrrrrrr (sr"csg|]}ˆ |¡d‘qS)rrrrrrÚ
<listcomp>*sz+TablePlotter._get_cells.<locals>.<listcomp>csg|]}ˆ |¡d‘qS)r"rrrrrr#+s)ÚmaxÚsumr)rÚleftÚrightÚverticalÚvcellsÚhcellsrrrÚ
_get_cells!s &&&&zTablePlotter._get_cellsrTz Iterable[str]Úbool©Úlabelsr(c    s2ddlm}ddlm}t|tƒs(|g}‡fdd„|Dƒ}ˆ |¡}ˆ |||¡\}}|rpˆj|ˆj    |f}    nˆj|ˆj    |f}    |j
|    d}
|r^|  t |ƒ|¡} t ‡fdd„|Dƒƒ} t ‡fd    d„|Dƒƒ} tt||ƒƒD]8\}\}}|
 | |d| …f¡}ˆj|||d
| d qà| | dd…| d…f¡}ˆj||d d |d |
jdddddnÐt ‡fdd„||gDƒƒ}d
t  |¡}|  d|¡} d}t||ƒD]P\}}ˆ |¡}|
 | d|||d…f¡}ˆj||||d ||d7}q¢| | d|d…f¡}ˆj||d |d |
jddddd|
S)a
        Plot left / right DataFrames in specified layout.
 
        Parameters
        ----------
        left : list of DataFrames before operation is applied
        right : DataFrame of operation result
        labels : list of str to be drawn as titles of left DataFrames
        vertical : bool, default True
            If True, use vertical layout. If False, use horizontal layout.
        r)ÚgridspecNcsg|]}ˆ |¡‘qSr)Ú_convrrrrr#?sz%TablePlotter.plot.<locals>.<listcomp>)Úfigsizec3s|]}ˆ |¡dVqdSr!rrrrrr Nsz$TablePlotter.plot.<locals>.<genexpr>c3s|]}ˆ |¡dVqdSrrrrrrr Osçð?)ÚtitleÚheightZResultgÍÌÌÌÌÌð?gÍÌÌÌÌÌì?gš™™™™™©?gffffffî?)ÚtopÚbottomr&r'c3s|]}ˆ |¡dVqdSrrrrrrr Xsr"g333333ë?)Z
matplotlibr/Úmatplotlib.pyplotÚpyplotÚ
isinstanceÚlistr0r+r
r ÚfigureZGridSpecÚlenr$Ú    enumerateÚzipZ add_subplotÚ _make_tableZsubplotZsubplots_adjustÚnpr)rr&r'r.r(r/Úpltr*r)r1ZfigZgsZ max_left_colsZ max_left_rowsÚiÚ_leftZ_labelÚaxZmax_rowsr4rÚsprrrÚplot.sD  
 
 
zTablePlotter.plotcCs:t|tjƒr,|jdkr$|jdd}n| ¡}| d¡}|S)zF
        Convert each input to appropriate for table outplot.
        NÚ)ÚnameÚNaN)r9ÚpdZSeriesrHZto_frameZfillna)rÚdatarrrr0is  
 
zTablePlotter._convcs²ˆ ¡‰ˆjj}|dkr*ˆ ddˆj¡n*t|ƒD] }ˆ |d|›ˆj |¡¡q2ˆjj}|dkr®ˆj d¡}‡fdd„td|ƒDƒ}t |¡}|jˆ_t     |ˆg¡‰|ˆ_ˆS)Nr"rZIndexcsg|]}ˆj |¡j‘qSr)rÚ_get_level_valuesZ_values)rrB©rKrrr#‚sz.TablePlotter._insert_index.<locals>.<listcomp>)
ÚcopyrrÚinsertÚrangerLrrJÚ    DataFrameÚconcat)rrKÚ idx_nlevelsrBÚ col_nlevelsrÚvaluesZcol_dfrrMrÚ _insert_indexus"  
ÿ
zTablePlotter._insert_indexNÚstrz float | None)r3r4r c Cs|dkr| d¡dSddlm}|jj}|jj}| |¡}|j||dd}| |j    ¡|dkrpdt
|ƒd}|  ¡}    |    d  ¡D]`\\}
} } | d    kr¤|  d¡n6|
|krÀ| |krÀ|  d¡n|
|ksÐ| |krÚ|   d
¡|  |¡q„|j||j    d | d ¡dS) NFr)Úplottingé    )Úlocr2r"Zcelldéÿÿÿÿz#AAAAAA)ÚsizeÚoff)Z set_visibleÚpandasrXrrrrVÚtableZ set_fontsizer r<Z
propertiesÚitemsZ set_facecolorZ
set_heightÚ    set_titleÚaxis) rrDrr3r4rXrSrTÚtbÚpropsÚrÚcÚcellrrrr?‹s,
 
 
 zTablePlotter._make_table)rrr)rT)N) Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrr+rFr0rVr?rrrrr
sü
 ; rr    rcCs:ddlm}tƒ}t dddgdddgdd    d
gd œ¡}t ddgdd
gd œ¡}|j||gt ||g¡d dgdd| ¡t ddgdd
gdœ¡}|j||gtj||gddd dgdd| ¡tj     ddddddg¡}tj     ddg¡}tjddddddgddd d!d"dgd#œ|d$}||_
|j||d%gd&| ¡dS)'Nré
é é éééééé )ÚAÚBÚC)rurwÚdf1Údf2Tr-)ÚXÚZr")rbF)r"ru)r"rv)r"rw)éru)r|rv)r|rwr|éééééérY)Zv1Zv2)rÚdf3)r.) r7r8rrJrQrFrRÚshowZ
MultiIndexÚ from_tuplesr)rAÚprxryrƒÚidxÚcolumnrrrÚmainªs, $$ÿÿ,r‰Ú__main__) Ú
__future__rÚtypingrÚnumpyr@r^rJrr‰rhrrrrÚ<module>s  !