a
    j=ic}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   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)df r   p/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/plotting/test_misc.py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_namedataargskwargsz.should not be called with positional arguments)ZdtypelinexybarF)r   kindgridr    zpandas.plotting._matplotlib   )plottingZ_coreZPlotAccessorZ_get_call_argsr   r   	TypeErrorr   objectr   len)funcmsgr   r   r   r   r   r   r   test_get_accessor_args!   s6    
.8
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 6 t||d t||jd ||dd}W d    n1 s^0    Y  | j|dgd d S )	Nr   )autocorrelation_plottsname)seriesZTest)label)labels)pandas.plottingr*   tmmakeTimeSeriesassert_produces_warningr   valuesZ_check_legend_labels)selfr*   seraxr   r   r   test_autocorrelation_plotE   s    *z)TestSeriesPlots.test_autocorrelation_plotr   Zlag   c                 C   s0   ddl m} tjdd}t|fd|i| d S )Nr   )lag_plotr+   r,   r.   )r1   r;   r2   r3   r   )r6   r   r;   r7   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+   r,   
   )r.   size)r1   r=   r2   r3   r   )r6   r=   r7   r   r   r   test_bootstrap_plotX   s    z#TestSeriesPlots.test_bootstrap_plotN)	__name__
__module____qualname__r9   r   markparametrizer<   r@   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   sj  t j}d }|r | jdd\}}td" ttj	dd}W d    n1 sR0    Y  tj
tdd" t|d|d|d}W d    n1 s0    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 s"0    Y  |d	 d	 j }g d}| || | j|dddd	d d S )N   *   d   F)Zcheck_stacklevelalwaysg?)filterwarningsframeZrange_paddingr8   r   )z-202   Z   )Z
xlabelsizeZxrotZ
ylabelsizeZyrotr   )z-1.0z-0.5z0.0)r"   scatter_matrixpltsubplotsr2   Z
RNGContextr   nprandomrandnr4   UserWarningr   ZyaxisZget_majorticklabelsZ_check_text_labelsZ_check_ticks_props)	r6   rG   rR   r8   _r   ZaxesZaxes0_labelsexpectedr   r   r   test_scatter_matrix_axisa   s>    0$&z+TestDataFramePlots.test_scatter_matrix_axisc                    s  ddl m  ddlm} |}td  t||dd W d    n1 sJ0    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rM   class_columnz#556270z#4ECDC4z#C7F464rM   ra   colorr>   
linecolorsmappingZ
dodgerblueZ
aquamarineZseagreenrM   ra   Zcolormapc                    s   g | ]}  |qS r   jet.0nr\   r   r   
<listcomp>       z:TestDataFramePlots.test_andrews_curves.<locals>.<listcomp>r
   r	   r	   BCr_   c                    s   g | ]}  |qS r   rj   rl   r\   r   r   ro      rp   bgrr
   r   rH   rd   rf   )
matplotlibr]   r1   r^   r2   r4   r   _check_colors	get_linesrk   rU   linspacenuniquer   rV   randget_legend_handles_labels)r6   irisr^   r   rgbar8   cnamescmapslengthcolorshandlesr0   r   r\   r   test_andrews_curves   sz    ,
$


	
$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sHJ g d}
tg dg dg d|
d}||d|
d}| \}}| j	||
d d S )Nr   r\   parallel_coordinatesr_   r`   rb   rc   r>   re   rh   ri   c                    s   g | ]}  |qS r   rj   rl   r\   r   r   ro      rp   z@TestDataFramePlots.test_parallel_coordinates.<locals>.<listcomp>r
   F)rM   ra   Zaxvlinesrt   rx   rq   ry   rz   )r{   r]   r1   r   r   r%   r}   xaxisZget_ticklabelsr|   rk   rU   r~   r   r   r   )r6   r   r   r   r8   nlinesZnxticksr   r   r   r   r   r0   r   r\   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 r|	d |
d k sJ qdS )z
For #15908r   r      c                 S   s   g | ]}d qS )r   r   rm   rY   r   r   r   ro     rp   zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>r>   c                 S   s   g | ]}d qS )rH   r   r   r   r   r   ro     rp   c                 S   s   g | ]}d qS )r
   r   r   r   r   r   ro     rp   )Zfeatclassr   T)Zsort_labelsc                 S   s   g | ]}|  qS r   	get_color)rm   Zpolyliner   r   r   ro     rp   c                 S   s   | d S )Nr
   r   )r   r   r   r   <lambda>  rp   zQTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<lambda>)keyr
   N)r1   r   r   listranger   zipsorted)r6   r   r   r8   Z	polylinesr0   Zcolor_label_tuplesZordered_color_label_tuplesZprev_next_tupelsprevZ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 sJ0    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   r\   )radvizr_   r`   rb   rc   c                 S   s   g | ]}|  d kr|qS r   	get_labelrm   pr   r   r   ro   1  rp   z2TestDataFramePlots.test_radviz.<locals>.<listcomp>   r>   )
