U
    +ifN                     @   s   d Z ddlZddlZddlm  mZ ddlm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ ejj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Series)TestPlotBase_check_plot_worksc               	   C   s6   t dddgi} tjtdd |   W 5 Q R X d S )NA      z#matplotlib is required for plottingmatch)r   pytestraisesImportErrorplot)df r   R/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/plotting/test_misc.pytest_import_error_message   s    r   c               	   C   s"  t jjj} d}tjt|d | dg g i d W 5 Q R X d}tjt|d  | dttddd gi d W 5 Q R X | dt	 dgd	d
ddd\}}}}|dkst
|d	kst
|d
kst
|ddikst
| dttdg i d\}}}}|d kst
|d kst
|dkst
t|dkst
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   AssertionErrorlen)funcmsgr   r   r   r   r   r   r   test_get_accessor_args    s6    
$
r&   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestSeriesPlotsc                 C   s2   t | | dd l}|  t | _d| j_d S )Nr   ts)r   setup_method
matplotlibZ
rcdefaultstmZmakeTimeSeriesr(   name)selfmethodZmplr   r   r   r)   D   s
    
zTestSeriesPlots.setup_methodc              	   C   sb   ddl m} td 2 t|| jd t|| jjd || jdd}W 5 Q R X | j|dgd d S )Nr   )autocorrelation_plotseriesZTest)label)labels)pandas.plottingr/   r+   assert_produces_warningr   r(   valuesZ_check_legend_labels)r-   r/   axr   r   r   test_autocorrelation_plotM   s    z)TestSeriesPlots.test_autocorrelation_plotc                 C   s.   ddl m} t|| jd t|| jdd d S )Nr   )lag_plotr0      )r1   Zlag)r4   r9   r   r(   )r-   r9   r   r   r   test_lag_plotX   s    zTestSeriesPlots.test_lag_plotc                 C   s    ddl m} t|| jdd d S )Nr   )bootstrap_plot
   )r1   size)r4   r<   r   r(   )r-   r<   r   r   r   test_bootstrap_plot^   s    z#TestSeriesPlots.test_bootstrap_plotN)__name__
__module____qualname__r)   r8   r;   r?   r   r   r   r   r'   B   s   	r'   c                   @   s   e Zd Zejejdddgdd Zdd Z	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#S )$TestDataFramePlots	pass_axisFTc           
   	   C   s:  ddl m} tj}d }|r,| jdd\}}td tt	j
dd}W 5 Q R X tjt| d t|d|d|d	}W 5 Q R X |d d j }d
ddg}	| ||	 | j|ddddd |d d d |d< tt t|d|d|d	}W 5 Q R X |d d j }dddg}	| ||	 | j|ddddd d S )Nr   )mpl_ge_3_0_0   *   d   )Zraise_on_extra_warningsalwaysg?)filterwarningsframeZrange_paddingr7   z-202   Z   )Z
xlabelsizeZxrotZ
ylabelsizeZyrotr   z-1.0z-0.5z0.0)Z"pandas.plotting._matplotlib.compatrE   r   scatter_matrixpltsubplotsr+   Z
RNGContextr   nprandomrandnr5   UserWarningr   ZyaxisZget_majorticklabelsZ_check_text_labelsZ_check_ticks_props)
r-   rD   rE   rP   r7   _r   ZaxesZaxes0_labelsexpectedr   r   r   test_scatter_matrix_axisf   sF     

