o
    ŀg(                     @   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)Version
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 |sLJ t|d |sUJ d S )Nr   )LineCollection)Line2D   )xab      r   r   orangeg?)cyerrlabelr   blue)r   r   axr   3.7)matplotlib.collectionsr   matplotlib.linesr   r   plot
get_legendr   mpl__version__legendHandleslegend_handles
isinstance)selfr   r   dfr   legendresult_handles r'   a/var/www/html/myenv/lib/python3.10/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 r9|j}n|j}dd |D }g d}||ksMJ 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>:   s    z5TestFrameLegend.test_legend_false.<locals>.<listcomp>)r   r+   r.   )r   r   r   r   r   r   r    r!   )r#   r$   df2r   r%   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r8   r%   labelsF)r8   r%   r   reverse)pytestimportorskipr   nprandomdefault_rngr   r   rC   unionlistreversed)r#   r8   r$   r3   df3df4r   r6   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@   rA   rB   rD   rG   Tr   r%   r-   r   	b (right)r   rO   Fr%   r   r:   rI   )r8   r%   r-   r   )r   r_   r   rH   z	h (right)rJ   )rR   rS   r   rT   rU   rV   r   r   )r#   r$   r3   rZ   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   periodsr   r@   rA   rC   indexrD   rG   Tr   r]   r^   rO   Fr`   )r   r_   r   rH   rI   rJ   )
rR   rS   r   r   rT   rU   rV   standard_normalr   r   r#   indr$   r3   rZ   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?   rb   r   rc   r   r@   rA   re   rD   rG   r   r   data1)r   yr   rO   r*   rE   Fdata2)r   rl   r%   r   r   rH   rI   data3)r   rl   r   r   )rR   rS   r   r   rT   rU   rV   rg   r   scatterr   rh   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s^J d S )Nr?   rb   r   rc   r   r@   rA   re   r   r   )rl   rO   LABEL_b)rl   r   r   LABEL_c)rl   r   r   )rR   rS   r   r   rT   rU   rV   rg   	set_indexr   r   r   xaxis	get_labelrC   tolist)r#   ri   r$   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   rrH   r   )datarC   r   r   )nrowsncolsr   r{   r   o)r   rl   	linewidthmarkerr,   r   rH   r   )r{   rH   r   rO   )r   r   r   expected_markers)r   r{   rH   )r   r   r   r   )rH   r   r{   )r   r   r   r   r   pyplot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   )ry   ry   )r   r   r   r   )r   rl   r   rl   rB   group
individualzgroup,individual)   r   Tr`   newF)r   rT   rU   rV   rg   arrayrC   namesr   legend_	get_titler   name)r#   multir   	leg_titler$   r'   r'   r(   test_legend_name   s&   






z TestFrameLegend.test_legend_namer9   r:   r;   r<   r?   )marksr=   r>   c                 C   s<   t tjddg dd}|j|dd}t|dd d S )Nr   r@   rA   rB   FrN   )visible)r   rT   rU   rV   r   r   )r#   r8   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   )rz   r   ABCrB   r   r   solid)rl   r   	linestyler   r   dotted)rl   r   r   r   r   <rO   )r   r   r   r   )r   rT   rU   rV   rg   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 qt|g d	d
 t|g dd d S )N)r   r   r   ry   r      )r   ry   r   r   r   ry   )r   r   r   r   ry   r   )r   r   r   XABCr   .)r   r   styler   rO   )r   r   r   r   r   )r#   r$   r   r   r8   r'   r'   r(   'test_missing_markers_legend_using_style   s   	z7TestFrameLegend.test_missing_markers_legend_using_styleN)__name__
__module____qualname__rR   markxfailr)   r7   parametrizer\   ra   rj   rp   rx   r   r   paramtd
skip_if_nor   r   r   r'   r'   r'   r(   r	      s6    


r	   )numpyrT   rR   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   pandas.tests.plotting.commonr   r   r   pandas.util.versionr   rS   r   r	   r'   r'   r'   r(   <module>   s    
