
    .iw                        d Z ddlZddlZddlZddlmc mZ ddl	m
Z
mZmZmZmZmZmZmZmZ ddlmZ ddlmZmZmZmZmZ  ej8                  d      Z ej8                  d      Z ej8                  d      Zddl Z ddl!m"Z" ejF                  d	e
fd
       Z$ ejJ                  d      d        Z&d Z'ejP                  jS                  dejT                  jV                        ejP                  jS                  d e
 ejX                  d      j[                  dd             e e.d            g      ejP                  jS                  d e e.d             edd       edd      g      d                      Z/ G d d      Z0 G d d      Z1ejF                  d        Z2ejF                  d	e
fd       Z3d Z4d Z5ejP                  jS                  ddd gd!d"gd"dgg      d#        Z6ejP                  jS                  dg d$g d%g d&g      d'        Z7ejP                  jS                  d(d)d*gd+d,gd-d.gd/d0gg      d1        Z8ejP                  jS                  d(d$gd2gd3gd4gg      d5        Z9d6 Z:d7 Z;d8 Z<d9 Z=y):z"Test cases for misc plot functions    N)		DataFrameIndexSeries	Timestamp
date_rangeinterval_rangeperiod_rangeplottingread_csv)_check_colors_check_legend_labels_check_plot_works_check_text_labels_check_ticks_props
matplotlibzmatplotlib.pyplotzmatplotlib.cmget_standard_colorsreturnc                 *    t         | dddd            S )z*
    The iris dataset as a DataFrame.
    iodatacsvziris.csv)r   )datapaths    ]/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/plotting/test_misc.pyirisr   '   s    
 HT65*=>>    c                      t        dddgi      } t        j                  t        d      5  | j	                          d d d        y # 1 sw Y   y xY w)NA      z#matplotlib is required for plottingmatch)r   pytestraisesImportErrorplotdfs    r   test_import_error_messager)   /   sC     
C!Q=	!B	{*O	P 
	  s   AAc            	      X   t         j                  j                  j                  } d}t	        j
                  t        |      5   | dg g i        d d d        d}t	        j
                  t        |      5   | dt        t              dd gi        d d d         | dt               dgd	d
dd      \  }}}}|dk(  sJ |d	k(  sJ |d
k(  sJ |ddik(  sJ  | dt        t              g i       \  }}}}|J |J |dk(  sJ t        |      dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nz@Called plot accessor for type list, expected Series or DataFramer!    )backend_namer   argskwargsz.should not be called with positional argumentsdtypelinexybarF)r3   kindgridr6   zpandas.plotting._matplotlib   )r
   _corePlotAccessor_get_call_argsr#   r$   	TypeErrorr   objectr   len)funcmsgr2   r3   r5   r.   s         r   test_get_accessor_argsr@   8   sM   >>&&55D
LC	y	, ;"2Br:; ;C	y	, Y"6#7vtnUWXY [U%7	Aq$ 8O88O85==fe_$$$2&!	Aq$ 99996>>v;"7; ;Y Ys   D4D D D)r5   r            index
2020-01-01periodsc                    t         j                         \  }}||_        i }| dv r-t        |t              rt        j                  |  d       ddd} |j                  d| |d| |j                  t        j                         y )N)hexbinscatterpiez not supported with Seriesr   r   )r2   r3   )r5   ax )pltsubplotsrD   
isinstancer   r#   skipr&   savefigosdevnull)r5   r   rD   figrL   r.   s         r   test_savefigrV   Z   sx     llnGCDJF++dF#KK4& :;<q!DII)4B)&)KK

r   c                   d    e Zd Zd Zej
                  j                  di ddig      d        Zd Zy)TestSeriesPlotsc                    t        t        j                  dt        j                        t	        dd      d      }t        j                  d       5  t        t        j                  |       t        t        j                  |j                         t        j                  |d	      }d d d        t        dg
       y # 1 sw Y   xY w)N
   r/   rE   rF   tsrD   name)seriesTest)label)labels)r   nparangefloat64r   tmassert_produces_warningr   r
   autocorrelation_plotvaluesr   )selfserrL   s      r   test_autocorrelation_plotz)TestSeriesPlots.test_autocorrelation_plots   s    IIb

+\26
 ''- 	Bh;;CHh;;CJJO..s&AB		B
 	R1	B 	Bs   ACC