z+TestDataFramePlots.test_scatter_matrix_axisc              	      s  ddl m  ddlm} |}td  t||dd W 5 Q R X d}t||d|d}| j| d d ||d d d d	 d
ddg}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	 d
ddg}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ddg}	tdddgdddgdddg|	d}||d|	d}| \}
}| j|
|	d d S )Nr   cm)andrews_curvesNamerK   class_columnz#556270z#4ECDC4z#C7F464rK   r_   colorr=   
linecolorsmapping
dodgerblue
aquamarineseagreenrK   r_   Zcolormapc                    s   g | ]}  |qS r   jet.0nrZ   r   r   
<listcomp>   s     z:TestDataFramePlots.test_andrews_curves.<locals>.<listcomp>r   r   r   BCr]   c                    s   g | ]}  |qS r   rj   rl   rZ   r   r   ro      s     bgrr   rF   rb   rd   )r*   r[   r4   r\   r+   r5   r   _check_colors	get_linesrk   rS   linspacenuniquer   rT   randget_legend_handles_labels)r-   irisr\   r   rgbar7   cnamescmapslengthcolorshandlesr3   r   rZ   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	 d
ddg}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sJtdddg}
tdddgdddgdddg|
d}||d|
d}| \}}| j	||
d d S )Nr   rZ   parallel_coordinatesr]   r^   r`   ra   r=   rc   rf   rg   rh   ri   c                    s   g | ]}  |qS r   rj   rl   rZ   r   r   ro      s     z@TestDataFramePlots.test_parallel_coordinates.<locals>.<listcomp>r   F)rK   r_   Zaxvlinesrs   rt   ru   r   rF   rp   rv   rw   )r*   r[   r4   r   r   r#   ry   xaxisZget_ticklabelsrx   rk   rS   rz   r{   r"   r   r}   )r-   r~   r   r   r7   nlinesZnxticksr   r   r   r   r   r3   r   rZ   r   test_parallel_coordinates   sl         
        $     
$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 stqdS )z
For #15908r   r      c                 S   s   g | ]}d qS )r   r   rm   rW   r   r   r   ro     s     zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>r=   c                 S   s   g | ]}d qS )rF   r   r   r   r   r   ro     s     c                 S   s   g | ]}d qS )r   r   r   r   r   r   ro     s     )Zfeatclassr   T)Zsort_labelsc                 S   s   g | ]}|  qS r   	get_color)rm   Zpolyliner   r   r   ro   !  s     c                 S   s   | d S )Nr   r   )r   r   r   r   <lambda>#      zQTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<lambda>)keyr   N)	r4   r   r   listranger}   zipsortedr"   )r-   r   r   r7   Z	polylinesr3   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 5 Q R X d}t||d|d}dd	 |jd d
 D }| j|d d ||d d d d dddg}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 ddddgddddgddddgg}	tdddgdddgdddgdddgd}||d|	d}| \}
}| j|
|	d d S ) Nr   rZ   )radvizr]   r^   r`   ra   c                 S   s   g | ]}|  d kr|qS r   	get_labelrm   pr   r   r   ro   8  s      z2TestDataFramePlots.test_radviz.<locals>.<listcomp>   r=   )
facecolorsre   rf   rg   rh   c                 S   s   g | ]}|  d kr|qS r   r   r   r   r   r   ro   =  s      ri   c                    s   g | ]}  |qS r   rj   rl   rZ   r   r   ro   A  s     r   c                 S   s   g | ]}|  d kr|qS r   r   r   r   r   r   ro   B  s      g        g      ?      ?r   rF   rs   rt   ru   rp   rv   )r   )r*   r[   r4   r   r+   r5   r   patchesrx   rk   rS   rz   r{   r   r}   )r-   r~   r   r   r   r7   r   r   r   r   r   r3   r   rZ   r   test_radviz+  s0    $
$"$zTestDataFramePlots.test_radvizc              	   C   s  |j ddd }t|j}|jd|d}dd |D |ks@td}tjt|d	 |jd|d
g d W 5 Q R X tjt|d	 |jd|d d d W 5 Q R X d}tjt|d	 |jd|d W 5 Q R X |j dddjdd|d d d}dd |D }||d d dg kstd S )Nr]   r   )ZaxisT)rR   titlec                 S   s   g | ]}|  qS r   Z	get_titler   r   r   r   ro   T  s     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   )rR   Zlayoutr   c                 S   s   g | ]}|D ]}|  qqS r   r   )rm   Zsublistr7   r   r   r   ro   n  s       rF   r   )	Zdropheadr   columnsr   r"   r   r   
ValueError)r-   r~   r   r   r   r%   Z
title_listr   r   r   test_subplot_titlesM  s*    
   
