o
    _~#gqb                     @   s`  d Z ddlZddlZddlZddlm  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dZedZedZej de
fd	d
Z!e"ddd Z#dd Z$ej%&dej'j(ej%&de
e)d*ddee+dgej%&dee+dedddedddgdd Z,G dd dZ-G dd dZ.dS )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returnc                 C   s   t | ddddS )z*
    The iris dataset as a DataFrame.
    iodatacsvziris.csv)r
   )datapath r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/plotting/test_misc.pyiris"   s   r   c                  C   sL   t dddgi} tjtdd |   W d    d S 1 sw   Y  d S )NA      z#matplotlib is required for plottingmatch)r   pytestraisesImportErrorplot)dfr   r   r   test_import_error_message*   s   
"r#   c                  C   sF  t jjj} d}tjt|d | dg g i d W d    n1 s!w   Y  d}tjt|d | dttddd gi d W d    n1 sGw   Y  | dt	 dgd	d
ddd\}}}}|dksdJ |d	ksjJ |d
kspJ |ddiksxJ | dttdg i d\}}}}|d u sJ |d u sJ |dksJ t
|dksJ d S )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)r,   kindgridr/   zpandas.plotting._matplotlib   )r	   _corePlotAccessor_get_call_argsr   r   	TypeErrorr   objectr   len)funcmsgr+   r,   r.   r'   r   r   r   test_get_accessor_args3   s:   

r9   r.   r            index
2020-01-01periodsc                 C   sh   t  \}}||_i }| dv r!t|trt|  d ddd}|jd| |d| |t	j
 d S )N)hexbinscatterpiez not supported with Seriesr   r   )r+   r,   )r.   axr   )pltsubplotsr=   
isinstancer   r   skipr!   savefigosdevnull)r.   r   r=   figrD   r'   r   r   r   test_savefigU   s   

rM   c                   @   s:   e Zd Zdd Zejdi ddigdd Zdd	 Zd
S )TestSeriesPlotsc                 C   s   ddl m} ttjdtjdtddddd}td  t	||d	 t	||j
d	 ||d
d}W d    n1 s:w   Y  t|d
gd d S )Nr   )autocorrelation_plot
   r(   r>   r?   tsr=   name)seriesTest)label)labels)pandas.plottingrO   r   nparangefloat64r   tmassert_produces_warningr   valuesr   )selfrO   serrD   r   r   r   test_autocorrelation_plotn   s   
