a
    Pfqb                     @   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 e
d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   X/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/plotting/test_misc.pyiris"   s    r   c                  C   sJ   t dddgi} tjtdd |   W d    n1 s<0    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   sN  t jjj} d}tjt|d  | dg g i d W d    n1 sB0    Y  d}tjt|d* | dttddd gi d W d    n1 s0    Y  | dt	 dgd	d
ddd\}}}}|dksJ |d	ksJ |d
ksJ |ddiksJ | dttdg i d\}}}}|d u sJ |d u s*J |dks8J t
|dksJJ d S )Nz@Called plot accessor for type list, expected Series or DataFramer    )backend_namer   argskwargsz.should not be called with positional argumentsZdtypelinexybarF)r+   kindgridr.   zpandas.plotting._matplotlib   )r	   Z_corePlotAccessorZ_get_call_argsr   r   	TypeErrorr   objectr   len)funcmsgr*   r+   r-   r'   r   r   r   test_get_accessor_args3   s6    
.8
r6   r-   r            index
2020-01-01Zperiodsc                 C   sh   t  \}}||_i }| dv rBt|tr8t|  d ddd}|jf | |d| |t	j
 d S )N)ZhexbinZscatterpiez not supported with Seriesr   r   )r*   r+   )r-   ax)pltsubplotsr:   
isinstancer   r   skipr!   Zsavefigosdevnull)r-   r   r:   figr>   r'   r   r   r   test_savefigU   s    

rF   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 6 t	||d	 t	||j
d	 ||d
d}W d    n1 st0    Y  t|d
gd d S )Nr   )autocorrelation_plot
   r(   r;   r<   tsr:   name)seriesZTest)label)labels)pandas.plottingrH   r   nparangefloat64r   tmassert_produces_warningr   valuesr   )selfrH   serr>   r   r   r   test_autocorrelation_plotn   s    