z&TestDataFramePlots.test_subplot_titlesc                 C   sz   t td}t|d tj }t|d tj }||ksFtddlm} |ddd}|ddd}||ksvtd S )N)r=   r=   r   get_standard_colorsr   rT   
color_type)	r   rS   Zzerosr   r   rT   r"   !pandas.plotting._matplotlib.styler   )r-   r   Zrand1Zrand2r   color1color2r   r   r   $test_get_standard_colors_random_seedq  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@tt|dksPtt|dks`td S )Nr   r   r   defaultr   	   r   )r   r   r#   r"   )r-   r   r   r   Zcolor3r   r   r   +test_get_standard_colors_default_num_colors  s    z>TestDataFramePlots.test_get_standard_colors_default_num_colorsc              	      s   t dddgdddgddd	gd
ddgdddgdddgd}|j j }dd | dd D  t fdd D s~td S )Nz
2017-02-03z
2017-03-03z
2017-01-01zAlice Andersz	Bob BakerzCharlie ChaplingzGag\($@g     L@i  ix	     i  i  i	  4       )zaccount-startclientZbalancezdb-idzproxy-idZrankc                 S   s   g | ]}|  qS r   get_facecolorrm   rectr   r   r   ro     s     z=TestDataFramePlots.test_plot_single_color.<locals>.<listcomp>r   rF   c                 3   s   | ]}| d  kV  qdS )r   Nr   )rm   rb   r   r   r   	<genexpr>  s     z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>)r   r   Zvalue_countsr   r   get_childrenallr"   )r-   r   r7   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sFttt	j
ddtd	d
}|t	ddd}|jjjd|d}|jd  |jd  kstd S )Nr   rZ   r   r:   r   rv   0      ZABCDr      )r      )Zfigsizerb      )r*   r[   r   r   gnuplotr   r#   r"   r   rS   rT   rU   r   rz   r   r   r   r   r   )r-   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 sxt|jd|d	}dd |	 dd D }t fddt|D std S )Nars   )r   gQ?g333333?)g333333?ffffff?r   r   r   )rs   r   r   )r   rb   c                 S   s   g | ]}|  d d qS )r   r   r   r   r   r   r   ro     s     z<TestDataFramePlots.test_dictionary_color.<locals>.<listcomp>r   rF   c                 3   s   | ]\}}| | kV  qd S Nr   rm   indexrb   rX   r   r   r     s     z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>r   c                 S   s   g | ]}|  qS r   r   r   r   r   r   ro     s     c                 3   s   | ]\}}| | kV  qd S r   r   r   r   r   r   r     s     )
r   rS   rT   r|   r   r   r   	enumerater"   ry   )r-   
data_filesZdf1Z	dic_colorr7   r   r   r   r   test_dictionary_color  s    
z(TestDataFramePlots.test_dictionary_colorc                 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st	||d d drt	||d d dst	||d d	 drt	d S )
Nr   r      r   r   Zsharex   r   rF   )
r   _matplotlibtools_has_externally_shared_axisrQ   figurerR   add_subplottwinxr"   r-   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st	||d d drt	||d d dst	||d	 d drt	d S )
Nr   r   A  r   r   ZshareyiE  r   rF   )
r   r   r   r   rQ   r   rR   r   Ztwinyr"   r   r   r   r   &test_has_externally_shared_axis_y_axis  s    

z9TestDataFramePlots.test_has_externally_shared_axis_y_axisc              	   C   sr   t jjj}| j }|dd}|jd|d d d|d d< d}tj	t
|d ||d d d	 W 5 Q R X d S )
Nr   r   r   r   r   r   z&needs 'x' or 'y' as a second parameterr	   z)r   r   r   r   rQ   r   rR   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  rxt|d d j  st|d d j  rtd S )Ni  )r   rs   r   rF   r   r   r   r   r   r   zExternal share only)r7   r   z"this label should never be visible)r7   zInternal share (twin) onlyz#this label should always be visibleZBothrs   green)r7   rb   yellow)r   rS   rT   rU   rQ   r   rR   r   r   r   Z
set_xlabelr   r   Zget_visibler"   )r-   r   r   r   Ztwin_ax1Ztwin_ax2r   r   r   test_externally_shared_axes  s0    
z.TestDataFramePlots.test_externally_shared_axesN)r@   rA   rB   tdZskip_if_no_scipyr   markZparametrizerY   r   r   rJ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   d   s$   .L/

"$rC   )__doc__numpyrS   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   Zpandas._testingZ_testingr+   Zpandas.tests.plotting.commonr   r   r4   r   r   ZslowZ
pytestmarkZskip_if_mplr   r&   Zskip_if_no_mplr'   rC   r   r   r   r   <module>   s   
"!