z)TestSeriesPlots.test_autocorrelation_plotr'   lagr;   c                 C   sF   ddl m} ttjdtjdtddddd}t|fd	|i| d S )
Nr   )lag_plotrP   r(   r>   r?   rQ   rR   rT   )rX   rc   r   rY   rZ   r[   r   r   )r_   r'   rc   r`   r   r   r   test_lag_plot~   s   
zTestSeriesPlots.test_lag_plotc                 C   s@   ddl m} ttjdtjdtddddd}t||dd	 d S )
Nr   )bootstrap_plotrP   r(   r>   r?   rQ   rR   )rT   size)rX   re   r   rY   rZ   r[   r   r   )r_   re   r`   r   r   r   test_bootstrap_plot   s   
z#TestSeriesPlots.test_bootstrap_plotN)	__name__
__module____qualname__ra   r   markparametrizerd   rg   r   r   r   r   rN   m   s
    

rN   c                   @   s  e Zd Zejdddgdd Zejdddgdd Zejjdd	 Z	ejjejd
dg dgejdde
ejddejddejdddgd dgdd Zejjejdde
ejddejddejdddgd dgdd Zejjdd Zejjejddg dgdd Zejjdd Zejjdd Zejjd d! Zejd"d#d$ Zd%d& Zejddg dgd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Z d7d8 Z!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%ejdAdBdCgdDdE Z&dFdG Z'dHdI Z(dJdK Z)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVS )WTestDataFramePlots	pass_axisFTc           	      C   s   t d tj}d }|rtjdd\}}ttj	
dd}tjtdd t||d|d}W d    n1 s:w   Y  |d	 d	 j }g d
}t|| t|dddd	d d S )Nscipyr<   r   d   r<   Fcheck_stacklevel皙?framerange_paddingrD   r   )z-202   Z   
xlabelsizexrot
ylabelsizeyrotr   importorskipr	   scatter_matrixmplpyplotrF   r   rY   randomdefault_rngstandard_normalr\   r]   UserWarningr   yaxisget_majorticklabelsr   r   	r_   rn   r   rD   _r"   axesaxes0_labelsexpectedr   r   r   test_scatter_matrix_axis   s$   

z+TestDataFramePlots.test_scatter_matrix_axisc           	      C   s   t d tj}d }|rtjdd\}}ttj	
dd}|d d d |d< tjtdd t||d	|d
}W d    n1 sDw   Y  |d d j }g d}t|| t|ddddd d S )Nro   r<      rp   r   r   Frr   rt   ru   )z-1.0z-0.5z0.0rz   r{   r|   r   r   r   r   r    test_scatter_matrix_axis_smaller   s&   

z3TestDataFramePlots.test_scatter_matrix_axis_smallerc                 C   N   ddl m} |}td  t||dd W d    d S 1 s w   Y  d S )Nr   andrews_curvesNamerv   class_column)rX   r   r\   r]   r   )r_   r   r   r"   r   r   r   test_andrews_curves_no_warning   s
   "z1TestDataFramePlots.test_andrews_curves_no_warning
linecolors)z#556270z#4ECDC4z#C7F464)
dodgerblue
aquamarineseagreenr"   r   r   rP   r   r   BCr   c                 C   sZ   ddl m} t|tr||}t||d|d}t| d d ||d d d d d S )Nr   r   r   rv   r   colorrP   r   mapping)rX   r   rG   strgetfixturevaluer   r   	get_lines)r_   requestr"   r   r   rD   r   r   r   test_andrews_curves_linecolors   s   


z1TestDataFramePlots.test_andrews_curves_linecolorsc                 C   sz   ddl m} t|tr||}dd tdd|d  D }t||d|d}t	|
 d d ||d d d d	 d S )
Nr   r   c                 S   s   g | ]}t |qS r   )cmjet.0nr   r   r   
<listcomp>      z?TestDataFramePlots.test_andrews_curves_cmap.<locals>.<listcomp>r   r   r   rP   r   )rX   r   rG   r   r   rY   linspacenuniquer   r   r   )r_   r   r"   r   cmapsrD   r   r   r   test_andrews_curves_cmap   s   

 *z+TestDataFramePlots.test_andrews_curves_cmapc                 C   s\   ddl m} g d}tg dg dg d|d}||d|d}| \}}t||d d S )	Nr   r   bgrr   r   r<   r   r   r   r   )rX   r   r   get_legend_handles_labelsr   )r_   r   colorsr"   rD   handlesr   r   r   r   test_andrews_curves_handle  s   z-TestDataFramePlots.test_andrews_curves_handler   c                 C   sJ   ddl m} |}t||d|d}t| d d ||d d d d d S )Nr   parallel_coordinatesr   r   rP   r   )rX   r   r   r   r   )r_   r   r   r   r"   rD   r   r   r    test_parallel_coordinates_colors  s   *z3TestDataFramePlots.test_parallel_coordinates_colorsc                    s|   ddl m  ddlm} |}t||d jd} fddtdd|d  D }t	|
 d d	 ||d d d	 d
 d S )Nr   r   r   r   rv   r   colormapc                       g | ]}  |qS r   r   r   r   r   r   r   0  r   zETestDataFramePlots.test_parallel_coordinates_cmap.<locals>.<listcomp>r   rP   r   )r   r   rX   r   r   r   rY   r   r   r   r   )r_   r   r   r"   rD   r   r   r   r   test_parallel_coordinates_cmap%  s   
$*z1TestDataFramePlots.test_parallel_coordinates_cmapc                 C   sd   ddl m} |}t||dd}t| }t|j }t||ddd}t| || ks0J d S )Nr   r   r   r   F)rv   r   axvlines)rX   r   r   r6   r   xaxisget_ticklabels)r_   r   r   r"   rD   nlinesnxticksr   r   r   #test_parallel_coordinates_line_diff3  s   z6TestDataFramePlots.test_parallel_coordinates_line_diffc                 C   s`   ddl m} |}g d}tg dg dg d|d}||d|d}| \}}t||d d S )	Nr   r   r   r   r   r   r   r   )rX   r   r   r   r   )r_   r   r   r"   r   rD   r   r   r   r   r   !test_parallel_coordinates_handlesB  s   z4TestDataFramePlots.test_parallel_coordinates_handlesz$ignore:Attempting to set:UserWarningc                 C   s   ddl m} tttddd tdD dd tdD  dd tdD  d	}||d
dd}| \}}tdd |D |}t|dd d}tt|dd t|dd }|D ]\}	}
|	d |
d k rp|	d |
d k srJ q\dS )z
For #15908r   r      c                 S      g | ]}d qS )r   r   r   r   r   r   r   r   V      zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>rP   c                 S   r   )r<   r   r   r   r   r   r   W  r   c                 S   r   )r   r   r   r   r   r   r   X  r   )featclassr   T)sort_labelsc                 S      g | ]}|  qS r   	get_color)r   polyliner   r   r   r   ^      c                 S   s   | d S )Nr   r   )r+   r   r   r   <lambda>`  s    zQTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<lambda>)keyr   N)rX   r   r   listranger   zipsorted)r_   r   r"   rD   	polylinesrW   color_label_tuplesordered_color_label_tuplesprev_next_tupelsprevnxtr   r   r   ,test_parallel_coordinates_with_sorted_labelsN  s,   
&z?TestDataFramePlots.test_parallel_coordinates_with_sorted_labelsc                 C   r   )Nr   radvizr   r   )rX   r   r\   r]   r   )r_   r   r   r"   r   r   r   test_radviz_no_warningh  s
   "z)TestDataFramePlots.test_radviz_no_warningc                 C   s^   ddl m} |}t||d|d}dd |jd d D }t|d d ||d d d d	 d S )
