o
    i}V                     @   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 ddlmZ ddlmZmZ ddlmZ ejdd Zdd ZejG d	d
 d
eZejG dd deZdS )z$ Test cases for misc plot functions     N)	DataFrameIndexSeries	Timestampinterval_range)TestPlotBase_check_plot_worksc                  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   Z/var/www/edux/Edux_v2/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   )plotting_corePlotAccessor_get_call_argsr   r   	TypeErrorr   objectr   len)funcmsgr   r   r    r   r   r   r   test_get_accessor_args!   s:   

r,   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jdd}td  t||d t||jd ||dd}W d    n1 s/w   Y  | j|dgd d S )	Nr   )autocorrelation_plottsname)seriesTest)label)labels)pandas.plottingr.   tmmakeTimeSeriesassert_produces_warningr   values_check_legend_labels)selfr.   seraxr   r   r   test_autocorrelation_plotE   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_plotr/   r0   r2   )r6   rB   r7   r8   r   )r<   r   rB   r=   r   r   r   test_lag_plotQ   s   zTestSeriesPlots.test_lag_plotc                 C   s*   ddl m} tjdd}t||dd d S )Nr   )bootstrap_plotr/   r0   
   )r2   size)r6   rD   r7   r8   r   )r<   rD   r=   r   r   r   test_bootstrap_plotX   s   z#TestSeriesPlots.test_bootstrap_plotN)	__name__
__module____qualname__r?   r   markparametrizerC   rG   r   r   r   r   r-   C   s
    
r-   c                   @   s   e Zd Zejejdddgdd Zejj	dd Z
ejj	dd	 Zejd
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+S ),TestDataFramePlots	pass_axisFTc           	      C   sh  t j}d }|r| jdd\}}td ttj	dd}W d    n1 s)w   Y  tj
tdd t|d|d|d}W d    n1 sIw   Y  |d	 d	 j }g d
}| || | j|dddd	d |d	 d d |d	< tj
tdd t|d|d|d}W d    n1 sw   Y  |d	 d	 j }g d}| || | j|dddd	d d S )N   *   d   F)check_stacklevelalwaysg?)filterwarningsframerange_paddingr>   r   )z-202   Z   )
xlabelsizexrot
ylabelsizeyrotr   )z-1.0z-0.5z0.0)r#   scatter_matrixpltsubplotsr7   
RNGContextr   nprandomrandnr9   UserWarningr   yaxisget_majorticklabels_check_text_labels_check_ticks_props)	r<   rN   r_   r>   _r   axesaxes0_labelsexpectedr   r   r   test_scatter_matrix_axisa   sD   z+TestDataFramePlots.test_scatter_matrix_axisc                    s  ddl m  ddlm} |}td  t||dd W d    n1 s%w   Y  d}t||d|d}| j| d d ||d d d d	 g d
}t||d|d}| j| d d ||d d d d	 t||d j	d} fddt
dd|d  D }| j| d d ||d d d d	 d}tt
j|t
j|t
j|dg| d}t||dd d}t||d|d}| j| d d ||d d d d	 g d
}t||d|d}| j| d d ||d d d d	 t||d j	d} fddt
dd|d  D }| j| d d ||d d d d	 g d}	tg dg dg d|	d}||d|	d}| \}
}| j|
|	d d S )Nr   cm)andrews_curvesNamerU   class_columnz#556270z#4ECDC4z#C7F464rU   ru   colorrE   
linecolorsmapping
dodgerblue
aquamarineseagreenrU   ru   colormapc                       g | ]}  |qS r   jet.0nrp   r   r   
<listcomp>       z:TestDataFramePlots.test_andrews_curves.<locals>.<listcomp>r
   r	   r	   BCrs   c                    r   r   r   r   rp   r   r   r      r   bgrr
   r   rO   rx   rz   )
