
    bMh                        d dl mZ d dlmZ d dlZd dlZerd dlm	Z	  G d d          Z
dd	Zed
k    r e             dS dS )    )annotations)TYPE_CHECKINGN)Iterablec                  R    e Zd ZdZ	 	 	 d d!dZd"dZd#dZd$d%dZd Zd Z	d&d'dZ
dS )(TablePlotterzg
    Layout some DataFrames in vertical/horizontal layout for explanation.
    Used in merging.rst
    Gz?      ?      @
cell_widthfloatcell_height	font_sizereturnNonec                0    || _         || _        || _        d S N)r   r   r   )selfr   r   r   s       U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/util/_doctools.py__init__zTablePlotter.__init__   s     %&"    dfpd.DataFrametuple[int, int]c                R    |j         \  }}||j        j        z   ||j        j        z   fS )zA
        Calculate table shape considering index levels.
        )shapecolumnsnlevelsindex)r   r   rowcols       r   _shapezTablePlotter._shape   s.     8SRZ''rx/?)???r   c                    |rzt          t           fd|D                                            |          d                   }t           fd|D                                            |          d         z   }npt           fd|D                                  |          d         gz             }t           fd|D                                  |          d         gz             }||fS )zQ
        Calculate appropriate figure size based on left and right data.
        c              3  N   K   | ]}                     |          d          V   dS r   Nr!   .0r   r   s     r   	<genexpr>z*TablePlotter._get_cells.<locals>.<genexpr>*   s2      ??BT[[__Q/??????r   r   c              3  N   K   | ]}                     |          d          V   dS    Nr%   r&   s     r   r(   z*TablePlotter._get_cells.<locals>.<genexpr>+   s2      ;;R+;;;;;;r   r+   c                F    g | ]}                     |          d          S )r   r%   r&   s     r   
<listcomp>z+TablePlotter._get_cells.<locals>.<listcomp>-   (    <<<$++b//!,<<<r   c                F    g | ]}                     |          d          S )r+   r%   r&   s     r   r-   z+TablePlotter._get_cells.<locals>.<listcomp>.   r.   r   )maxsumr!   )r   leftrightverticalvcellshcellss   `     r   
_get_cellszTablePlotter._get_cells$   s	     	X????$?????UASASTUAVWWF;;;;d;;;;;dkk%>P>PQR>SSFF<<<<t<<<E@R@RST@U?VVWWF<<<<t<<<E@R@RST@U?VVWWFv~r    TlabelsIterable[str]r4   boolc           	         ddl m} ddlm} t	          |t
                    s|g} fd|D             }                     |          }                     |||          \  }}|r j        |z   j	        |z  f}	n j        |z   j	        |z  f}	|
                    |	          }
|r|                    t          |          |          }t           fd|D                       }t           fd|D                       }t          t          ||                    D ]C\  }\  }}|
                    ||d|f                   }                     |||d|z  	           D|                    |dd|df                   }                     ||d
d|z  	           |
                    dddd           nt           fd||gz   D                       }dt)          j        |          z  }|                    d|          }d}t          ||          D ]f\  }}                     |          }|
                    |d|||d         z   f                   }                     ||||	           ||d         z  }g|                    |d|df                   }                     ||d
|	           |
                    dddd           |
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   )gridspecNc                :    g | ]}                     |          S r8   )_convr&   s     r   r-   z%TablePlotter.plot.<locals>.<listcomp>B   s#    ...2