Nr   r   r   r   c                 S      g | ]
}|  d kr|qS r$   	get_labelr   pr   r   r   r   z      z8TestDataFramePlots.test_radviz_color.<locals>.<listcomp>   rP   
facecolorsr   )rX   r   r   patchesr   )r_   r   r   r   r"   rD   r   r   r   r   test_radviz_colorp  s
   &z$TestDataFramePlots.test_radviz_colorc                    s   ddl m  ddlm} |}t||d jd} fddtdd|d  D }d	d |j	d d
 D }t
|||d d d d d S )Nr   r   r   r   r   c                    r   r   r   r   r   r   r   r     r   z=TestDataFramePlots.test_radviz_color_cmap.<locals>.<listcomp>r   c                 S   r   r   r   r   r   r   r   r     r   r   rP   r   )r   r   rX   r   r   r   rY   r   r   r   r   )r_   r   r   r"   rD   r   r   r   r   r   test_radviz_color_cmap}  s   $z)TestDataFramePlots.test_radviz_color_cmapc                 C   sn   ddl m} g dg dg dg}tg dg dg dg d	d
}||d|d}| \}}t||d d S )Nr   r   )        r         ?r   )r         ?r   r   )r   r   r   r   r   )r   r   r<   )r<   r   r   r   r   r   r   )r   )rX   r   r   r   r   )r_   r   r   r"   rD   r   r   r   r   r   test_radviz_colors_handles  s   z-TestDataFramePlots.test_radviz_colors_handlesc                 C   sD   |j ddd }t|j}|jd|d}dd |D |ks J d S )Nr   r   axisTrF   titlec                 S   r   r   	get_titler   r   r   r   r     r   z:TestDataFramePlots.test_subplot_titles.<locals>.<listcomp>dropheadr   columnsr!   )r_   r   r"   r  r!   r   r   r   test_subplot_titles  s   
z&TestDataFramePlots.test_subplot_titlesc                 C   sh   |j ddd }t|j}d}tjt|d |jd|dg d W d    d S 1 s-w   Y  d S )	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!   r_   r   r"   r  r8   r   r   r   test_subplot_titles_too_much  s   
"z/TestDataFramePlots.test_subplot_titles_too_muchc                 C   sj   |j ddd }t|j}d}tjt|d |jd|d d d W d    d S 1 s.w   Y  d S )	Nr   r   r   r
  r   Tr   r  r  r  r   r   r   test_subplot_titles_too_little  s   
"z1TestDataFramePlots.test_subplot_titles_too_littlec                 C   sb   |j ddd }t|j}d}tjt|d |jd|d W d    d S 1 s*w   Y  d S )Nr   r   r   zNUsing `title` of type `list` is not supported unless `subplots=True` is passedr   Fr  r  r  r   r   r   "test_subplot_titles_subplots_false  s   
"z5TestDataFramePlots.test_subplot_titles_subplots_falsec                 C   sj   |j ddd }t|j}|j dddjdd|d d d}d	d
 |D }||d d dg ks3J d S )Nr   r   r   