r.   lagrB   c                     t        t        j                  dt        j                        t	        dd      d      }t        t        j                  fd|i| y )NrZ   r/   rE   rF   r[   r\   r^   )r   rb   rc   rd   r   r   r
   lag_plot)ri   r.   rj   s      r   test_lag_plotzTestSeriesPlots.test_lag_plot   sE    IIb

+\26

 	(++BCB6Br   c                     t        t        j                  dt        j                        t	        dd      d      }t        t        j                  |d       y )NrZ   r/   rE   rF   r[   r\   )r^   size)r   rb   rc   rd   r   r   r
   bootstrap_plot)ri   rj   s     r   test_bootstrap_plotz#TestSeriesPlots.test_bootstrap_plot   s?    IIb

+\26

 	(11#BGr   N)	__name__
__module____qualname__rk   r#   markparametrizero   rs   rM   r   r   rX   rX   r   s=    2 [[XUAJ'78C 9CHr   rX   c                      e Zd Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zej                  j                  d        Z	ej                  j                  ej                  j                  ddg d	g      ej                  j                  d
d e
ej                  j                  d      j                  d      ej                  j                  d      j                  d      ej                  j                  d      j                  d      dgdz  d      g      d                      Zej                  j                  ej                  j                  d
d e
ej                  j                  d      j                  d      ej                  j                  d      j                  d      ej                  j                  d      j                  d      dgdz  d      g      d               Zej                  j                  d        Zej                  j                  ej                  j                  ddg d	g      d               Zej                  j                  d        Zej                  j                  d        Zej                  j                  d        Zej                  j-                  d      d        Zd Zej                  j                  ddg d	g      d        Zd Zd Zd Zd Zd  Zd! Zd" Z d# Z!d$ Z"d% Z#d& Z$d' Z%ej                  j                  d(d)d*g      d+        Z&d, Z'd- Z(d. Z)d/ Z*d0 Z+d1 Z,d2 Z-d3 Z.y4)5TestDataFramePlots	pass_axisFTc                    t        j                  d       t        j                  }d }|r#t        j
                  j                  dd      \  }}t        t        j                  j                  d      j                  d            }t        j                  t        d      5  t        ||d|      }d d d        d	   d	   j                   j#                         }g d
}t%        ||       t'        |dddd	       y # 1 sw Y   JxY w)NscipyrC   r    rZ   rC   Fcheck_stacklevel皙?framerange_paddingrL   r   )z-2z-10   Z   
xlabelsizexrot
ylabelsizeyrotr#   importorskipr
   scatter_matrixmplpyplotrO   r   rb   randomdefault_rngstandard_normalre   rf   UserWarningr   yaxisget_majorticklabelsr   r   	ri   r{   r   rL   _r(   axesaxes0_labelsexpecteds	            r   test_scatter_matrix_axisz+TestDataFramePlots.test_scatter_matrix_axis   s    G$!00JJ''1-EArryy,,Q/??HI ''eL 	$!	D	 Awqz'';;=$<24AB11M	 	s   C88Dc                 $   t        j                  d       t        j                  }d }|r#t        j
                  j                  dd      \  }}t        t        j                  j                  d      j                  d            }|d   dz
  dz  |d<   t        j                  t        d      5  t        ||d	|
      }d d d        d   d   j                   j#                         }g d}t%        ||       t'        |dddd       y # 1 sw Y   JxY w)Nr}   rC      r~   r   r    Fr   r   r   )z-1.25z-1.0z-0.75z-0.5r   r   r   r   r   s	            r    test_scatter_matrix_axis_smallerz3TestDataFramePlots.test_scatter_matrix_axis_smaller   s    G$!00JJ''1-EArryy,,R0@@IJAa1 ''eL 	$!	D	 Awqz'';;=5<24AB11M	 	s   -DDc                     t        j                  d       5  t        t        j                  |d       d d d        y # 1 sw Y   y xY wNNamer   class_column)re   rf   r   r
   andrews_curvesri   r   s     r   test_andrews_curves_no_warningz1TestDataFramePlots.test_andrews_curves_no_warning   s>     ''- 	Xh55TPVW	X 	X 	X	   <A
