o
    ôT·jË(  ã                   @   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'   úp/home/dinkstrade/pdmp-scanner/venv/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    