SepalWidthTr   r   r   )rF   layoutr  c                 S   s   g | ]}|D ]}|  qqS r   r  )r   sublistrD   r   r   r   r     s    zPTestDataFramePlots.test_subplot_titles_numeric_square_layout.<locals>.<listcomp>r<   r$   r  )r_   r   r"   r  r!   
title_listr   r   r   )test_subplot_titles_numeric_square_layout  s   
z<TestDataFramePlots.test_subplot_titles_numeric_square_layoutc                 C   sV   t td}t|d tjd  }t|d tjd  }||ks)J d S )N)rP   rP   r   )r   rY   zerosr	   r   r   r   )r_   r"   rand1rand2r   r   r   $test_get_standard_colors_random_seed  s   z7TestDataFramePlots.test_get_standard_colors_random_seedc                 C   s4   ddl m} |ddd}|ddd}||ksJ d S )Nr   get_standard_colorsr   r   
color_type)!pandas.plotting._matplotlib.styler  )r_   r  color1color2r   r   r   $test_get_standard_colors_consistency  s   z7TestDataFramePlots.test_get_standard_colors_consistencyc                 C   sd   ddl m} |ddd}|ddd}|ddd}t|dks J t|dks(J t|dks0J d S )Nr   r  r   defaultr  	   r   )r  r  r6   )r_   r  r   r!  color3r   r   r   +test_get_standard_colors_default_num_colors  s   z>TestDataFramePlots.test_get_standard_colors_default_num_colorsc                    sv   t g dg dg dg dg dg dd}|j j }dd	 | d
d D  t fdd D s9J d S )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   r(      )zaccount-startclientbalancezdb-idzproxy-idrankc                 S   r   r   get_facecolorr   rectr   r   r   r     r   z=TestDataFramePlots.test_plot_single_color.<locals>.<listcomp>r   r<   c                 3   s    | ]	}| d  kV  qdS )r   Nr   )r   r   r   r   r   	<genexpr>  s    z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>)r   r+  value_countsr!   r-   get_childrenall)r_   r"   rD   r   r2  r   test_plot_single_color  s   
z)TestDataFramePlots.test_plot_single_colorc                 C   s   ddl m} ddlm} |td}|d|d}t|t|ks#J ttj	
ddtd	d
}|tddd}|jjjd|d}|jd  |jd  ksUJ d S )Nr   r   r  r;   r   r   r   )0      ABCDr     )r<     )figsizer      )r   r   r  r  gnuplotr   r6   r   rY   r   r   r   r   r   r   r!   r-   r   r/  )r_   r   r  color_beforecolor_afterr"   
color_listr   r   r   r   %test_get_standard_colors_no_appending  s   $z8TestDataFramePlots.test_get_standard_colors_no_appendingr.   r-   r*   c                    s   ddg}ddg t tjdd|d}ddd}|j||d	}|d
kr4dd | ddd D }ndd | dd D }t fddt|D sPJ d S )Nar   )r   gQ?g333333?)g333333?ffffff?rF  r   r  r;  )r   rE  )r.   r   r-   c                 S   s   g | ]
}|  d d qS )r   r   r.  r0  r   r   r   r     r   z<TestDataFramePlots.test_dictionary_color.<locals>.<listcomp>r   r<   c                 S   r   r   r   r0  r   r   r   r     r   c                 3   s     | ]\}}| | kV  qd S Nr   )r   r=   r   r   r   r   r3    s    z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>)	r   rY   r   r   r!   r5  r   r6  	enumerate)r_   r.   
data_filesdf1	dic_colorrD   r   r   rH  r   test_dictionary_color  s   
"z(TestDataFramePlots.test_dictionary_colorc                 C   sn   ddl m} |ddd|dddg}tdddgitddgd}|j }td	d
 t| |D s5J d S )Nr   Textrx   r   TotalrE  r   r=   c                 s   $    | ]\}}|  |  kV  qd S rG  get_textr   rE  r   r   r   r   r3  /  
    
z3TestDataFramePlots.test_bar_plot.<locals>.<genexpr>)	matplotlib.textrO  r   r   r!   r-   r6  r   get_xticklabels)r_   rO  r   r"   plot_barr   r   r   test_bar_plot!  s   