linecolors)z#556270z#4ECDC4z#C7F464)
dodgerblue
aquamarineseagreenr(   r   r    rZ   r   r   BCr   c                     t        |t              r|j                  |      }t        t        j
                  |d|      }t        |j                         d d ||d   d d        y Nr   r   r   colorrZ   r   mapping)rP   strgetfixturevaluer   r
   r   r   	get_lines)ri   requestr(   r   rL   s        r   test_andrews_curves_linecolorsz1TestDataFramePlots.test_andrews_curves_linecolors   s_    . b#((,B##2F*
 	LLN3BJ6
3B	
r   c                 d   t        |t              r|j                  |      }t        j                  dd|d   j                               D cg c]  }t        j                  |       }}t        t        j                  |d|      }t        |j                         d d ||d   d d        y c c}w )Nr   r   r   r   rZ   r   )rP   r   r   rb   linspacenuniquecmjetr   r
   r   r   r   )ri   r   r(   ncmapsrL   s         r   test_andrews_curves_cmapz+TestDataFramePlots.test_andrews_curves_cmap   s      b#((,B$&KK1bj6H6H6J$KLqLL##2F%
 	bllnSb)eRZPSQS_U	 Ms   B-c                     g d}t        g dg dg d|d      }t        j                  |d|      }|j                         \  }}t	        ||       y Nbgrr   r    rC   r   r   r   )r   )r   r
   r   get_legend_handles_labelsr   ri   colorsr(   rL   handlesr   s         r   test_andrews_curves_handlez-TestDataFramePlots.test_andrews_curves_handle  sK     YYYPVWX$$Rv>113
g&1r   r   c                     |}t        t        j                  |d|      }t        |j	                         d d ||d   d d        y r   )r   r
   parallel_coordinatesr   r   )ri   r   r   r(   rL   s        r    test_parallel_coordinates_colorsz3TestDataFramePlots.test_parallel_coordinates_colors  sJ     ))&PU
 	bllnSb)eRZPSQS_Ur   c                 V   |}t        t        j                  |dt        j                        }t        j                  dd|d   j                               D cg c]!  }t        j                  j	                  |      # }}t        |j                         d d ||d   d d        y c c}w )Nr   r   r   colormapr   r   rZ   r   )r   r
   r   r   r   rb   r   r   r   r   r   )ri   r   r(   rL   r   r   s         r   test_parallel_coordinates_cmapz1TestDataFramePlots.test_parallel_coordinates_cmap  s    ))VV	
 )+Aq"V*:L:L:N(OP1APPbllnSb)eRZPSQS_U Qs   &B&c                 4   |}t        t        j                  |d      }t        |j	                               }t        |j
                  j                               }t        t        j                  |dd      }t        |j	                               ||z
  k(  sJ y )Nr   r   F)r   r   axvlines)r   r
   r   r=   r   xaxisget_ticklabels)ri   r   r(   rL   nlinesnxtickss         r   #test_parallel_coordinates_line_diffz6TestDataFramePlots.test_parallel_coordinates_line_diff&  s    ))&
 R\\^$bhh--/0))&SX
 2<<>"v'7888r   c                     |}g d}t        g dg dg d|d      }t        j                  |d|      }|j                         \  }}t	        ||       y r   )r   r
   r   r   r   )ri   r   r(   r   rL   r   r   s          r   !test_parallel_coordinates_handlesz4TestDataFramePlots.test_parallel_coordinates_handles5  sP     YYYPVWX**2vVD113
g&1r   z$ignore:Attempting to set:UserWarningc                 X   t        t        t        d            t        d      D cg c]  }d c}t        d      D cg c]  }d c}z   t        d      D cg c]  }d c}z   d      }t        j                  |dd	      }|j                         \  }}t        |D cg c]  }|j                          c}|d
      }t        |d       }t        t        |dd       t        |dd        d
      }	|	D ]  \  }
}|
d   |d   k  r|
d   |d   k  rJ  y c c}w c c}w c c}w c c}w )N   rZ   r    rC   r   )featclassr   T)sort_labelsstrictc                     | d   S )Nr   rM   )r2   s    r   <lambda>zQTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<lambda>O  s    aPQd r   )keyr   )	r   listranger
   r   r   zip	get_colorsorted)ri   r   r(   rL   	polylinesra   polylinecolor_label_tuplesordered_color_label_tuplesprev_next_tupelsprevnxts               r   ,test_parallel_coordinates_with_sorted_labelsz?TestDataFramePlots.test_parallel_coordinates_with_sorted_labels?  s5    U2Y%*2Y/!/#Bi(1()#Bi(1()
 **2wDI88:	6 2;<hX!<fT
 &,,>N%S"+Ab12+AB/0

 * 	9ID#7SV#Q#a&(888	9! 0(( =s   	D
	D	D" D'c                     t        j                  d       5  t        t        j                  |d       d d d        y # 1 sw Y   y xY wr   )re   rf   r   r
   radvizr   s     r   test_radviz_no_warningz)TestDataFramePlots.test_radviz_no_warningY  s9    ''- 	PhooTO	P 	P 	Pr   c                     |}t        t        j                  |d|      }|j                  d d D cg c]  }|j	                         dk7  s| }}t        |d d ||d   d d        y c c}w )Nr   r      r+   rZ   