*z)TestSeriesPlots.test_autocorrelation_plotr'   Zlagr8   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_plotrI   r(   r;   r<   rJ   rK   rM   )rP   rZ   r   rQ   rR   rS   r   r   )rW   r'   rZ   rX   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_plotrI   r(   r;   r<   rJ   rK   )rM   size)rP   r\   r   rQ   rR   rS   r   r   )rW   r\   rX   r   r   r   test_bootstrap_plot   s    
z#TestSeriesPlots.test_bootstrap_plotN)	__name__
__module____qualname__rY   r   markparametrizer[   r^   r   r   r   r   rG   m   s   

rG   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 st0    Y  |d	 d	 j }g d
}t|| t|dddd	d d S )Nscipyr9   r   d   r9   FZcheck_stacklevel皙?frameZrange_paddingr>   r   )z-202   Z   Z
xlabelsizeZxrotZ
ylabelsizeZyrotr   importorskipr	   scatter_matrixmplpyplotr@   r   rQ   randomdefault_rngstandard_normalrT   rU   UserWarningr   ZyaxisZget_majorticklabelsr   r   	rW   re   rt   r>   _r"   ZaxesZ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 s0    Y  |d d j }g d}t|| t|ddddd d S )Nrf   r9      rg   r   r   Fri   rj   rk   )z-1.0z-0.5z0.0ro   rp   rq   rr   r{   r   r   r    test_scatter_matrix_axis_smaller   s$    
$
z3TestDataFramePlots.test_scatter_matrix_axis_smallerc                 C   sL   ddl m} |}td  t||dd W d    n1 s>0    Y  d S )Nr   andrews_curvesNamerl   class_column)rP   r   rT   rU   r   )rW   r   r   r"   r   r   r   test_andrews_curves_no_warning   s    z1TestDataFramePlots.test_andrews_curves_no_warning
linecolors)z#556270z#4ECDC4z#C7F464)Z
dodgerblueZ
aquamarineZseagreenr"   r   r   rI   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   rl   r   colorrI   r   mapping)rP   r   rA   strgetfixturevaluer   r   	get_lines)rW   requestr"   r   r   r>   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   rI   r   )rP   r   rA   r   r   rQ   linspacenuniquer   r   r   )rW   r   r"   r   cmapsr>   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   r9   r   r   r   r   )rP   r   r   get_legend_handles_labelsr   )rW   r   colorsr"   r>   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   rI   r   )rP   r   r   r   r   )rW   r   r   r   r"   r>   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   rl   r   Zcolormapc                    s   g | ]}  |qS r   r   r   r   r   r   r   0  r   zETestDataFramePlots.test_parallel_coordinates_cmap.<locals>.<listcomp>r   rI   r   )r   r   rP   r   r   r   rQ   r   r   r   r   )rW   r   r   r"   r>   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s`J d S )Nr   r   r   r   F)rl   r   Zaxvlines)rP   r   r   r3   r   xaxisZget_ticklabels)rW   r   r   r"   r>   nlinesZ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   )rP   r   r   r   r   )rW   r   r   r"   r   r>   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 r|	d |
d k sJ qdS )z
For #15908r   r      c                 S   s   g | ]}d qS )r   r   r   r|   r   r   r   r   V  r   zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>rI   c                 S   s   g | ]}d qS )r9   r   r   r   r   r   r   W  r   c                 S   s   g | ]}d qS )r   r   r   r   r   r   r   X  r   )Zfeatclassr   T)Zsort_labelsc                 S   s   g | ]}|  qS r   	get_color)r   Zpolyliner   r   r   r   ^  r   c                 S   s   | d S )Nr   r   )r*   r   r   r   <lambda>`  r   zQTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<lambda>)keyr   N)rP   r   r   listranger   zipsorted)rW   r   r"   r>   Z	polylinesrO   Zcolor_label_tuplesZordered_color_label_tuplesZprev_next_tupelsprevZnxtr   r   r   ,test_parallel_coordinates_with_sorted_labelsN  s*    
z?TestDataFramePlots.test_parallel_coordinates_with_sorted_labelsc                 C   sL   ddl m} |}td  t||dd W d    n1 s>0    Y  d S )Nr   radvizr   r   )rP   r   rT   rU   r   )rW   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   s   g | ]}|  d kr|qS r$   	get_labelr   pr   r   r   r   z  r   z8TestDataFramePlots.test_radviz_color.<locals>.<listcomp>   rI   
facecolorsr   )rP   r   r   patchesr   )rW   r   r   r   r"   r>   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                    s   g | ]}  |qS r   r   r   r   r   r   r     r   z=TestDataFramePlots.test_radviz_color_cmap.<locals>.<listcomp>r   c                 S   s   g | ]}|  d kr|qS r   r   r   r   r   r   r     r   r   rI   r   )r   r   rP   r   r   r   rQ   r   r   r   r   )rW   r   r   r"   r>   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   r9   )r9   r   r   r   r   r   r   )r   )rP   r   r   r   r   )rW   r   r   r"   r>   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   ZaxisTr@   titlec                 S   s   g | ]}|  qS r   Z	get_titler   r   r   r   r     r   z:TestDataFramePlots.test_subplot_titles.<locals>.<listcomp>dropheadr   columnsr!   )rW   r   r"   r   r!   r   r   r   test_subplot_titles  s    
z&TestDataFramePlots.test_subplot_titlesc                 C   sf   |j ddd }t|j}d}tjt|d$ |jd|dg d W d    n1 sX0    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!   rW   r   r"   r   r5   r   r   r   test_subplot_titles_too_much  s    
z/TestDataFramePlots.test_subplot_titles_too_muchc                 C   sh   |j ddd }t|j}d}tjt|d& |jd|d d d W d    n1 sZ0    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   s`   |j ddd }t|j}d}tjt|d |jd|d W d    n1 sR0    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sfJ d S )Nr   r   r   Z
SepalWidthTr   r   r   )r@   Zlayoutr   c                 S   s   g | ]}|D ]}|  qqS r   r   )r   Zsublistr>   r   r   r   r     r   zPTestDataFramePlots.test_subplot_titles_numeric_square_layout.<locals>.<listcomp>r9   r$   r   )rW   r   r"   r   r!   Z
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sRJ d S )N)rI   rI   r   )r   rQ   Zzerosr	   r   rw   rx   )rW   r"   Zrand1Z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s0J d S )Nr   get_standard_colorsr   rw   
color_type)!pandas.plotting._matplotlib.styler   )rW   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sPJ t|dks`J d S )Nr   r   r   defaultr   	   r   )r   r   r3   )rW   r   r   r   Z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 srJ 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clientZbalancezdb-idzproxy-idZrankc                 S   s   g | ]}|  qS r   get_facecolorr   rectr   r   r   r     r   z=TestDataFramePlots.test_plot_single_color.<locals>.<listcomp>r   r9   c                 3   s   | ]}| d  kV  qdS )r   Nr   )r   r   r   r   r   	<genexpr>  r   z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>)r   r   Zvalue_countsr!   r,   get_childrenall)rW   r"   r>   r   r   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sFJ ttj	
ddtd	d
}|tddd}|jjjd|d}|jd  |jd  ksJ d S )Nr   r   r   r8   r   r   r   )0      ZABCDr      )r     )Zfigsizer      )r   r   r   r   gnuplotr   r3   r   rQ   rw   rx   ry   r   r   r   r!   r,   r   r   )rW   r   r   Zcolor_beforeZcolor_afterr"   Z
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rhdd | ddd D }ndd | dd D }t fddt|D sJ d S )Nar   )r   gQ?g333333?)g333333?ffffff?r
  r   r   r  )r   r	  )r-   r   r,   c                 S   s   g | ]}|  d d qS )r   r   r   r   r   r   r   r     r   z<TestDataFramePlots.test_dictionary_color.<locals>.<listcomp>r   r9   c                 S   s   g | ]}|  qS r   r   r   r   r   r   r     r   c                 3   s   | ]\}}| | kV  qd S Nr   )r   r:   r   r}   r   r   r     r   z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>)	r   rQ   rw   rx   r!   r   r   r   	enumerate)rW   r-   