z TestDataFramePlots.test_bar_plotc                 C   sp   ddl m} tddddddg}|jjdd d}|ddd	|dddg}td
d t| |D s6J d S )Nr   rN  r   )wordvalue	knowledger   r[  )r+   legend1c                 s   rR  rG  rS  )r   actualr   r   r   r   r3  <  rV  zPTestDataFramePlots.test_barh_plot_labels_mixed_integer_string.<locals>.<genexpr>)rW  rO  r   r!   barhr6  r   get_yticklabels)r_   rO  r"   	plot_barhexpected_yticklabelsr   r   r   *test_barh_plot_labels_mixed_integer_string4  s   z=TestDataFramePlots.test_barh_plot_labels_mixed_integer_stringc                 C   s   t jjj}tj }|dd}|jd|d d d|d d< |jd|d d d|d d< |d d 	  |d d 	  ||d d dsIJ ||d d drTJ ||d d ds_J ||d d	 drjJ d S )
Nr   r9     r   r   sharex   r+   r<   )
r	   _matplotlibtools_has_externally_shared_axisr   r   figurerF   add_subplottwinxr_   r7   rL   plotsr   r   r   &test_has_externally_shared_axis_x_axisC     

z9TestDataFramePlots.test_has_externally_shared_axis_x_axisc                 C   s   t jjj}tj }|dd}|jd|d d d|d d< |jd|d d d|d d< |d d 	  |d d 	  ||d d dsIJ ||d d drTJ ||d d ds_J ||d	 d drjJ d S )
Nr9  r   A  r   r   shareyiE  r,   r<   )
r	   rj  rk  rl  r   r   rm  rF   rn  twinyrp  r   r   r   &test_has_externally_shared_axis_y_axis\  rs  z9TestDataFramePlots.test_has_externally_shared_axis_y_axisc                 C   s   t jjj}tj }|dd}|jd|d d d|d d< d}t	j
t|d ||d d d	 W d    d S 1 s=w   Y  d S )
Nr9  r   rt  r   r   ru  z&needs 'x' or 'y' as a second parameterr   z)r	   rj  rk  rl  r   r   rm  rF   rn  r   r   r  )r_   r7   rL   rq  r8   r   r   r   4test_has_externally_shared_axis_invalid_compare_axisu  s   

"zGTestDataFramePlots.test_has_externally_shared_axis_invalid_compare_axisc                 C   s  t tjddtjddd}tj }|dd}|j	d|d d d|d d< |j	d	|d d d|d d< |d d 
 }|d d 
 }|d
 j|d d ddd |d
 j|d d d |d
 j|d d ddd |d
 j|d d d |d
 j|d d ddd |d
 j|d d d |d j|dd |d j|dd |d d j  rJ |d d j  sJ |d d j  rJ d S )Nr   i  )rE  r   r<   rf  r   r   rg  ri  rE  zExternal share only)rD   r  z"this label should never be visible)rD   zInternal share (twin) onlyz#this label should always be visibleBothr   green)rD   r   yellow)r   rY   r   r   r   r   r   rm  rF   rn  ro  r!   
set_xlabelr   r   get_visible)r_   r"   rL   rq  twin_ax1twin_ax2r   r   r   test_externally_shared_axes  s8   
z.TestDataFramePlots.test_externally_shared_axesc                 C   s:   t dgtdgd}t|j tddi}t|jj d S )Nr   z2022-02-22 22:22:22rQ  r   )r   r   r   r!   r   r-   )r_   r"   sr   r   r   -test_plot_bar_axis_units_timestamp_conversion  s   
z@TestDataFramePlots.test_plot_bar_axis_units_timestamp_conversionc                 C   sv   ddl m} |ddd|dddg}tddgtddddgd	}t|jj td
d t|j 	 |D s9J d S )Nr   rN  z	([0, 1],)r   z	([1, 2],)r   both)closedrQ  c                 s   rR  rG  rS  rU  r   r   r   r3    rV  zFTestDataFramePlots.test_bar_plt_xaxis_intervalrange.<locals>.<genexpr>)
rW  rO  r   r   r   r!   r-   r6  r   rX  )r_   rO  r   r  r   r   r    test_bar_plt_xaxis_intervalrange  s   z3TestDataFramePlots.test_bar_plt_xaxis_intervalrangeN)/rh   ri   rj   r   rk   rl   r   r   slowr   r   rY   r   r   r   r   r   r   r   r   r   r   filterwarningsr   r   r   r   r   r	  r  r  r  r  r  r"  r&  r7  rD  rM  rZ  re  rr  rx  rz  r  r  r  r   r   r   r   rm      s    



	








			
0rm   )/__doc__rJ   numpyrY   r   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   r   r   r	   r
   pandas._testing_testingr\   pandas.tests.plotting.commonr   r   r   r   r   r   r   rE   r   fixturer   skip_if_installedr#   r9   rk   rl   r2   
_all_kindsrZ   reshaper   rM   rN   rm   r   r   r   r   <module>   s<    ,



""


'