o
    ҷhE]                     @   s   d 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 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jdd Z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interval_rangeplotting)_check_colors_check_legend_labels_check_plot_works_check_text_labels_check_ticks_props
matplotlibzmatplotlib.cmc                  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)df r   R/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/plotting/test_misc.py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_namedata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_args&   s:   

r0   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   sz   ddl m} tj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tsname)seriesTest)label)labels)pandas.plottingr2   tmmakeTimeSeriesassert_produces_warningr
   valuesr	   )selfr2   seraxr   r   r   test_autocorrelation_plotI   s   z)TestSeriesPlots.test_autocorrelation_plotr   lag   c                 C   s0   ddl m} tjdd}t|fd|i| d S )Nr   )lag_plotr3   r4   r6   )r:   rE   r;   r<   r
   )r?   r   rE   r@   r   r   r   test_lag_plotU   s   zTestSeriesPlots.test_lag_plotc                 C   s*   ddl m} tjdd}t||dd d S )Nr   )bootstrap_plotr3   r4   
   )r6   size)r:   rG   r;   r<   r
   )r?   rG   r@   r   r   r   test_bootstrap_plot\   s   z#TestSeriesPlots.test_bootstrap_plotN)	__name__
__module____qualname__rB   r   markparametrizerF   rJ   r   r   r   r   r1   H   s
    