matplotlibrq   r6   rr   r7   r9   r   _check_colors	get_linesr   rc   linspacenuniquer   rd   randget_legend_handles_labels)r<   irisrr   r   rgbar>   cnamescmapslengthcolorshandlesr5   r   rp   r   test_andrews_curves   s|   
$


	
$z&TestDataFramePlots.test_andrews_curvesc                    s  ddl m  ddlm} |}t||dd}t| }t|j }d}t||d|d}| j	| d d ||d d d d	 g d
}t||d|d}| j	| d d ||d d d d	 t||d j
d} fddtdd|d  D }	| j	| d d |	|d d d d	 t||ddd}t| || ksJ g d}
tg dg dg d|
d}||d|
d}| \}}| j	||
d d S )Nr   rp   parallel_coordinatesrs   rt   rv   rw   rE   ry   r|   r   c                    r   r   r   r   rp   r   r   r      r   z@TestDataFramePlots.test_parallel_coordinates.<locals>.<listcomp>r
   F)rU   ru   axvlinesr   r   r   r   r   )r   rq   r6   r   r   r)   r   xaxisget_ticklabelsr   r   rc   r   r   r   r   )r<   r   r   r   r>   nlinesnxticksr   r   r   r   r   r5   r   rp   r   test_parallel_coordinates   sH   
$z,TestDataFramePlots.test_parallel_coordinatesz$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   rk   r   r   r   r         zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>rE   c                 S   r   )rO   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)r6   r   r   listranger   zipsorted)r<   r   r   r>   	polylinesr5   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                    s  ddl m  ddlm} |}td  t||dd W d    n1 s%w   Y  d}t||d|d}dd	 |jd d
 D }| j|d d ||d d d d g d}t||d|d dd	 |jd d
 D }| j|||d d d d t||d j	d  fdd	t
dd|d  D }dd	 |jd d
 D }| j|||d d d d g dg dg dg}	tg dg dg dg dd}||d|	d}| \}
}| j|
|	d d S )Nr   rp   )radvizrs   rt   rv   rw   c                 S      g | ]
}|  d kr|qS r   	get_labelr   pr   r   r   r   1      z2TestDataFramePlots.test_radviz.<locals>.<listcomp>   rE   )
facecolorsr{   r|   c                 S   r   r   r   r   r   r   r   r   6  r   r   c                    r   r   r   r   rp   r   r   r   :  r   r
   c                 S   r   r   r   r   r   r   r   r   ;  r   )        r         ?r   )r         ?r   r   )r   r   r   r   r   )r   r
   rO   )rO   r   r
   r   r   r   )r   )r   rq   r6   r   r7   r9   r   patchesr   r   rc   r   r   r   r   )r<   r   r   r   r   r>   r   r   r   r   r   r5   r   rp   r   test_radviz$  s2   $$zTestDataFramePlots.test_radvizc                 C   sX  |j ddd }t|j}|jd|d}dd |D |ks J d}tjt|d	 |jd|d