facecolorsr   )r   r
   r   patches	get_labelr   )ri   r   r   r(   rL   pr   s          r   test_radviz_colorz$TestDataFramePlots.test_radviz_color^  sn    
 OO2F%
 !jj"oE"1D1EEgcrlubj"oN Fs   A(
A(c                    |}t        t        j                  |dt        j                        }t        j                  dd|d   j                               D cg c]!  }t        j                  j	                  |      # }}|j                  d d D cg c]  }|j                         dk7  s| }}t        |||d   d d        y c c}w c c}w )	Nr   r   r   r   r   r+   rZ   r   )r   r
   r   r   r   rb   r   r   r   r   r  r   )ri   r   r(   rL   r   r   r  r   s           r   test_radviz_color_cmapz)TestDataFramePlots.test_radviz_color_cmapk  s    OO2FRVV
 )+Aq"V*:L:L:N(OP1APP jj"oE"1D1EEg%FCRI QEs   &CC
*C
c                     g dg dg dg}t        g dg dg dg dd      }t        j                  |d	|
      }|j                         \  }}t	        ||       y )N)        r        ?r  )r        ?r  r  )r  r  r  r  r   )r    r   rC   )rC   r    r   r   r   r   r   )r   )r   r
   r   r   r   r   s         r   test_radviz_colors_handlesz-TestDataFramePlots.test_radviz_colors_handlest  sV    &(<>RS))_U
 __Rv6113
g&1r   c                     |j                  dd      j                         }t        |j                        }|j	                  d|      }|D cg c]  }|j                          c}|k(  sJ y c c}w )Nr   r   axisTrO   titledropheadr   columnsr&   	get_title)ri   r   r(   r  r&   r  s         r   test_subplot_titlesz&TestDataFramePlots.test_subplot_titles}  sa    YYvAY&++-RZZ  wwEw2'+,!,555,s   A.c                    |j                  dd      j                         }t        |j                        }d}t	        j
                  t        |      5  |j                  dg |d       d d d        y # 1 sw Y   y xY w)	Nr   r   r  jThe length of `title` must equal the number of columns if using `title` of type `list` and `subplots=True`r!   Tzkittens > puppiesr  r  r  r   r  r#   r$   
ValueErrorr&   ri   r   r(   r  r?   s        r   test_subplot_titles_too_muchz/TestDataFramePlots.test_subplot_titles_too_much  sz    YYvAY&++-RZZ ? 	 ]]:S1 	HGGT)F5)F2E)FGG	H 	H 	Hs   A55A>c                     |j                  dd      j                         }t        |j                        }d}t	        j
                  t        |      5  |j                  d|d d        d d d        y # 1 sw Y   y xY w)	Nr   r   r  r  r!   Tr    r  r  r  s        r   test_subplot_titles_too_littlez1TestDataFramePlots.test_subplot_titles_too_little  sp    YYvAY&++-RZZ ? 	
 ]]:S1 	4GGTrG3	4 	4 	4s   A44A=c                     |j                  dd      j                         }t        |j                        }d}t	        j
                  t        |      5  |j                  d|       d d d        y # 1 sw Y   y xY w)Nr   r   r  zNUsing `title` of type `list` is not supported unless `subplots=True` is passedr!   Fr  r  r  s        r   "test_subplot_titles_subplots_falsez5TestDataFramePlots.test_subplot_titles_subplots_false  sj    YYvAY&++-RZZ ( 	 ]]:S1 	1GGU%G0	1 	1 	1s   A11A:c                 4   |j                  dd      j                         }t        |j                        }|j                  dd      j	                  dd|d d       }|D cg c]  }|D ]  }|j                           }}}|g |d d	 d
k(  sJ y c c}}w )Nr   r   r  
SepalWidthTr    r    r   )rO   layoutr  rC   r+   r  )ri   r   r(   r  r&   sublistrL   
title_lists           r   )test_subplot_titles_numeric_square_layoutz<TestDataFramePlots.test_subplot_titles_numeric_square_layout  s    YYvAY&++-RZZ ww|!w,11&cr
 2 
 59K7KRbllnKnK