r1   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scipy   r   d   rS   Fcheck_stacklevel皙?framerange_paddingrA   r   )z-202   Z   
xlabelsizexrot
ylabelsizeyrotr   importorskipr   scatter_matrixmplpyplotsubplotsr   nprandomdefault_rngstandard_normalr;   r=   UserWarningr
   yaxisget_majorticklabelsr   r   	r?   rQ   rg   rA   _r   axesaxes0_labelsexpectedr   r   r   test_scatter_matrix_axisd   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 )NrR   rS      rT   r   r   FrV   rX   rY   )z-1.0z-0.5z0.0r^   r_   r`   re   rr   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rZ   class_column)r:   r|   r;   r=   r
   )r?   irisr|   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   rH   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}   rZ   r   colorrH   r   mapping)r:   r|   
isinstancestrgetfixturevaluer
   r   	get_lines)r?   requestr   r   r|   rA   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   rH   r   )r:   r|   r   r   r   rk   linspacenuniquer
   r   r   )r?   r   r   r|   cmapsrA   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   rS   r   r}   r   r   )r:   r|   r   get_legend_handles_labelsr   )r?   r|   colorsr   rA   handlesrs   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   rH   r   )r:   r   r
   r   r   )r?   r   r   r   r   rA   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}   rZ   r   colormapc                       g | ]}  |qS r   r   r   r   r   r   r      r   zETestDataFramePlots.test_parallel_coordinates_cmap.<locals>.<listcomp>r   rH   r   )r   r   r:   r   r
   r   rk   r   r   r   r   )r?   r   r   r   rA   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)rZ   r   axvlines)r:   r   r
   r-   r   xaxisget_ticklabels)r?   r   r   r   rA   nlinesnxticksr   r   r   #test_parallel_coordinates_line_diff  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   )r:   r   r   r   r   )r?   r   r   r   r   rA   r   rs   r   r   r   !test_parallel_coordinates_handles  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   rs   r   r   r   r   %      zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>rH   c                 S   r   )rS   r   r   r   r   r   r   &  r   c                 S   r   )r   r   r   r   r   r   r   '  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)r:   r   r   listranger   zipsorted)r?   r   r   rA   	polylinesr9   color_label_tuplesordered_color_label_tuplesprev_next_tupelsprevnxtr   r   r   ,test_parallel_coordinates_with_sorted_labels  s,   
&z?TestDataFramePlots.test_parallel_coordinates_with_sorted_labelsc                 C   rz   )Nr   radvizr}   r~   )r:   r   r;   r=   r
   )r?   r   r   r   r   r   r   test_radviz_no_warning7  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   I      z8TestDataFramePlots.test_radviz_color.<locals>.<listcomp>   rH   
facecolorsr   )r:   r   r
   patchesr   )r?   r   r   r   r   rA   r   r   r   r   test_radviz_color?  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   S  r   z=TestDataFramePlots.test_radviz_color_cmap.<locals>.<listcomp>r   c                 S   r   r   r   r   r   r   r   r   T  r   r   rH   r   )r   r   r:   r   r
   r   rk   r   r   r   r   )r?   r   r   r   rA   r   r   r   r   r   test_radviz_color_cmapL  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   rS   )rS   r   r   r   r   r}   r   )r   )r:   r   r   r   r   )r?   r   r   r   rA   r   rs   r   r   r   test_radviz_colors_handlesW  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rj   titlec                 S   r   r   	get_titler   r   r   r   r   i  r   z:TestDataFramePlots.test_subplot_titles.<locals>.<listcomp>dropheadr   columnsr   )r?   r   r   r   r   r   r   r   test_subplot_titlesb  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   r/   r   r   r   test_subplot_titles_too_muchk  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_littlew  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   )rj   layoutr   c                 S   s   g | ]}|D ]}|  qqS r   r   )r   sublistrA   r   r   r   r     s    zPTestDataFramePlots.test_subplot_titles_numeric_square_layout.<locals>.<listcomp>rS   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)rH   rH   r   )r   rk   zerosr   r   rl   rm   )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   rl   
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  r-   )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   rS   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   rA   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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  rD   r   r   r   )0      ABCDr      )r$     )figsizer      )r   r   r  r  gnuplotr   r-   r   rk   rl   rm   rn   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?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   rS   c                 S   r   r   r   r  r   r   r   r     r   c                 3   s     | ]\}}| | kV  qd S Nr   )r   indexr   rv   r   r   r    s    z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>)	r   rk   rl   rm   r   r  r   r  	enumerate)r?   r%   
data_filesdf1	dic_colorrA   r   r   r1  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   Textr\   r   Totalr-  r   r0  c                 s   $    | ]\}}|  |  kV  qd S r/  get_textr   r-  r   r   r   r   r    
    
z3TestDataFramePlots.test_bar_plot.<locals>.<genexpr>)	matplotlib.textr8  r   r   r   r$   r  r   get_xticklabels)r?   r8  rv   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   r7  r   )wordvalueknowledgr   rD  )r"   legend1c                 s   r;  r/  r<  )r   actualrv   r   r   r   r    r?  zPTestDataFramePlots.test_barh_plot_labels_mixed_integer_string.<locals>.<genexpr>)r@  r8  r   r   barhr  r   get_yticklabels)r?   r8  r   	plot_barhexpected_yticklabelsr   r   r   *test_barh_plot_labels_mixed_integer_string  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   r!     r   r   sharex   r"   rS   )
r   _matplotlibtools_has_externally_shared_axisrh   ri   figurerj   add_subplottwinxr?   r.   figplotsr   r   r   &test_has_externally_shared_axis_x_axis     

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 )
Nr!  r   A  r   r   shareyiE  r#   rS   )
r   rS  rT  rU  rh   ri   rV  rj   rW  twinyrY  r   r   r   &test_has_externally_shared_axis_y_axis+  r]  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 )
Nr!  r   r^  r   r   r_  z&needs 'x' or 'y' as a second parameterr   z)r   rS  rT  rU  rh   ri   rV  rj   rW  r   r   r   )r?   r.   rZ  r[  r/   r   r   r   4test_has_externally_shared_axis_invalid_compare_axisD  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   rS   rO  r   r   rP  rR  r-  zExternal share only)rA   r   z"this label should never be visible)rA   zInternal share (twin) onlyz#this label should always be visibleBothr   green)rA   r   yellow)r   rk   rl   rm   rn   rh   ri   rV  rj   rW  rX  r   
set_xlabelr   r   get_visible)r?   r   rZ  r[  twin_ax1twin_ax2r   r   r   test_externally_shared_axesU  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$   )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   r7  z	([0, 1],)r   z	([1, 2],)r   both)closedr:  c                 s   r;  r/  r<  r>  r   r   r   r    r?  zFTestDataFramePlots.test_bar_plt_xaxis_intervalrange.<locals>.<genexpr>)
r@  r8  r   r   r
   r   r$   r  r   rA  )r?   r8  rv   rm  r   r   r    test_bar_plt_xaxis_intervalrange  s   z3TestDataFramePlots.test_bar_plt_xaxis_intervalrangeN)/rK   rL   rM   r   rN   rO   rw   ry   slowr   r   rk   rl   rm   rn   r   r   r   r   r   r   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r  r
  r  r  r,  r6  rC  rN  r\  rb  rd  rl  rn  rq  r   r   r   r   rP   c   s    



	








			
0rP   ) __doc__numpyrk   r   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   r   pandas._testing_testingr;   pandas.tests.plotting.commonr   r	   r
   r   r   rf   rh   r   skip_if_mplr   r0   r1   rP   r   r   r   r   <module>   s     


"