facecolorsrg   rh   c                 S   s   g | ]}|  d kr|qS r   r   r   r   r   r   ro   6  rp   ri   c                    s   g | ]}  |qS r   rj   rl   r\   r   r   ro   :  rp   r
   c                 S   s   g | ]}|  d kr|qS r   r   r   r   r   r   ro   ;  rp   )        r         ?r   )r         ?r   r   )r   r   r   r   rx   )r   r
   rH   )rH   r   r
   rt   rq   ry   )r   )r{   r]   r1   r   r2   r4   r   patchesr|   rk   rU   r~   r   r   r   )r6   r   r   r   r   r8   r   r   r   r   r   r0   r   r\   r   test_radviz$  s0    ,$$zTestDataFramePlots.test_radvizc                 C   s\  |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|0    Y  tjt|d	& |jd|d d d W d    n1 s0    Y  d}tjt|d	 |jd|d W d    n1 s0    Y  |j dddjdd|d d d}dd |D }||d d dg ksXJ d S )Nr_   r
   )ZaxisT)rT   titlec                 S   s   g | ]}|  qS r   Z	get_titler   r   r   r   ro   M  rp   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 passedFZ
SepalWidth)r   r   r   )rT   Zlayoutr   c                 S   s   g | ]}|D ]}|  qqS r   r   )rm   Zsublistr8   r   r   r   ro   g  rp   rH   r   )Zdropheadr   columnsr   r   r   
ValueError)r6   r   r   r   r   r'   Z
title_listr   r   r   test_subplot_titlesF  s&    
24.z&TestDataFramePlots.test_subplot_titlesc                 C   sz   t td}t|d tj }t|d tj }||ksFJ ddlm} |ddd}|ddd}||ksvJ d S )N)r>   r>   r   get_standard_colorsr
   rV   
color_type)r   rU   Zzerosr"   r   rV   !pandas.plotting._matplotlib.styler   )r6   r   Zrand1Z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sPJ t|dks`J d S )Nr   r   r
   defaultr   	   r   )r   r   r%   )r6   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rm   rectr   r   r   ro     rp   z=TestDataFramePlots.test_plot_single_color.<locals>.<listcomp>r   rH   c                 3   s   | ]}| d  kV  qdS )r   Nr   )rm   rd   r   r   r   	<genexpr>  rp   z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>)r   r   Zvalue_countsr   r   get_childrenall)r6   r   r8   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   r:   r
   ry   0      ABCDr      )r      )Zfigsizerd      )r{   r]   r   r   gnuplotr   r%   r   rU   rV   rW   r   r~   r	   r   r   r   r   )r6   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_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 sxJ |jd|d	}dd | dd D }t fddt|D sJ d S )Naru   )r   gQ?g333333?)g333333?ffffff?r   r   r   )ru   r   r   )r   rd   c                 S   s   g | ]}|  d d qS )r   r   r   r   r   r   r   ro     rp   z<TestDataFramePlots.test_dictionary_color.<locals>.<listcomp>r   rH   c                 3   s   | ]\}}| | kV  qd S Nr   rm   indexrd   rZ   r   r   r     rp   z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>r   c                 S   s   g | ]}|  qS r   r   r   r   r   r   ro     rp   c                 3   s   | ]\}}| | kV  qd S r   r   r   r   r   r   r     rp   )	r   rU   rV   r   r   r   r   	enumerater}   )r6   
data_filesZdf1Z	dic_colorr8   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   TextrN   r
   ZTotalr   r   r   c                 s   s"   | ]\}}|  |  kV  qd S r   Zget_textrm   r   ru   r   r   r   r     s   z3TestDataFramePlots.test_bar_plot.<locals>.<genexpr>)	matplotlib.textr   r   r   r   r   r   r   get_xticklabels)r6   r   rZ   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knowledgr   r   )r   legend1c                 s   s"   | ]\}}|  |  kV  qd S r   r   )rm   actualrZ   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)r6   r   r   Z	plot_barhZ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sJ ||d d drJ ||d d dsJ ||d d	 drJ d S )
Nr   r      r
   r   Zsharex   r   rH   )	r"   _matplotlibtools_has_externally_shared_axisrS   figurerT   add_subplottwinxr6   r&   figplotsr   r   r   &test_has_externally_shared_axis_x_axis  s    

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sJ ||d d drJ ||d d dsJ ||d	 d drJ d S )
Nr   r   A  r   r
   ZshareyiE  r   rH   )	r"   r   r   r   rS   r   rT   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}| 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   rS   r   rT   r   r   r   r   )r6   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  rxJ |d d j  sJ |d d j  rJ d S )Ni  )r   ru   r   rH   r   r
   r   r   r   r   zExternal share only)r8   r   z"this label should never be visible)r8   zInternal share (twin) onlyz#this label should always be visibleZBothru   green)r8   rd   yellow)r   rU   rV   rW   rS   r   rT   r   r   r   Z
set_xlabelr   r   Zget_visible)r6   r   r   r   Ztwin_ax1Z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   )r6   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 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   e  s   zFTestDataFramePlots.test_bar_plt_xaxis_intervalrange.<locals>.<genexpr>)
r   r   r   r   r   r   r   r   r   r   )r6   r   rZ   r   r   r   r    test_bar_plt_xaxis_intervalrangeZ  s    z3TestDataFramePlots.test_bar_plt_xaxis_intervalrangeN)rA   rB   rC   tdZskip_if_no_scipyr   rD   rE   r[   Zslowr   r   rL   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   rF   _   s0   *
L
/

"$+rF   )__doc__numpyrU   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r   r   r   r   Zpandas._testingZ_testingr2   Zpandas.tests.plotting.commonr   r   r1   r"   Zskip_if_mplr   r(   Zskip_if_no_mplr)   rF   r   r   r   r   <module>   s   
"