K-uRay-"---- Ls   $Bc                 Z   t        t        j                  d            }t        j                  |d       t        j
                  j                  d       j                         }t        j                  |d       t        j
                  j                  d       j                         }||k7  sJ y )N)rZ   rZ   r   )r   rb   zerosr
   r   r   r   )ri   r(   rand1rand2s       r   $test_get_standard_colors_random_seedz7TestDataFramePlots.test_get_standard_colors_random_seed  s}    rxx)* 	%%b!,		%%d+224%%b!,		%%d+224~~r   c                 F    t        dd      }t        dd      }||k(  sJ y )Nr   r   
color_typer   )ri   color1color2s      r   $test_get_standard_colors_consistencyz7TestDataFramePlots.test_get_standard_colors_consistency  s*     %Q8<$Q8<r   c                     t        dd      }t        dd      }t        dd      }t        |      dk(  sJ t        |      dk(  sJ t        |      dk(  sJ y )Nr   defaultr-  	   r   )r   r=   )ri   r/  r0  color3s       r   +test_get_standard_colors_default_num_colorsz>TestDataFramePlots.test_get_standard_colors_default_num_colors  s\    $Q9=$Q9=$RI>6{a6{a6{b   r   c           	      :   t        g dg dg dg dg dg dd      }|j                  j                         j                  j	                         }|j                         dd	 D cg c]  }|j                          c}t        fd
D              sJ y c c}w )N)z
2017-02-03z
2017-03-03z
2017-01-01)zAlice Andersz	Bob BakerzCharlie Chaplin)gzGag\($@g     L@)i  ix	     )  i  i	  )4   r9      )zaccount-startclientbalancezdb-idzproxy-idrankr   rC   c              3   .   K   | ]  }|d    k(    yw)r   NrM   ).0r   r   s     r   	<genexpr>z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>  s     :%5F1I%:s   )r   r<  value_countsr&   r4   get_childrenget_facecolorall)ri   r(   rL   rectr   s       @r   test_plot_single_colorz)TestDataFramePlots.test_plot_single_color  s    !KJ6*-%	
 YY##%**..035??3DQq3IJ4$$$&J:6:::: Ks   'Bc                 T   t         j                  j                  t        d            }t	        d|      }t        |      t        |      k(  sJ t        t        j                  j                  d      j                  d      t        d            }t         j                  j                  t        j                  ddd	            }|j                  j                  j                  d
|      }|j                   d   j#                         |j                   d   j#                         k(  sJ y )NrB   r   r   r    )0      ABCDr  r      )rM     )figsizer      )r   r   gnuplotr   r   r=   r   rb   r   r   r   r   r   r   r&   r4   r   rD  )ri   color_beforecolor_afterr(   
color_listr  s         r   %test_get_standard_colors_no_appendingz8TestDataFramePlots.test_get_standard_colors_no_appending  s    
 vv~~eAh/)!<@;3|#4444II!!!$44W=tF|
 VV^^BKK1b$9:
DDIIMM'M<yy|))+qyy}/J/J/LLLLr   r5   r4   r1   c                    ddg}ddgt        t        j                  j                  d      j                  d      |      }ddd}|j	                  ||	      }|d
k(  r5|j                         ddd   D cg c]  }|j                         dd  }}n.|j                         dd D cg c]  }|j                          }}t        fdt        |      D              sJ y c c}w c c}w )Nar   )r	  gQ?g333333?)g333333?ffffff?rX  r    r"  rL  )r   rW  )r5   r   r4   r   rC   r   c              3   4   K   | ]  \  }}||   k(    y wNrM   )r@  rD   r   r   s      r   rA  z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>  s     Ru5HUO+Rs   )r   rb   r   r   r&   rC  rD  r   r   rE  	enumerate)	ri   r5   
data_filesdf1	dic_colorrL   rF  r   r   s	           @r   test_dictionary_colorz(TestDataFramePlots.test_dictionary_color  s     3Z
$o6		--a077?T)0@A	XX4yX15==?__=NqQRSTu=UVTd((*1R0VFV35<<>!A3FG4dnn&GFGR	&@QRRRR WGs   8C#*C(c                 P   t         j                  j                  ddd      t         j                  j                  ddd      g}t        dddgit	        ddg            }|j
                  j                         }t        d t        |j                         |d	
      D              sJ y )Nr   r   r   TotalrW  r    rD   c              3   d   K   | ](  \  }}|j                         |j                         k(   * y wrZ  get_textr@  rW  r   s      r   rA  z3TestDataFramePlots.test_bar_plot.<locals>.<genexpr>  -      
1 ZZ\QZZ\)
   .0Tr   )