data_filesZdf1Z	dic_colorr>   r   r   r  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 sjJ d S )Nr   Textrm   r   ZTotalr	  r   r:   c                 s   s"   | ]\}}|  |  kV  qd S r  Zget_textr   r	  r   r   r   r   r   /  s   z3TestDataFramePlots.test_bar_plot.<locals>.<genexpr>)	matplotlib.textr  r   r   r!   r,   r   r   get_xticklabels)rW   r  r}   r"   Z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 slJ d S )Nr   r  r   )wordvalueZ	knowledger   r  )r*   Zlegend1c                 s   s"   | ]\}}|  |  kV  qd S r  r  )r   actualr}   r   r   r   r   <  s   zPTestDataFramePlots.test_barh_plot_labels_mixed_integer_string.<locals>.<genexpr>)r  r  r   r!   Zbarhr   r   Zget_yticklabels)rW   r  r"   Z	plot_barhZ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sJ ||d d drJ ||d d dsJ ||d d	 drJ d S )
Nr   r     r   r   Zsharex   r*   r9   )
r	   _matplotlibtools_has_externally_shared_axisru   rv   figurer@   add_subplottwinxrW   r4   rE   plotsr   r   r   &test_has_externally_shared_axis_x_axisC  s    

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sJ ||d d drJ ||d d dsJ ||d	 d drJ d S )
Nr  r   A  r   r   ZshareyiE  r+   r9   )
r	   r   r!  r"  ru   rv   r#  r@   r$  Ztwinyr&  r   r   r   &test_has_externally_shared_axis_y_axis\  s    

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    n1 sx0    Y  d S )
Nr  r   r)  r   r   r*  z&needs 'x' or 'y' as a second parameterr   z)r	   r   r!  r"  ru   rv   r#  r@   r$  r   r   r   )rW   r4   rE   r'  r5   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  )r	  r   r9   r  r   r   r  r  r	  zExternal share only)r>   r   z"this label should never be visible)r>   zInternal share (twin) onlyz#this label should always be visibleZBothr   green)r>   r   yellow)r   rQ   rw   rx   ry   ru   rv   r#  r@   r$  r%  r!   Z
set_xlabelr   r   Zget_visible)rW   r"   rE   r'  Ztwin_ax1Z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:22r  r   )r   r   r   r!   r   r,   )rW   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 srJ d S )Nr   r  z	([0, 1],)r   z	([1, 2],)r   Zboth)closedr  c                 s   s"   | ]\}}|  |  kV  qd S r  r  r  r   r   r   r     s   zFTestDataFramePlots.test_bar_plt_xaxis_intervalrange.<locals>.<genexpr>)
r  r  r   r   r   r!   r,   r   r   r  )rW   r  r}   r1  r   r   r    test_bar_plt_xaxis_intervalrange  s    z3TestDataFramePlots.test_bar_plt_xaxis_intervalrangeN)/r_   r`   ra   r   rb   rc   r~   r   Zslowr   r   rQ   rw   rx   ry   r   r   r   r   r   r   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r(  r+  r-  r0  r2  r4  r   r   r   r   rd      s   



	








			
0rd   )/__doc__rC   numpyrQ   r   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingrT   Zpandas.tests.plotting.commonr   r   r   r   r   rs   ru   r?   r   Zfixturer   Zskip_if_installedr#   r6   rb   rc   r0   Z
_all_kindsrR   Zreshaper   rF   rG   rd   r   r   r   r   <module>   s:   ,



""


'