a
    <bN                     @   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   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   o/Users/vegardjervell/Documents/master/model/venv/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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   sv   ddl m} td < t|| jd t|| jjd || jdd}W d    n1 sX0    Y  | 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_plotr/      )r0   Zlag)r3   r8   r   r'   )r,   r8   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
   )r0   size)r3   r;   r   r'   )r,   r;   r   r   r   test_bootstrap_plot^   s    z#TestSeriesPlots.test_bootstrap_plotN)__name__
__module____qualname__r(   r7   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   st  ddl m} tj}d }|r,| jdd\}}td" tt	j
dd}W d    n1 s^0    Y  tjt| 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t" t|d|d|d	}W d    n1 s,0    Y  |d d j }g d}	| ||	 | j|ddddd d S )Nr   )mpl_ge_3_0_0   *   d   )Zraise_on_extra_warningsalwaysg?)filterwarningsframeZrange_paddingr6   )z-202   Z   )Z
xlabelsizeZxrotZ
ylabelsizeZyrotr   )z-1.0z-0.5z0.0)Z"pandas.plotting._matplotlib.compatrD   r   scatter_matrixpltsubplotsr*   Z
RNGContextr   nprandomrandnr4   UserWarningr   ZyaxisZget_majorticklabelsZ_check_text_labelsZ_check_ticks_props)
r,   rC   rD   rO   r6   _r   ZaxesZaxes0_labelsexpectedr   r   r   test_scatter_matrix_axisf   sD    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rJ   class_columnz#556270z#4ECDC4z#C7F464rJ   r^   colorr<   
linecolorsmappingZ
dodgerblueZ
aquamarineZseagreenrJ   r^   Zcolormapc                    s   g | ]}  |qS r   jet.0nrY   r   r   
<listcomp>       z:TestDataFramePlots.test_andrews_curves.<locals>.<listcomp>r   r   r   BCr\   c                    s   g | ]}  |qS r   rg   ri   rY   r   r   rl      rm   bgrr   r   rE   ra   rc   )r)   rZ   r3   r[   r*   r4   r   _check_colors	get_linesrh   rR   linspacenuniquer   rS   randget_legend_handles_labels)r,   irisr[   r   rgbar6   cnamescmapslengthcolorshandlesr2   r   rY   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   rY   parallel_coordinatesr\   r]   r_   r`   r<   rb   re   rf   c                    s   g | ]}  |qS r   rg   ri   rY   r   r   rl      rm   z@TestDataFramePlots.test_parallel_coordinates.<locals>.<listcomp>r   F)rJ   r^   Zaxvlinesrq   ru   rn   rv   rw   )r)   rZ   r3   r   r   r"   ry   xaxisZget_ticklabelsrx   rh   rR   rz   r{   r   r}   )r,   r~   r   r   r6   nlinesZnxticksr   r   r   r   r   r2   r   rY   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   rj   rV   r   r   r   rl     rm   zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>r<   c                 S   s   g | ]}d qS )rE   r   r   r   r   r   rl     rm   c                 S   s   g | ]}d qS )r   r   r   r   r   r   rl     rm   )Zfeatclassr   T)Zsort_labelsc                 S   s   g | ]}|  qS r   Z	get_color)rj   Zpolyliner   r   r   rl   !  rm   c                 S   s   | d S )Nr   r   )r   r   r   r   <lambda>#  rm   zQTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<lambda>)keyr   N)r3   r   r   listranger}   zipsorted)r,   r   r   r6   Z	polylinesr2   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   rY   )radvizr\   r]   r_   r`   c                 S   s   g | ]}|  d kr|qS r   	get_labelrj   pr   r   r   rl   8  rm   z2TestDataFramePlots.test_radviz.<locals>.<listcomp>   r<   )
facecolorsrd   re   c                 S   s   g | ]}|  d kr|qS r   r   r   r   r   r   rl   =  rm   rf   c                    s   g | ]}  |qS r   rg   ri   rY   r   r   rl   A  rm   r   c                 S   s   g | ]}|  d kr|qS r   r   r   r   r   r   rl   B  rm   )        r         ?r   )r         ?r   r   )r   r   r   r   ru   )r   r   rE   )rE   r   r   rq   rn   rv   )r   )r)   rZ   r3   r   r*   r4   r   patchesrx   rh   rR   rz   r{   r   r}   )r,   r~   r   r   r   r6   r   r   r   r   r   r2   r   rY   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)rQ   titlec                 S   s   g | ]}|  qS r   Z	get_titler   r   r   r   rl   T  rm   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   )rQ   Zlayoutr   c                 S   s   g | ]}|D ]}|  qqS r   r   )rj   Zsublistr6   r   r   r   rl   n  rm   rE   r   )Zdropheadr   columnsr   r   r   
ValueError)r,   r~   r   r   r   r$   Z
title_listr   r   r   test_subplot_titlesM  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   rS   Z
color_type)r   rR   Zzerosr   r   rS   !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@J t|dksPJ t|dks`J d S )Nr   r   r   defaultr   	   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                    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rj   Zrectr   r   r   rl     rm   z=TestDataFramePlots.test_plot_single_color.<locals>.<listcomp>r   rE   c                 3   s   | ]}| d  kV  qdS )r   Nr   )rj   ra   r   r   r   	<genexpr>  rm   z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>)r   r   Zvalue_countsr   r   get_childrenall)r,   r   r6   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   rY   r   r9   r   rv   0      ABCDr      )r      )Zfigsizera      )r)   rZ   r   r   Zgnuplotr   r"   r   rR   rS   rT   r   rz   r   r   r   r   r   )r,   rZ   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arr   )r   gQ?g333333?)g333333?ffffff?r   r   r   )rr   r   r   )r   ra   c                 S   s   g | ]}|  d d qS )r   r   r   r   r   r   r   rl     rm   z<TestDataFramePlots.test_dictionary_color.<locals>.<listcomp>r   rE   c                 3   s   | ]\}}| | kV  qd S Nr   rj   indexra   rW   r   r   r     rm   z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>r   c                 S   s   g | ]}|  qS r   r   r   r   r   r   rl     rm   c                 3   s   | ]\}}| | kV  qd S r   r   r   r   r   r   r     rm   )	r   rR   rS   r|   r   r   r   	enumeratery   )r,   
data_filesZdf1Z	dic_colorr6   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sJ ||d d drJ ||d d dsJ ||d d	 drJ d S )
Nr   r      r   r   Zsharex   r   rE   )	r   _matplotlibtools_has_externally_shared_axisrP   figurerQ   add_subplottwinx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sJ ||d d drJ ||d d dsJ ||d	 d drJ d S )
Nr   r   A  r   r   ZshareyiE  r   rE   )	r   r   r   r   rP   r   rQ   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   rP   r   rQ   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  rxJ |d d j  sJ |d d j  rJ d S )Ni  )r   rr   r   rE   r   r   r   r   r   r   zExternal share only)r6   r   z"this label should never be visible)r6   zInternal share (twin) onlyz#this label should always be visibleZBothrr   green)r6   ra   yellow)r   rR   rS   rT   rP   r   rQ   r   r   r   Z
set_xlabelr   r   Zget_visible)r,   r   r   r   Ztwin_ax1Ztwin_ax2r   r   r   test_externally_shared_axes  s0    
z.TestDataFramePlots.test_externally_shared_axesN)r?   r@   rA   tdZskip_if_no_scipyr   markZparametrizerX   r   r   rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   d   s$   .L/

"$rB   )__doc__ZnumpyrR   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   Zpandas._testingZ_testingr*   Zpandas.tests.plotting.commonr   r   r3   r   r   ZslowZ
pytestmarkZskip_if_mplr   r%   Zskip_if_no_mplr&   rB   r   r   r   r   <module>   s   
"!