r   textTextr   r   r&   r4   rE  r   get_xticklabels)ri   r   r(   plot_bars       r   test_bar_plotz TestDataFramePlots.test_bar_plot  s     HHMM!Q,chhmmAq'.JKaV G%	
 77;;= 
H446N
 
 	
 
r   c                 D   t        ddddddg      }|j                  j                  dd       }t        j                  j                  ddd      t        j                  j                  ddd      g}t        d	 t        |j                         |d
      D              sJ y )Nr   r   )wordvalue	knowledger    ro  )r2   legend1c              3   d   K   | ](  \  }}|j                         |j                         k(   * y wrZ  rd  )r@  actualr   s      r   rA  zPTestDataFramePlots.test_barh_plot_labels_mixed_integer_string.<locals>.<genexpr>  s1      
  OO!2!2!44
rh  Tr   )	r   r&   barhr   ri  rj  rE  r   get_yticklabels)ri   r(   	plot_barhexpected_yticklabelss       r   *test_barh_plot_labels_mixed_integer_stringz=TestDataFramePlots.test_barh_plot_labels_mixed_integer_string  s     Q/+PQ1RSTGGLL6$L7	HHMM!Q$HHMM!Q, 
  
$'))+-A$%
 
 	
 
r   c                    t         j                  j                  j                  }t        j
                  j                         }|j                  dd      }|j                  d|d   d         |d   d<   |j                  d|d   d         |d   d<   |d   d   j                          |d   d   j                           ||d   d   d      sJ  ||d   d   d      rJ  ||d   d   d      sJ  ||d   d	   d      rJ y )
Nr    rJ     r   r   sharex   r2   rC   )
r
   _matplotlibtools_has_externally_shared_axisr   r   figurerO   add_subplottwinxri   r>   rU   plotss       r   &test_has_externally_shared_axis_x_axisz9TestDataFramePlots.test_has_externally_shared_axis_x_axis$      ##))EEjj!Q" ooc%(1+o>aooc%(1+o>a 	aa E!HQK%%%aS)))E!HQK%%%aS))))r   c                    t         j                  j                  j                  }t        j
                  j                         }|j                  dd      }|j                  d|d   d         |d   d<   |j                  d|d   d         |d   d<   |d   d   j                          |d   d   j                           ||d   d   d      sJ  ||d   d   d      rJ  ||d   d   d      sJ  ||d	   d   d      rJ y )
NrJ  r    A  r   r   shareyiE  r3   rC   )
r
   r  r  r  r   r   r  rO   r  twinyr  s       r   &test_has_externally_shared_axis_y_axisz9TestDataFramePlots.test_has_externally_shared_axis_y_axis=  r  r   c                 l   t         j                  j                  j                  }t        j
                  j                         }|j                  dd      }|j                  d|d   d         |d   d<   d}t        j                  t        |      5   ||d   d   d	       d d d        y # 1 sw Y   y xY w)
NrJ  r    r  r   r   r  z&needs 'x' or 'y' as a second parameterr!   z)r
   r  r  r  r   r   r  rO   r  r#   r$   r  )ri   r>   rU   r  r?   s        r   4test_has_externally_shared_axis_invalid_compare_axiszGTestDataFramePlots.test_has_externally_shared_axis_invalid_compare_axisV  s     ##))EEjj!Q" ooc%(1+o>a 7]]:S1 	#q!c"	# 	# 	#s   B**B3c                     t        t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      }t
        j                  j                         }|j                  dd      }|j                  d|d   d         |d   d<   |j                  d	|d   d         |d   d<   |d   d   j                         }|d   d   j                         }|d
   j                  |d   d   d      j                  d       |d
   j                  |d   d          |d
   j                  |d   d   d      j                  d       |d
   j                  |d   d          |d
   j                  |d   d   d      j                  d       |d
   j                  |d   d          |d   j                  |d       |d   j                  |d       |d   d   j                  j                         j                         rJ |d   d   j                  j                         j                         sJ |d   d   j                  j                         j                         rJ y )Nr    rZ   )rW  r   rC   r|  r   r   r}  r  rW  zExternal share only)rL   r  z"this label should never be visible)rL   zInternal share (twin) onlyz#this label should always be visibleBothr   green)rL   r   yellow)r   rb   r   r   r   r   r   r  rO   r  r  r&   
