a
    Pf(                     @   sn   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mZmZ d dlmZ edZG dd dZdS )    N)	DataFrame
date_range)_check_legend_labels_check_legend_marker_check_text_labels)VersionZ
matplotlibc                   @   s   e Zd Zejjdddd Zdd Zejdg dd	d
 Z	dd Z
dd Zdd Zdd Zdd Zdd Zejddddejdeddddgdd  Zd!d" Zd#d$ Zd%S )&TestFrameLegendzLOpen bug in matplotlib https://github.com/matplotlib/matplotlib/issues/11357)reasonc                 C   s   ddl m} ddlm} tddddddddg}|jdd	d
dd
d}|jdddd |dd | }ttj	tdk r|j
}n|j}t|d |sJ t|d |sJ d S )Nr   )LineCollection)Line2D   )xab      r   r   Zorangeg?)cyerrlabelr   blue)r   r   axr   3.7)Zmatplotlib.collectionsr
   Zmatplotlib.linesr   r   plot
get_legendr   mpl__version__legendHandleslegend_handles
isinstance)selfr
   r   dfr   legendZresult_handles r"   f/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/plotting/frame/test_frame_legend.pytest_mixed_yerr   s    zTestFrameLegend.test_mixed_yerrc                 C   s   t ddgddgd}t dddgi}|jddd	dd
d}|jdddi|d | }ttjtdk rr|j}n|j}dd |D }g d}||ksJ d S )Nr   r   r   )r   r   dg      @Tr   greenr   )r!   colorsecondary_yred)r!   r'   r   r   c                 S   s   g | ]}|  qS r"   )	get_color).0handler"   r"   r#   
<listcomp>:       z5TestFrameLegend.test_legend_false.<locals>.<listcomp>)r   r&   r)   )r   r   r   r   r   r   r   r   )r   r    df2r   r!   Zhandlesresultexpectedr"   r"   r#   test_legend_false.   s    z!TestFrameLegend.test_legend_falsekind)linebarbarhkdeareahistc                 C   s"  t d ttjddg dd}ttjddg dd}ttjddg dd}ttjddg dd}|j|d	d
}t||jd |j|d|d}t||jd |j|d	|d}t||j	|jd |j|d|d}t
|j	|jt
t|j }t||d d S )Nscipyr   r   r   r   r   r   columnsr%   efghi)jklTr3   r!   labelsF)r3   r!   r   reverse)pytestimportorskipr   nprandomdefault_rngr   r   r>   unionlistreversed)r   r3   r    r/   df3Zdf4r   r1   r"   r"   r#   test_df_legend_labels>   s(    
 z%TestFrameLegend.test_df_legend_labelsc                 C   s   t d ttjddg dd}ttjddg dd}ttjddg dd}|jdd	d
}t|g dd |jd|d}t|g dd |jddd|d}t|g dd d S )Nr:   r   r;   r<   r=   r?   rB   Tr   r!   r(   r   	b (right)r   rJ   Fr!   r   r5   rD   )r3   r!   r(   r   )r   rY   r   rC   z	h (right)rE   )rM   rN   r   rO   rP   rQ   r   r   )r   r    r/   rU   r   r"   r"   r#   !test_df_legend_labels_secondary_yY   s    
z1TestFrameLegend.test_df_legend_labels_secondary_yc                 C   s   t d tddd}ttjddg d|d}ttjddg d	|d}ttjddg d
|d}|jddd}t	|g dd |jd|d}t	|g dd |jd|d}t	|g dd d S )Nr:   1/1/2014r   Zperiodsr   r;   r<   r>   indexr?   rB   Tr   rW   rX   rJ   FrZ   )r   rY   r   rC   rD   rE   )
rM   rN   r   r   rO   rP   rQ   standard_normalr   r   r   indr    r/   rU   r   r"   r"   r#   !test_df_legend_labels_time_seriesj   s.    
z1TestFrameLegend.test_df_legend_labels_time_seriesc                 C   s   t d tddd}ttjddg d|d}ttjddg d	|d}ttjddg d
|d}|jj	dddd}t
|dgd |jj	dddd|d}t
|dgd |jj	ddd|d}t
|ddgd d S )Nr:   r\   r   r]   r   r;   r<   r^   r?   rB   r   r   Zdata1)r   yr   rJ   r%   r@   FZdata2)r   rd   r!   r   r   rC   rD   Zdata3)r   rd   r   r   )rM   rN   r   r   rO   rP   rQ   r`   r   Zscatterr   ra   r"   r"   r#   )test_df_legend_labels_time_series_scatter   s.    
z9TestFrameLegend.test_df_legend_labels_time_series_scatterc                 C   s   t d tddd}ttjddg d|d}|d	}|j	d
d}t
|d
gd |j	d
dd}t
|dgd t|j d	 |j	dd|d}t
|ddgd |j d
dgksJ d S )Nr:   r\   r   r]   r   r;   r<   r^   r   r   )rd   rJ   ZLABEL_b)rd   r   r   ZLABEL_c)rd   r   r   )rM   rN   r   r   rO   rP   rQ   r`   Z	set_indexr   r   r   ZxaxisZ	get_labelr>   tolist)r   rb   r    Zdf5r   r"   r"   r#   +test_df_legend_labels_time_series_no_mutate   s     