g d W d    n1 s>w   Y  tjt|d	 |jd|d d d W d    n1 s`w   Y  d}tjt|d	 |jd|d W d    n1 sw   Y  |j dddjdd|d d d}dd |D }||d d dg ksJ d S )Nrs   r
   )axisT)ra   titlec                 S   r   r   	get_titler   r   r   r   r   M  r   z:TestDataFramePlots.test_subplot_titles.<locals>.<listcomp>zjThe length of `title` must equal the number of columns if using `title` of type `list` and `subplots=True`r   zkittens > puppiesr   zNUsing `title` of type `list` is not supported unless `subplots=True` is passedF
SepalWidth)r   r   r   )ra   layoutr   c                 S   s   g | ]}|D ]}|  qqS r   r   )r   sublistr>   r   r   r   r   g  s    rO   r   )dropheadr   columnsr   r   r   
ValueError)r<   r   r   r   r   r+   
title_listr   r   r   test_subplot_titlesF  s,   
z&TestDataFramePlots.test_subplot_titlesc                 C   sz   t td}t|d tj }t|d tj }||ks#J ddlm} |ddd}|ddd}||ks;J d S )N)rE   rE   r   get_standard_colorsr
   rd   
color_type)r   rc   zerosr#   r   rd   !pandas.plotting._matplotlib.styler   )r<   r   rand1rand2r   color1color2r   r   r   $test_get_standard_colors_random_seedj  s   

z7TestDataFramePlots.test_get_standard_colors_random_seedc                 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   rO   c                 3   s    | ]	}| d  kV  qdS )r   Nr   )r   rx   r   r   r   	<genexpr>  s    z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>)r   r   value_countsr   r   get_childrenall)r<   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s#J ttj	
ddtd	d
}|tddd}|jjjd|d}|jd  |jd  ksSJ d S )Nr   rp   r   rA   r
   r   0      ABCDr      )r     )figsizerx      )r   rq   r   r   gnuplotr   r)   r   rc   rd   re   r   r   r	   r   r   r   r   )r<   rq   r   color_beforecolor_afterr   
color_listr   r   r   r   %test_get_standard_colors_no_appending  s   $z8TestDataFramePlots.test_get_standard_colors_no_appendingc                    s   ddg}ddg t tjdd|d}ddd}|jd|d	}d
d | ddd D }t fddt|D s<J |jd|d	}dd | dd D }t fddt|D s_J d S )Nar   )r   gQ?g333333?)g333333?ffffff?r  r   r  )r   r  r   )r    rx   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   rO   c                 3        | ]\}}| | kV  qd S Nr   r   indexrx   rn   r   r   r         z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>r   c                 S   r   r   r   r   r   r   r   r     r   c                 3   r  r  r   r  r  r   r   r     r  )	r   rc   rd   r   r   r   r   	enumerater   )r<   
data_filesdf1	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 s5J d S )Nr   TextrW   r
   Totalr  r   r  c                 s   $    | ]\}}|  |  kV  qd S r  get_textr   r  r   r   r   r   r     
    
z3TestDataFramePlots.test_bar_plot.<locals>.<genexpr>)	matplotlib.textr  r   r   r   r   r   r   get_xticklabels)r<   r  rn   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   r  r
   )wordvalueknowledgr   r(  )r   legend1c                 s   r  r  r   )r   actualrn   r   r   r   r     r#  zPTestDataFramePlots.test_barh_plot_labels_mixed_integer_string.<locals>.<genexpr>)r$  r  r   r   barhr   r   get_yticklabels)r<   r  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}| 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   rO   )	r#   _matplotlibtools_has_externally_shared_axisr`   figurera   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}| 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   rO   )	r#   r7  r8  r9  r`   r:  ra   r;  twinyr=  r   r   r   &test_has_externally_shared_axis_y_axis  rA  z9TestDataFramePlots.test_has_externally_shared_axis_y_axisc                 C   s   t jjj}| 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   rB  r   r
   rC  z&needs 'x' or 'y' as a second parameterr   z)r#   r7  r8  r9  r`   r:  ra   r;  r   r   r   )r<   r*   r>  r?  r+   r   r   r   4test_has_externally_shared_axis_invalid_compare_axis  s   

"zGTestDataFramePlots.test_has_externally_shared_axis_invalid_compare_axisc                 C   s  t tjdtjdd}| 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 )Ni  )r  r   r   rO   r3  r
   r   r4  r6  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 visibleBothr   green)r>   rx   yellow)r   rc   rd   re   r`   r:  ra   r;  r<  r   
set_xlabelr   r   get_visible)r<   r   r>  r?  twin_ax1twin_ax2r   r   r   test_externally_shared_axes#  s0   
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_conversionN  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   r  z	([0, 1],)r
   z	([1, 2],)r   both)closedr  c                 s   r  r  r   r"  r   r   r   r   e  r#  zFTestDataFramePlots.test_bar_plt_xaxis_intervalrange.<locals>.<genexpr>)
r$  r  r   r   r   r   r   r   r   r%  )r<   r  rn   rQ  r   r   r    test_bar_plt_xaxis_intervalrangeZ  s   z3TestDataFramePlots.test_bar_plt_xaxis_intervalrangeN)rH   rI   rJ   tdskip_if_no_scipyr   rK   rL   ro   slowr   r   rT   r   r   r   r   r   r   r  r  r'  r2  r@  rF  rH  rP  rR  rU  r   r   r   r   rM   _   s2    *
L

/
"$+rM   )__doc__numpyrc   r   pandas.util._test_decoratorsutil_test_decoratorsrV  pandasr   r   r   r   r   pandas._testing_testingr7   pandas.tests.plotting.commonr   r   r6   r#   skip_if_mplr   r,   skip_if_no_mplr-   rM   r   r   r   r   <module>   s    
"