set_xlabelr   r  get_visible)ri   r(   rU   r  twin_ax1twin_ax2s         r   test_externally_shared_axesz.TestDataFramePlots.test_externally_shared_axesg  sc    YY**1-==bAYY**1-==bA
 jj!Q" ooc%(1+o>aooc%(1+o>a 8A;$$&8A;$$& 	3a+@ALL0	
 	3a$
3a+GHSS1	
 	3a$
3a62==0	
 	3a$ 	30
318A;$$..0<<>>>Qx{  **,88:::8A;$$..0<<>>>>r   c                     t        dgt        d      g      }t        |j                         t	        ddi      }t        |j                  j
                         y )Nr  z2022-02-22 22:22:22rb  r   )r   r   r   r&   r   r4   )ri   r(   ss      r   -test_plot_bar_axis_units_timestamp_conversionz@TestDataFramePlots.test_plot_bar_axis_units_timestamp_conversion  sK     E234
 	"''"C:!&&**%r   c                    t         j                  j                  ddd      t         j                  j                  ddd      g}t        ddgt	        ddd      g      }t        |j                  j                         t        d	 t        |j                  j                         j                         |d
      D              sJ y )Nr   z	([0, 1],)r   z	([1, 2],)r    both)closedrb  c              3   d   K   | ](  \  }}|j                         |j                         k(   * y wrZ  rd  rf  s      r   rA  zFTestDataFramePlots.test_bar_plt_xaxis_intervalrange.<locals>.<genexpr>  rg  rh  Tr   )r   ri  rj  r   r   r   r&   r4   rE  r   rk  )ri   r   r  s      r    test_bar_plt_xaxis_intervalrangez3TestDataFramePlots.test_bar_plt_xaxis_intervalrange  s     HHMM!Q4chhmmAq+6VWF!!Qv67
 	!&&**% 
AFFJJL88:HTR
 
 	
 
r   N)/rt   ru   rv   r#   rw   rx   r   r   slowr   r   rb   r   r   r   r   r   r   r   r   r   r   filterwarningsr   r   r  r  r
  r  r  r  r  r&  r+  r1  r6  rG  rU  r_  rm  rz  r  r  r  r  r  r  rM   r   r   rz   rz      s   [[[5$-8N 9N0 [[[5$-8N 9N0 [[X X
 [[[[-4	
 [[..q1AA"E..q1AA"E..q1AA"E EBJ	
	

 ,
 [[[[..q1AA"E..q1AA"E..q1AA"E EBJ	
	
V V [[2 2 [[[[	*,TUV	 
V [[
V 
V [[9 9 [[2 2 [[ FG9 H92P
 [[	*,TUO	OJ26
H
4
1	.	 !; M" [[VeV_5S 6S"
"
 *2*2#".?`
&
r   rz   c                  b    t         j                  j                  d      j                  ddd      S )NrC   r   d   rB   )rb   r   r   integersrM   r   r   df_bar_datar    s&    99  #,,QQ77r   c                 >    t        | | d d d   | d   | d   d      }|S )Nr   r   r   r   r   D)r   )r  	df_bar_dfs     r   r  r    s6    TrT"QR		
I r   c           
         g }t        t        |            D ]  }t        j                  ||   j	                  t
        j                        D cg c]C  }|j                         | v r/|j                         |j                         |j                         fE c}      }|j                  t        |g d              |S c c}w )N)x_coordy_coordheight)r   r  )r   r=   rb   arrayfindobjrN   	Rectangle
get_heightget_xget_yappendr   )r  rL   subplot_divisionsubplot_data_df_listir2   subplot_datas          r   _df_bar_xyheight_from_ax_helperr    s     3'() 

xx As}}5<<>[0 AGGIq||~6
 	##<1QR	


  s   AB>
c                    t        t        |            D cg c]:  }|j                  t        |       |z  t        |       |dz   z   j                         < }}t        |      dk(  r|j                  d d |d   f   }n#|j                  d d |f   j                  d      }t        t        |            D ]  }||   }|dk(  r0|d   dk(  j                         sJ |d   j                  |d         }n|d   z   }|dz   t        |      k(  rt        j                  ||dd       p||dz      d   }	t        j                  ||	dd        y c c}w )Nr   r   r  r  r  F)check_namescheck_dtype)
r   r=   ilocreset_indexlocsumrE  addre   assert_series_equal)
r  r  subplot_data_dfsubplot_columnsr  subplot_sliced_by_sourceexpected_total_height	sliced_dfheight_iternext_start_coords
             r   _df_bar_subplot_checkerr    sx   
 s?+,	   	q 3{#3q1u#=	

+-	    ?q  )a1C.C D )a.@ A E E1 E M3'( ,Q/	6i(A-22444#I.229X3FGK%	((;;Kq5C((""2SX
  8A>yI""-5e# s   ?Ecolumns_usedr   r   r   r  c                     ||   }|g}|j                  |dd      }t        | ||      }t        t        |            D ]  }t	        | |||   ||           y Nr4   TrO   r5   stackedr&   r  r   r=   r  r  r  r  df_bar_df_trimmedr  rL   r  r  s           r   #test_bar_1_subplot_1_double_stackedr    s{    !,/$~			)9t		TB:R) 3+,- 
*,@,CEUVWEX	

r   )r   r   r   )r   r   r   )r  r   r   c                     ||   }|d   |d   f|d   fg}|j                  |dd      }t        | ||      }t        t        |            D ]  }t	        | |||   ||           y )Nr   r   r    r4   Tr  r  r  s           r   #test_bar_2_subplot_1_double_stackedr  	  s     ",/%a,q/:\!_<NO			)9t		TB:R) 3+,- 
*,@,CEUVWEX	

r   r  r   r   )r   r  )r   r  )r   r   )r   r   )r  r   )r   r  )r   r   c                     |j                  |dd      }t        | ||      }t        t        |            D ]  }t	        | |||   ||           y r  r  r  r  r  rL   r  r  s         r   #test_bar_2_subplot_2_double_stackedr    se     
!1t	LB:R) 3+,- 
$8$;=Ma=P	