z;TestFrameLegend.test_df_legend_labels_time_series_no_mutatec                 C   s  t g dg dgg dd}tjjddd\}}|jdd	d
dd	|d
 d |jddddd|d
 d |jddddd|d
 d t|d
 g dd t|d
 g dd |jddddd|d d |jdd	d
dd	|d d |jddddd|d d t|d g dd t|d g dd |jddddd|d d |jddddd|d d |jdd	d
dd	|d d t|d g dd t|d g dd d S )N)r   r   r   r   )r   r         )r   rrC   r   )datar>   r   r   )ZnrowsZncolsr   rj   r   o)r   rd   Z	linewidthmarkerr'   r   rC   r   )rj   rC   r   rJ   )rl   r   rl   Zexpected_markers)r   rj   rC   )rl   rl   r   r   )rC   r   rj   )r   rl   rl   r   r   ZpyplotZsubplotsr   r   r   )r   r    _r   r"   r"   r#   *test_missing_marker_multi_plots_on_same_ax   s"    z:TestFrameLegend.test_missing_marker_multi_plots_on_same_axc                 C   s   t tjddtg dtg dgd}ddg|j_| }|j	
 }t|d t tjdd	}|jd
|d}|j	
 }t|d d|j_|jd|d}|j	
 }t|d |jd
|d}|j	
 }t|d d S )Nr   )rh   rh   )r   r   r   r   )r   rd   r   rd   r=   groupZ
individualzgroup,individual)   rs   TrZ   newF)r   rO   rP   rQ   r`   arrayr>   namesr   Zlegend_Z	get_titler   name)r   multir   Z	leg_titler    r"   r"   r#   test_legend_name   s&    






z TestFrameLegend.test_legend_namer4   r5   r6   r7   r:   )Zmarksr8   r9   c                 C   s<   t tjddg dd}|j|dd}t|dd d S )Nr   r;   r<   r=   FrI   )visible)r   rO   rP   rQ   r   r   )r   r3   r    r   r"   r"   r#   test_no_legend   s    zTestFrameLegend.test_no_legendc                 C   s|   t tjddg dd}|jdgddd}|jd	gd
d|d |jdgdd|d t|g dd t|g dd d S )Nr   )ri   r   ABCr=   r}   r   Zsolid)rd   rm   	linestyler~   rl   Zdotted)rd   rm   r   r   r   <rJ   )r   rl   r   rn   )r   rO   rP   rQ   r`   r   r   r   )r   r    r   r"   r"   r#   test_missing_markers_legend   s    z+TestFrameLegend.test_missing_markers_legendc                 C   sr   t g dg dg dg dd}tj \}}dD ]}|jd|||dd q4t|g d	d
 t|g dd d S )N)r   r   r   rh   rs      )r   rh   r   r   r   rh   )r   r   r   r   rh   r   )r}   r~   r   XABCr   .)r   r   styler|   rJ   )r   r   r   rn   ro   )r   r    rp   r   r3   r"   r"   r#   'test_missing_markers_legend_using_style   s    	z7TestFrameLegend.test_missing_markers_legend_using_styleN)__name__
__module____qualname__rM   markZxfailr$   r2   ZparametrizerV   r[   rc   re   rg   rq   ry   paramtdZ
skip_if_nor{   r   r   r"   r"   r"   r#   r      s4   


r   )numpyrO   rM   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   Zpandas.tests.plotting.commonr   r   r   Zpandas.util.versionr   rN   r   r   r"   r"   r"   r#   <module>   s   
