U
    c                      @   sR   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 G dd deZdS )    N)	DataFrame
date_range)TestPlotBasec                
   @   s   e Zd Zejjdddd Zdd Zej	dd Z
d	d
 Zdd Zejddddejdej	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 | }|j}t|d |s~t	t|d |st	d S )Nr   )LineCollection)Line2D   )xab      r
   r   Zorangeg?)cyerrlabelr   blue)r   r   axr   )
Zmatplotlib.collectionsr   Zmatplotlib.linesr   r   plot
get_legendlegendHandles
isinstanceAssertionError)selfr   r   dfr   legendZresult_handles r   Q/tmp/pip-unpacked-wheel-g7fro6k3/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 | }dd |jD }dd	dg}||ks~td S )Nr	   r   r   )r   r   dg      @Tr   Zgreenr   )r   colorsecondary_yZred)r   r    r   c                 S   s   g | ]}|  qS r   )Z	get_color).0handler   r   r   
<listcomp>,   s     z5TestFrameLegend.test_legend_false.<locals>.<listcomp>)r   r   r   r   r   )r   r   df2r   r   resultexpectedr   r   r   test_legend_false$   s    
z!TestFrameLegend.test_legend_falsec                 C   sr  ddddddg}t tjdddd	d
gd}t tjdddddgd}t tjdddddgd}t tjdddddgd}|D ]}|j|dd}| j||jd |j|d|d}| j||jd |j|d|d}| j||j|jd |j|d|d}t|j|jtt	|j }| j||d q|jdd	d}| j|ddd
gd |jd|d}| j|ddd
gd |jddd|d}| j|ddd
dddgd t
d dd!}	t tjdddd	d
g|	d"}t tjdddddg|	d"}t tjdddddg|	d"}|jdd	d}| j|ddd
gd |jd|d}| j|ddd
gd |jd|d}| j|ddd
dddgd |jjdd	d#d$}| j|d#gd |jjdddd%|d&}| j|d#gd |jjddd'|d(}| j|d#d'gd |d}
|
jd	d)}| j|d	gd |
jd	d*d+}| j|d*gd | |j d |
jd
d,|d-}| j|d*d,gd |
j d	d
gksntd S ).Nlinebarbarhkdeareahistr   r   r   r   columnsr   efghijklTkindr   labelsF)r:   r   r   reverse)r   r!   z	b (right)r   r   )r:   r   r!   r   z	h (right)z1/1/2014)Zperiods)r0   indexZdata1)r
   yr   Zdata2)r
   r@   r   r   r   Zdata3)r
   r@   r   r   )r@   ZLABEL_b)r@   r   ZLABEL_c)r@   r   r   )r   nprandomrandr   _check_legend_labelsr0   unionlistreversedr   randnZscatterZ	set_index_check_text_labelsZxaxisZ	get_labeltolistr   )r   kindsr   r%   Zdf3Zdf4r:   r   r'   indZdf5r   r   r   test_df_legend_labels0   sb      
z%TestFrameLegend.test_df_legend_labelsc                 C   s  t ddddgddddggddddgd	}| 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 | j|d dddgd | j|d dddg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 | j|d dddgd | j|d dddg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 | j|d dddgd | j|d dddgd d S )Nr	   r         r
   rr3   r   )datar0   r   )ZnrowsZncolsr   o)r
   r@   Z	linewidthmarkerr    r   r;   Zexpected_markersr   ZpltZsubplotsr   rD   _check_legend_marker)r   r   figr   r   r   r   *test_missing_marker_multi_plots_on_same_axr   s"    (z:TestFrameLegend.test_missing_marker_multi_plots_on_same_axc              	   C   s   t tjddtddddgtddddggd}ddg|j_| }|j	 }| 
|d	 t tjd
d
}|jd|d}|j	 }| 
|d	 d|j_|jd|d}|j	 }| 
|d	 |jd|d}|j	 }| 
|d d S )NrN   r   r   r
   r@   r/   groupZ
individualzgroup,individual   Tr>   newF)r   rA   rB   rH   arrayr0   namesr   Zlegend_Z	get_titlerI   name)r   Zmultir   Z	leg_titler   r   r   r   test_legend_name   s&    "



z TestFrameLegend.test_legend_namer:   r)   r*   r+   r,   )Zmarksr-   r.   c                 C   s<   t tjdddddgd}|j|dd}| j|dd d S )	Nr   r   r   r   r/   Fr9   )Zvisible)r   rA   rB   rC   r   rD   )r   r:   r   r   r   r   r   test_no_legend   s    zTestFrameLegend.test_no_legendc                 C   s   t tjdddddgd}|jdgddd	}|jdgd
d|d |jdgdd|d | j|dddgd | j|dd
dgd d S )NrO   r   ABCr/   r
   Zsolid)r@   rS   	linestylerR   Zdotted)r@   rS   rd   r   <r;   rT   )r   rA   rB   rH   r   rD   rV   )r   r   r   r   r   r   test_missing_markers_legend   s    z+TestFrameLegend.test_missing_markers_legendc              
   C   s   t ddddddgddddddgddddddgddddddgd}| j \}}dD ]}|jd	|||d
d qT| j|dddgd | j|d
d
d
gd d S )Nr	   r   r   rN   rZ      )ra   rb   rc   XABCrh   .)r   r   stylera   rb   rc   r;   rT   rU   )r   r   rW   r   r:   r   r   r   'test_missing_markers_legend_using_style   s    	z7TestFrameLegend.test_missing_markers_legend_using_styleN)__name__
__module____qualname__pytestmarkZxfailr   r(   tdZskip_if_no_scipyrM   rX   r_   Zparametrizeparamr`   rf   rl   r   r   r   r   r      s,   

A

r   )ZnumpyrA   rp   Zpandas.util._test_decoratorsutilZ_test_decoratorsrr   Zpandasr   r   Zpandas.tests.plotting.commonr   r   r   r   r   r   <module>   s
   