r   )r   r  r   )r   r   r  )r  r   r   c                     |j                  |dd      }t        | ||      }t        t        |            D ]  }t	        | |||   ||           y r  r  r  s         r   $test_bar_2_subplots_1_triple_stackedr  -  se    
 
!1t	LB:R) 3+,- 
$8$;=Ma=P	

r   c                     g d}|j                  ddd      }t        | ||      }t        t        |            D ]  }t	        | |||   ||           y )Nr  Tr4   r  r  r  s         r   test_bar_subplots_stacking_boolr  <  sh    3	E4	@B:R) 3+,- 
$8$;=Ma=P	

r   c                  `    t        g dt        d            } | j                  ddg d       y )N)r   rZ   rZ   rZ   )r   r   r   r   )rZ   r   r   rZ   rK  rL  Tr4   r  rO   r5   r  r   r   r&   r'   s    r   !test_plot_bar_label_count_defaultr  H  s*    	>V
B GGT-AGBr   c                      t        g dt        d            } t        j                  d      }t	        j
                  t        |      5  | j                  dgdg d	       d d d        y # 1 sw Y   y xY w)
Nr  rK  rL  z?The number of titles (4) must equal the number of subplots (3).r!   r  r4   )zA&Br   r  zExtra Titler  )r   r   reescaper#   r$   r  r&   )r(   error_regexs     r   'test_plot_bar_label_count_expected_failr  O  si    	>V
B ))IK 
z	5 

 \2 	 	

 
 
s   	A**A3c                  b    t        g dt        d            } | j                  dgdddg       y )	Nr  rK  rL  )r   r   r  r4   zA&B&Dr   r  r  r'   s    r   *test_plot_bar_label_count_expected_successr  ^  s0    	>V
B GGo&U7C.GIr   )>__doc__rS   numpyrb   r#   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   r   r	   r
   r   pandas._testing_testingre   pandas.tests.plotting.commonr   r   r   r   r   r   r   rN   r   r  !pandas.plotting._matplotlib.styler   fixturer   skip_if_installedr)   r@   rw   rx   r9   
_all_kindsrc   reshaper   rV   rX   rz   r  r  r  r  r  r  r  r  r  r  r  r  rM   r   r   <module>r     s   ( 	   ) )
 
 
   f,'f-.V) 	 A ?i ? ? l# $D !6!6!A!AB
Yyryy},,Q23VE!H5EF eAh<+\1-	 C	H HB\
 \
~ 8 8 	i 	 	 & H 3*sCj3*)MN

 O

 _oG



 	Z 	Z 	Z 	Z 	

 )O+<>OP
	
	
C
Jr   