
    db                    t    d dl mZ d dlmZ d dlZd dlZ G d d          Zd
dZ	e
d	k    r e	             dS dS )    )annotations)IterableNc                  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       Q/var/www/html/t/fyr/venv311/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]r3   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 r7   )_convr%   s     r   r,   z%TablePlotter.plot.<locals>.<listcomp>?   s#    ...2

2...r   )figsizec              3  N   K   | ]}                     |          d          V   dS r)   r$   r%   s     r   r'   z$TablePlotter.plot.<locals>.<genexpr>N   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>O   rA   r         ?)titleheightResultg?g?g?gffffff?)topbottomr1   r2   c              3  N   K   | ]}                     |          d          V   dS r#   r$   r%   s     r   r'   z$TablePlotter.plot.<locals>.<genexpr>X   s2      GG"4;;r??1-GGGGGGr   r*   g333333?)
matplotlibr<   matplotlib.pyplotpyplot
isinstancelistr>   r6   r
   r   figureGridSpeclenr/   	enumeratezipadd_subplot_make_tablesubplotsubplots_adjustnpr    )r   r1   r2   r8   r3   r<   pltr5   r4   r?   figgsmax_left_colsmax_left_rowsi_left_labelaxmax_rowsrE   r   sps   `                     r   plotzTablePlotter.plot.   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)rM   pdSeriesrg   to_framefillna)r   datas     r   r>   zTablePlotter._convi   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 r7   )r   _get_level_values_values)r&   r^   rm   s     r   r,   z.TablePlotter._insert_index.<locals>.<listcomp>   s9       >?..q119  r   )
copyr   r   insertrangerq   r   ri   	DataFrameconcat)r   rm   idx_nlevelsr^   col_nlevelsr   valuescol_dfs    `      r   _insert_indexzTablePlotter._insert_indexu   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   NrD   strrE   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	   )locrC   r*   celldz#AAAAAA)sizeoff)set_visiblepandasr   r   r   r   r|   tableset_fontsizer   rQ   
propertiesitemsset_facecolor
set_height	set_titleaxis)r   ra   r   rD   rE   r   rx   ry   tbpropsrccells                r   rU   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   )r7   T)r8   r9   r3   r:   r   )rD   r}   rE   r~   r   r   )__name__
__module____qualname____doc__r   r    r6   rd   r>   r|   rU   r7   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)r8   r3   )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)r8   )rK   rL   r   ri   rv   rd   rw   show
MultiIndexfrom_tuplesr   )rY   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   numpyrX   r   ri   r   r   r   r7   r   r   <module>r      s    " " " " " "              ] ] ] ] ] ] ] ]@   8 zDFFFFF r   