2...r   )figsizec              3  N   K   | ]}                     |          d          V   dS r*   r%   r&   s     r   r(   z$TablePlotter.plot.<locals>.<genexpr>Q   2      BBrB 2BBBBBBr   c              3  N   K   | ]}                     |          d          V   dS r$   r%   r&   s     r   r(   z$TablePlotter.plot.<locals>.<genexpr>R   rB   r         ?)titleheightResultg?g?g?gffffff?)topbottomr2   r3   c              3  N   K   | ]}                     |          d          V   dS r$   r%   r&   s     r   r(   z$TablePlotter.plot.<locals>.<genexpr>[   s2      GG"4;;r??1-GGGGGGr   r+   g333333?)
matplotlibr=   matplotlib.pyplotpyplot
isinstancelistr?   r7   r   r   figureGridSpeclenr0   	enumeratezipadd_subplot_make_tablesubplotsubplots_adjustnpr!   )r   r2   r3   r9   r4   r=   pltr6   r5   r@   figgsmax_left_colsmax_left_rowsi_left_labelaxmax_rowsrF   r   sps   `                     r   plotzTablePlotter.plot1   sD    	('''''''''''$%% 	6D.......

5!!uh?? 	Jo.0@60IIGG o.0@60IIGjjj)) 	N""3t99f55BBBBBTBBBBBMBBBBTBBBBBM&/D&0A0A&B&B V V"?E6__R1]?(:%;<<  U&}AT UUUUR=>> 1233BRhtf}MMMC4tLLLLGGGGwGGGGGH26(+++F""1f--BA!$//  
F[[____R1q2a5y=(8%9::  Rvf EEERU
R122Y''BRhvFFFDDMMM
r   c                    t          |t          j                  r2|j        |                    d          }n|                                }|                    d          }|S )zF
        Convert each input to appropriate for table outplot.
        N )nameNaN)rN   pdSeriesrh   to_framefillna)r   datas     r   r?   zTablePlotter._convl   sX     dBI&& 	'y }}"}--}}{{5!!r   c                                                     j        j        }|dk    r                    ddj                   nDt	          |          D ]4}                    |d| j                            |                     5j        j        }|dk    rsj                            d          }fdt	          d|          D             }t          j        |          }|j        _        t          j	        |g          |_        S )Nr+   r   Indexc                N    g | ]!}j                             |          j        "S r8   )r   _get_level_values_values)r'   r_   rn   s     r   r-   z.TablePlotter._insert_index.<locals>.<listcomp>   s9       >?..q119  r   )
copyr   r   insertrangerr   r   rj   	DataFrameconcat)r   rn   idx_nlevelsr_   col_nlevelsr    valuescol_dfs    `      r   _insert_indexzTablePlotter._insert_indexx   s   yy{{j(!KK7DJ////;'' M MA{q{{DJ,H,H,K,KLLLLl*??,0033C   CHKCXCX  F \&))F!>DL9fd^,,DDLr   NrE   strrF   float | Nonec                   ||                     d           d S ddlm} |j        j        }|j        j        }|                     |          }|                    ||d          }|                    | j	                   |dt          |          dz   z  }|                                }	|	d                                         D ]|\  \  }
}}|d	k    r|                     d           nC|
|k     r||k     r|                     d           n!|
|k     s||k     r|                    d
           |                    |           }|                    || j	                   |                    d           d S )NFr   )plotting	   )locrD   r+   celldz#AAAAAA)sizeoff)set_visiblepandasr   r   r   r   r}   tableset_fontsizer   rR   
propertiesitemsset_facecolor
set_height	set_titleaxis)r   rb   r   rE   rF   r   ry   rz   tbpropsrccells                r   rV   zTablePlotter._make_table   s|   :NN5!!!F######h&j(##^^B^**
'''>CGGaK(F!'N0022 	$ 	$LFQDBww  ''''[Q__  ''''[AOO""9---OOF####
U000
r   )r   r	   r
   )r   r   r   r   r   r   r   r   )r   r   r   r   )r   r   )r8   T)r9   r:   r4   r;   r   )rE   r~   rF   r   r   r   )__name__
__module____qualname____doc__r   r!   r7   re   r?   r}   rV   r8   r   r   r   r      s          !!	# # # # #@ @ @ @   9 9 9 9 9v
 
 
  ,      r   r   r   r   c                    dd l m}  t                      }t          j        g dg dg dd          }t          j        ddgdd	gd
          }|                    ||gt          j        ||g          ddgd           |                                  t          j        ddgdd	gd          }|                    ||gt          j        ||gd          ddgd           |                                  t          j        	                    g d          }t          j        	                    ddg          }t          j        g dg dd|          }||_
        |                    ||dg           |                                  d S )Nr   )
         )         )          )ABCr   r   r   r   )r   r   df1df2T)r9   r4   )XZr+   )r   F)r+   r   r+   r   )r+   r   )   r   )r   r   )r   r   r   r   )r+   r               )r   r         r   r   )v1v2)r   df3)r9   )rL   rM   r   rj   rw   re   rx   show
MultiIndexfrom_tuplesr   )rZ   pr   r   r   idxcolumns          r   mainr      s   ######A
,\\\<<<PP
Q
QC
,b"XRH55
6
6CFFC:ry#s,,eU^dFSSSHHJJJ
,b"XRH55
6
6CFF	c
BIsCjq1115%.SX     HHJJJ
-
#
#DDD C ]&&(';<<F
,0008K8K8KLLTW
X
X
XCCKFF3UGF$$$HHJJJJJr   __main__)r   r   )
__future__r   typingr   numpyrY   r   rj   collections.abcr   r   r   r   r8   r   r   <module>r      s    " " " " " "                     )((((((] ] ] ] ] ] ] ]@   8 zDFFFFF r   