U
    ¾mœdeI ã                   @   sè   d Z ddlmZmZ ddlZddlZddlZddlZddlZddlZddl	Z
ddlZddlm  mZ ddlmZ ddlZddlmZmZmZmZmZmZmZ ddlmZ ddlmZm Z  ddl!m"Z" ej#G dd	„ d	eƒƒZ$d
d„ Z%dS )z Test cases for DataFrame.plot é    )ÚdateÚdatetimeN)Úis_list_like)Ú	DataFrameÚ
MultiIndexÚPeriodIndexÚSeriesÚbdate_rangeÚ
date_rangeÚplotting)ÚTestPlotBaseÚ_check_plot_works©Úpprint_thingc                   @   sp  e Zd Zejjdd�ejjdd„ ƒƒZdd„ Zejjdd„ ƒZ	d	d
„ Z
dd„ Zdd„ Zdd„ Zej dddg¡dd„ ƒZej ddddg¡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*g¡d+d,„ ƒZd-d.„ Zd/d0„ Zejjd1d2d3�ej d4d5d1g¡d6d7„ ƒƒZd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Zd@dA„ ZdBdC„ Z dDdE„ Z!dFdG„ Z"dHdI„ Z#dJdK„ Z$ej dLd5d1g¡ej dMdNdOdPgdOdPdNgf¡dQdR„ ƒƒZ%ej dSdTdUdVg¡dWdX„ ƒZ&dYdZ„ Z'd[d\„ Z(d]d^„ Z)d_d`„ Z*ejjdadb„ ƒZ+dcdd„ Z,dedf„ Z-dgdh„ Z.e/j0didj„ ƒZ1e/j0dkdl„ ƒZ2dmdn„ Z3ej dodpe4j5dqdr� dpe4j5dsdr� g¡dtdu„ ƒZ6�ddwdx„Z7dydz„ Z8d{d|„ Z9d}d~„ Z:dd€„ Z;ej d�d‚dƒd„d…g¡d†d‡„ ƒZ<dˆd‰„ Z=e/j0dŠd‹„ ƒZ>dŒd�„ Z?dŽd�„ Z@d�d‘„ ZAej d’d“d”gd•d–fd•gd“d”gd—d˜gfg¡d™dš„ ƒZBd›dœ„ ZCej d�džd•gd“fg¡dŸd „ ƒZDej d¡d•d“gd—gd¢gfd•d“d”gd—d˜gd¢d£gfd¤d¥d¦gd§d¨gd©dªgfg¡d«d¬„ ƒZEej d­d¤d¥d•d“gfd¥d¤d¤d¥gfg¡d®d¯„ ƒZFd°d±„ ZGd²d³„ ZHej d´i dµfd¶d·id·fd¸d¹id¹fg¡dºd»„ ƒZId¼d½„ ZJd¾d¿„ ZKejjdÀdÁ„ ƒZLejjej d(d)dÂdÃg¡dÄdÅ„ ƒƒZMejjdÆeNdÇ�dÈdÉ„ ƒZOdÊdË„ ZPejjdÌdÍ„ ƒZQej d(d)dÂdÃg¡dÎdÏ„ ƒZRdÐdÑ„ ZSdÒdÓ„ ZTdÔdÕ„ ZUdÖd×„ ZVdØdÙ„ ZWdÚdÛ„ ZXe/j0dÜdÝ„ ƒZYdÞdß„ ZZdàdá„ Z[dâdã„ Z\ej däd)dÃdÂg¡dådæ„ ƒZ]dçdè„ Z^dédê„ Z_ej d(d)d*g¡dëdì„ ƒZ`dídî„ Zadïdð„ Zbdñdò„ Zce/j0ej d(dó¡dôdõ„ ƒƒZddöd÷„ Zedødù„ Zfdúdû„ Zgej düdýdþdÿ�d g¡�d�d„ ƒZh�d�d„ Zi�d�d„ Zjej d(�d¡�d�d	„ ƒZkej �d
�d�d�d�ddv�dd¥d¦gfg¡ej d(d)d*dÂg¡�d�d„ ƒƒZlej �d�d�d�d�dg¡ej d(�d�dg¡�d�d„ ƒƒZmej �d�d¡�d�d„ ƒZndvS (   ÚTestDataFramePlotszApi changed in 3.6.0)Úreasonc           
   	   C   s|  t  ¡ }t|jdd� t|jddd�}| j|ddd� t|jdddd	�}| j|dd
d� t|jdddd�}| j|dd� | j|ddd� tddgddgdœƒ}d}tjt	|d�� |jj
dd� W 5 Q R X ttj dd¡ttjd d… ƒd�}t|jdd�}| j|dd� t|jdddgd� t|jdddgd� t|jddd� t|jdddd� |jddd�}| j|dd d� |d d… D ]P}|  |j¡ | j| ¡ dd!� | j|jdd"�dd!� | j|j ¡ gdd!� �q~|d fD ]@}|  |j¡ |  | ¡ ¡ |  |j ¡ g¡ | j|dd� �qÚt|jdd#� ttjd d… tdƒƒ}ttj dd¡t |¡d�}t|jdd�}| j|dd� tjd$d%d&d'd(d)d*d+gd,d-gd.�}tjd/d0gd1d2gd.�}ttj ddd3¡||d4�}t|jd5d#� td6tj d¡iƒ}t|jjdd7�}| j|dd8d� t|jjdd9d:�}| j|dd8d� | j ¡ \}}|jjd|d;�}t|ƒdk�s`t‚|j}	|	|d k�sxt‚d S )<NF)ÚgridT©Údefault_axesÚsubplotsé   ©r   é   ©Úaxes_numÚlayout)éÿÿÿÿé   )r   r   r   ©r   r   )r   r   Ú	use_indexr   ©Úxrotr   r   é   ©ÚxÚyz''Line2D' object has no property 'blarg'©Úmatch)Zblargé
   ©Úindex)r   é   )Úyticks)Úxticks)iœÿÿÿéd   )ÚylimZxlimZblah)r   r   Útitle)r   r0   ©r"   r   ©Úvisible©Úminor)r0   )õ   Î±r   )r6   r   )õ   Î²r   )r7   r"   )õ   Î³r   )r8   r+   )õ   Î´é   )r9   é   Zi0Úi1)Únames)Úbaru   Î”)r>   u   Î•Zc0Úc1)é   r   ©Úcolumnsr*   u   Î£r$   ©r   ©r   r   )r   r   )r   r   ©r   Úax) ÚtmÚmakeTimeDataFramer   ÚplotÚ_check_axes_shapeÚ_check_ticks_propsr   ÚpytestÚraisesÚAttributeErrorÚlineÚnpÚrandomÚrandÚlistÚstringÚascii_lettersÚ_check_visibleÚxaxisÚget_xticklabelsÚ	get_labelÚzipÚranger   Úfrom_tuplesÚrandintr>   Úpltr   ÚlenÚAssertionErrorÚaxes)
ÚselfÚdfra   ÚmsgrF   Ztuplesr*   rB   ÚfigÚresult© rg   ú_/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/plotting/frame/test_frame.pyÚ	test_plot)   s–    üü$ø
õ ÿzTestDataFramePlots.test_plotc              
   C   s  ddd ddg}t ddddd	gddddd	gtjd
d	tjddgtd�tj|dd� d¡tj|ddd� d¡dœƒ}t|j	ddd� t|ddg j	ddd� t|ddg j	ddd� t|ddg j	ddd� t|ddg j	ddd� t|ddg j	ddd� t|ddg j	ddd� d S )NZ2008Z2009Z2011Z2012r   r   r"   r   r+   r;   ©Údtypez%Y)ÚformatÚi8T)rl   Úutc)ÚAÚBÚCÚDÚEro   rp   r#   rq   rr   rs   )
r   rP   ÚarrayÚnanÚobjectÚpdÚto_datetimeÚviewr   rI   )rb   Údatesrc   rg   rg   rh   Útest_nullable_int_plot‘   s     ûÿ
z)TestDataFramePlots.test_nullable_int_plotc                 C   s¸   t jddddgdd�}t|ƒ}t|jjƒ t|jjƒ t|jjƒ t|jjƒ t	||dœƒ}t|jjƒ t|jjƒ t|jjƒ t|jjdd	� t|jj
d
dd� t|jjd
dd� d S )Nr   r   r"   r   ZUInt32rj   r#   r%   ©r%   r$   )rw   rt   r   r   rI   rO   r>   ÚhistÚpier   ÚscatterÚhexbin)rb   ZarrÚsrc   rg   rg   rh   Útest_integer_array_plot¦   s    z*TestDataFramePlots.test_integer_array_plotc                 C   s:   t dddgdddgdœƒ}| ¡ }t| ¡ ƒdks6t‚d S )Nr$   r%   Úzr   r   r"   ©ro   rp   )r   rI   r_   Ú	get_linesr`   ©rb   rc   rF   rg   rg   rh   Útest_nonnumeric_exclude¹   s    z*TestDataFramePlots.test_nonnumeric_excludec                 C   s@   t tj dd¡dddgd�}|jddd�}|  |j ¡ d¡ d S )Nr(   r"   ÚaÚbÚc©rB   r#   )r   rP   rQ   ÚrandnrI   Ú_check_text_labelsrW   rY   r†   rg   rg   rh   Útest_implicit_label¾   s    z&TestDataFramePlots.test_implicit_labelc                 C   sD   t tj dd¡ddgd�}d|j_|jddd� |jjdks@t‚d S )Nr   rˆ   r‰   r‹   ÚNAMEZLABEL)r%   Úlabel)r   rP   rQ   rŒ   r*   ÚnamerI   r`   ©rb   rc   rg   rg   rh   Útest_donot_overwrite_index_nameÃ   s    z2TestDataFramePlots.test_donot_overwrite_index_namec                 C   sj  t  ¡ }|  |jddd�| d¡d  ¡ ¡ |  |jdd�| d¡ ¡ ¡ |  |jdd�|j ¡ ¡ |  |jddd�| d¡j ¡ ¡ |  |jdd�| d¡ ¡ ¡ |  |jdd�|j ¡ ¡ t dt|j	ƒd ¡|_	|  |jddd�| d¡d  ¡ ¡ |  |jdd�| d¡ ¡ ¡ |  |jdd�|d  ¡ ¡ |jddd	d
d�}|  
|jd	¡ | j|dddd� d S )Nr   r   r#   ro   rp   ©r$   r|   r   ZTest)é   r@   )r$   r%   r0   ÚfigsizerD   )g      0@g       @)r   r   r–   )rG   rH   Z_check_datarI   Ú	set_indexrp   rP   Úaranger_   rB   r�   r0   rJ   r†   rg   rg   rh   Útest_plot_xyÊ   s    $"$zTestDataFramePlots.test_plot_xyzinput_log, expected_log)TÚlog)ÚsymZsymlogc                 C   s°   t dt d¡it d¡d�}|j|d�}| j||d� | ¡ |ksFt‚|j|d�}| j||d� | ¡ |kspt‚|j|d�}| j|||d	� | ¡ |ksœt‚| ¡ |ks¬t‚d S )
Nrˆ   r.   r)   ©Úlogy©Úyaxis)Úlogx©rW   ©Úloglog)rW   rŸ   )r   rP   r˜   rI   Ú_check_ax_scalesZ
get_yscaler`   Z
get_xscale)rb   Z	input_logZexpected_logrc   rF   rg   rg   rh   Útest_logscalesâ   s    z!TestDataFramePlots.test_logscalesÚinput_paramr    r�   r£   c              	   C   sN   t dt d¡it d¡d�}d}tjt|d�� |jf |diŽ W 5 Q R X d S )Nrˆ   r.   r)   z9Boolean, None and 'sym' are valid options, 'sm' is given.r&   Úsm)r   rP   r˜   rL   rM   Ú
ValueErrorrI   )rb   r¦   rc   rd   rg   rg   rh   Útest_invalid_logscaleõ   s    z(TestDataFramePlots.test_invalid_logscalec              	   C   sŽ  t  ¡ }|jdd�}| ¡ }t|d  ¡ tƒr2t‚| j|dd� t  	¡  dt
jd< | ¡ }| ¡ }t|d  ¡ tƒrxt‚| j|dd� t  	¡  dt
jd< | ¡ }| ¡ }t|d  ¡ tƒr¾t‚tt|d  ¡ ƒtƒsØt‚t  	¡  t
j dd¡�< | ¡ }| ¡ }t|d  ¡ tƒ�rt‚| j|dd� W 5 Q R X t  	¡  | ¡ }| ¡ }t|d  ¡ tƒ�r`t‚tt|d  ¡ ƒtƒ�s|t‚| j|dd� d S )	NT)Úx_compatr   é   r    zxaxis.compatFrª   )rG   rH   rI   r…   Ú
isinstanceÚ	get_xdatar   r`   rK   Úcloser   Zplot_paramsZuse)rb   rc   rF   Úlinesrg   rg   rh   Útest_xcompatþ   s:    

zTestDataFramePlots.test_xcompatc                 C   sT   t tj dd¡ttdddƒtdddƒƒddgd�}| ¡  | jjd	d
� t	 
¡  d S )Né   r   éÐ  r   é   rˆ   r‰   ©r*   rB   r   r|   )r   rP   rQ   rR   r	   r   rI   r^   ZaxhlinerG   r®   r’   rg   rg   rh   Útest_period_compat#  s    ýz%TestDataFramePlots.test_period_compatc                 C   sø   t dt d¡it ddd¡tjd�}| ¡ }| ¡ d }| ¡ }t|d d …df |d d …df tjdd�}tj	||j
d	d
� t ¡  tjt ddd¡tjd�|_| ¡ }| ¡ d }| ¡ }t|d d …df |d d …df tjdd�}t 	||j
¡ d S )Nr%   r.   éc   r   )r*   rk   r   r   )rk   r‘   F)Zcheck_index_typerj   )r   rP   r˜   Zint64rI   r…   Z
get_xydatar   rG   Zassert_series_equalr%   r®   rw   ÚIndexÚfloat64r*   )rb   rc   rF   r¯   Úrsrg   rg   rh   Útest_unsorted_index0  s"      ÿ**z&TestDataFramePlots.test_unsorted_indexc              	   C   s†  t dddddgiddddgd�}| ¡ }| ¡ \}}| ¡ }|t |d  ¡ d ¡ksZt‚|t |d  ¡ d ¡ksxt‚t dddtj	ddd	d
giddddtj	ddgd�}| ¡ }| ¡ \}}| ¡ }|t |d  ¡ d ¡ksât‚|t |d  ¡ d ¡k�st‚t ddddgddddgdœƒ}|jddd�}| ¡ \}}| ¡ }|t |d  ¡ d ¡k�sbt‚|t |d  ¡ d ¡k�s‚t‚d S )Nr%   ç        ç      ð?ç       @ç      @r)   r   g      @g      @g      @g     ÀV@g     €V@g     @W@g      W@)r%   rƒ   rƒ   r#   )
r   rI   Úget_xlimr…   rP   ZnanminÚget_datar`   Znanmaxru   )rb   rc   rF   ÚxminÚxmaxr¯   rg   rg   rh   Útest_unsorted_index_limsB  s*     þ  z+TestDataFramePlots.test_unsorted_index_limsc              	   C   sˆ   t tj dd¡ttjd d… ƒddddgd� }d}tjt	|d	�� |j
jd
d� W 5 Q R X tjt	|d	�� |j
jd
d� W 5 Q R X d S )Nr:   r   r$   r%   rƒ   Úfourr´   z+Log-y scales are not supported in area plotr&   Trœ   r¢   )r   rP   rQ   rR   rS   rT   rU   rL   rM   r¨   rI   Úarea©rb   rc   rd   rg   rg   rh   Útest_negative_log[  s    
ýz$TestDataFramePlots.test_negative_logc                 C   sZ   t  t|d  ¡ d ƒ¡}t||ƒD ]0\}}|| ¡ d 7 }| ¡ d }t ||¡ q$d S )Nr   r   )rP   Zzerosr_   rÀ   rZ   rG   Úassert_numpy_array_equal)rb   Znormal_linesZstacked_linesÚbaseÚnlÚslÚsyrg   rg   rh   Ú_compare_stacked_y_coodg  s
    z*TestDataFramePlots._compare_stacked_y_coodÚkindrO   rÅ   c              	   C   s¦  t j d¡}t| dd¡ddddgd�}| }t| d¡| d¡| d¡ | d¡ d	œƒ}t| dd¡ttjd d… ƒddddgd
�}t	|j
|dd�}t	|j
|dd�}|  |j|j¡ t	|j
|dd�}t	|j
|dd�}|  |j|j¡ t	|j
|dd�}t	|j
|dd�}|  |jd d… |jd d… ¡ |  |jdd … |jdd … ¡ t	|j
dd� d}	tjt|	d�� |j
dd� W 5 Q R X | |jd ¡}
t	|
j
|ddd� d S )Né*   r:   r   Úwr$   r%   rƒ   r‹   )rÐ   r$   r%   rƒ   r´   F)rÎ   ÚstackedTr   ©rÑ   z„When stacked is True, each column must be either all positive or all negative. Column 'w' contains both positive and negative valuesr&   r   )rÎ   r    rÑ   )rP   rQ   ÚRandomStater   rR   rŒ   rS   rT   rU   r   rI   rÍ   r¯   rL   rM   r¨   r—   r*   )rb   rÎ   Z	np_randomrc   Úneg_dfZsep_dfZmixed_dfÚax1Úax2rd   Údf2rg   rg   rh   Útest_line_area_stackedn  s@    

üÿ	

ý  ÿz)TestDataFramePlots.test_line_area_stackedc              
   C   sô  ddt jdg}dt jddg}t||dœƒ}t||dœtjdd�d�}||fD �] }t|jƒ}|jd  ¡ }|jd  ¡ }t j	dddgt j
d	�}	t t  |jd¡|	¡ t j	dddgt j
d	�}	t t  |jd¡|	¡ t |jt  	d
d
dd
g¡¡ t |jt  	d
dd
d
g¡¡ t j	ddddgt j
d	�}
t j	ddddgt j
d	�}t|jdd�}t |jd  ¡ |
¡ t |jd  ¡ |
| ¡ t|jjƒ}t |jd  ¡ |
¡ t |jd  ¡ |
| ¡ t|jjd
d�}t |jd  ¡ |
¡ t |jd  ¡ |¡ qLd S )Nr   r   r"   ©rˆ   r‰   r   )Úkr)   r   rj   FTrÒ   )rP   ru   r   rG   ZmakeDateIndexr   rI   r¯   Ú	get_ydatart   r¸   rÈ   ÚdeleteÚdataÚmaskrÅ   )rb   Zvalues1Zvalues2rc   ÚtdfÚdrF   Zmasked1Zmasked2ÚexpZ	expected1Z	expected2rg   rg   rh   Útest_line_area_nan_dfž  s>    
 ÿ ÿz(TestDataFramePlots.test_line_area_nan_dfc                 C   s`  t tj dd¡dddgd�}| ¡ }| ¡ \}}| ¡ }||d  ¡ d d ksTt‚||d  ¡ d d kspt‚|jd	d
�}| ¡ \}}| ¡ }||d  ¡ d d ks¬t‚||d  ¡ d d ksÈt‚|jd	d	d�}| j	|ddd� |D ]p}t
|dƒsüt‚t
|dƒ�rt‚| ¡ \}}| ¡ }||d  ¡ d d k�s>t‚||d  ¡ d d ksêt‚qêd S )Nr:   r"   r$   r%   rƒ   r‹   r   r   T)Úsecondary_y)rã   r   r1   r   Zleft_axÚright_ax)r   rP   rQ   rR   rI   r¿   r…   rÀ   r`   rJ   Úhasattr)rb   rc   rF   rÁ   rÂ   r¯   ra   rg   rg   rh   Útest_line_limÅ  s(    z TestDataFramePlots.test_line_limFzX2020-12-01 this has been failing periodically on the ymin==0 assertion for a week or so.)Ústrictr   rÑ   Tc           
      C   sÄ   t tj dd¡ddddgd�}| }t|jj|d�}| ¡ \}}| ¡ \}}| 	¡ }	||	d	  
¡ d	 d	 kspt‚||	d	  
¡ d	 d
 ksŒt‚|d	ks˜t‚t|jj|d�}| ¡ \}}|d	ksÀt‚d S )Nr:   r   r$   r%   rƒ   rÄ   r‹   rÒ   r   r   )r   rP   rQ   rR   r   rI   rÅ   r¿   Úget_ylimr…   rÀ   r`   )
rb   rÑ   rc   rÔ   rF   rÁ   rÂ   ZyminZymaxr¯   rg   rg   rh   Útest_area_limÝ  s    z TestDataFramePlots.test_area_limc                 C   s€   t tj dd¡ddgd�}| jjdddd�\}\}}|j|d	d
� |j|d	d
� |  |¡ ||¡sft	‚|  |¡ ||¡s|t	‚d S )Nr   r   r$   r%   r‹   r   T)ÚshareyrÅ   )rF   rÎ   )
r   rP   rQ   rR   r^   r   rI   Z
get_y_axisZjoinedr`   )rb   rc   re   rÕ   rÖ   rg   rg   rh   Útest_area_sharey_dont_overwriteô  s    z2TestDataFramePlots.test_area_sharey_dont_overwritec                 C   s²   t tj dd¡ƒ}|jjdd�}|jD ]}| ¡ dks&t‚q&|jjddd�}|jD ]}| ¡ dksRt‚qR|jjddd�}| j	|ddd� |D ] }|jD ]}| ¡ dks–t‚q–qŒd S )	Nr+   r   )Ú	linewidthT)rÑ   rì   )rì   r   )r+   r   r   )
r   rP   rQ   rŒ   rI   r>   ÚpatchesZget_linewidthr`   rJ   )rb   rc   rF   Úrra   rg   rg   rh   Útest_bar_linewidthÿ  s    


z%TestDataFramePlots.test_bar_linewidthc                 C   sL  t tj dd¡ƒ}d}|jj|d�}|jD ]}| ¡ |t|j	ƒ ks*t
‚q*|jjd|d�}|jD ]}| ¡ |ks`t
‚q`|jj|d�}|jD ]}| ¡ |t|j	ƒ ksŠt
‚qŠ|jjd|d�}|jD ]}| ¡ |ksÀt
‚qÀ|jj|dd�}|D ] }|jD ]}| ¡ |ksôt
‚qôqê|jj|dd�}|D ]&}|jD ]}| ¡ |k�s*t
‚�q*�q d S )Nr+   gÍÌÌÌÌÌì?)ÚwidthT)rÑ   rð   )rð   r   )r   rP   rQ   rŒ   rI   r>   rí   Ú	get_widthr_   rB   r`   ÚbarhÚ
get_height)rb   rc   rð   rF   rî   ra   rg   rg   rh   Útest_bar_barwidth  s,    





z$TestDataFramePlots.test_bar_barwidthc              	   C   s¬  t tj dd¡ƒ}|jjddd�}dd„ |jD ƒ}|dgd ksDt‚|jjdd	d
dddgd�}dd„ |jd d… D ƒ}|d	d
dddgksŒt‚|jjdt 	dddddg¡d�}dd„ |jD ƒ}|dgd ksÎt‚|jjddddddgd�}dd„ |jd d… D ƒ}|dddddgk�st‚|jjdd	d�}|D ]*}dd„ |jD ƒ}|d	gd k�s,t‚�q,|jjdt 	dddddg¡d�}|D ]*}dd„ |jD ƒ}|dgd k�s|t‚�q|d S )Nr+   Fr   )rÑ   Úbottomc                 S   s   g | ]}|  ¡ ‘qS rg   ©Zget_y©Ú.0Úprg   rg   rh   Ú
<listcomp>;  s     z;TestDataFramePlots.test_bar_bottom_left.<locals>.<listcomp>é   Tr   éþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿc                 S   s   g | ]}|  ¡ ‘qS rg   rö   r÷   rg   rg   rh   rú   ?  s     )rÑ   Úleftc                 S   s   g | ]}|  ¡ ‘qS rg   ©Úget_xr÷   rg   rg   rh   rú   C  s     r   r"   r   c                 S   s   g | ]}|  ¡ ‘qS rg   r  r÷   rg   rg   rh   rú   G  s     )r   rõ   c                 S   s   g | ]}|  ¡ ‘qS rg   rö   r÷   rg   rg   rh   rú   L  s     )r   r   c                 S   s   g | ]}|  ¡ ‘qS rg   r  r÷   rg   rg   rh   rú   Q  s     )
r   rP   rQ   rR   rI   r>   rí   r`   rò   rt   )rb   rc   rF   rf   ra   rg   rg   rh   Útest_bar_bottom_left8  s*      z'TestDataFramePlots.test_bar_bottom_leftc              	   C   sÀ   t dtjdgdddgdddgdœƒ}|j ¡ }dddddddddg	}d	d
„ |jD ƒ}||ks`t‚|jjdd�}dd
„ |jD ƒ}||ksŠt‚dd
„ |jD ƒ}dddddddddg	}||ks¼t‚d S )Nr(   é   r+   r   r   r"   ©ro   rp   rq   r   c                 S   s   g | ]}|  ¡ ‘qS rg   ©ró   r÷   rg   rg   rh   rú   X  s     z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>TrÒ   c                 S   s   g | ]}|  ¡ ‘qS rg   r  r÷   rg   rg   rh   rú   \  s     c                 S   s   g | ]}|  ¡ ‘qS rg   rö   r÷   rg   rg   rh   rú   _  s     r»   g      $@g      4@g      .@g      D@)r   rP   ru   rI   r>   rí   r`   )rb   rc   rF   Úexpectedrf   rg   rg   rh   Útest_bar_nanT  s    $
zTestDataFramePlots.test_bar_nanc                 C   sD  t tj dd¡t tdƒ¡t tdƒ¡d�}t tj dd¡t tdƒ¡t tdƒ¡d�}||fD ]Þ}|j 	¡ }|j
 ¡ }t |t dddd	d
dg¡¡ | ¡ dks¦t‚|jd  ¡ dks¼t‚|jd  ¡ dksÒt‚|jj	dd�}t |t dddd	d
dg¡¡ | ¡ dk�st‚|jd  ¡ dk�s(t‚|jd  ¡ dks`t‚q`d S )Nr:   r+   ZABCDEFZabcder´   r   r   r   r"   r   )g      à¿g      @g      Ð¿r   gš™™™™™@TrÒ   g      @)r   rP   rQ   rŒ   rw   r·   rS   ZCategoricalIndexrI   r>   rW   Úget_ticklocsrG   rÈ   rt   r¿   r`   rí   r  )rb   Zdf1r×   rc   rF   Zticksrg   rg   rh   Útest_bar_categoricalc  s,    ýý

z'TestDataFramePlots.test_bar_categoricalc              	   C   sÜ   t tj dd¡ttjd d… ƒddddgd�}t|jj	ddd� t|jj	d	d
d� t
 d¡}tjt|d�� |jj	dd� W 5 Q R X t
 d¡}tjt|d�� |jj	dd� W 5 Q R X |jddddd�}| j|d	dd� d S )Nr:   r   r$   r%   rƒ   rÄ   r´   r#   r   r   z5scatter() missing 1 required positional argument: 'y'r&   r”   z5scatter() missing 1 required positional argument: 'x'r|   r   T)r$   r%   rÎ   r   rD   r   )r   rP   rQ   rŒ   rS   rT   rU   r   rI   r   ÚreÚescaperL   rM   Ú	TypeErrorrJ   )rb   rc   rd   ra   rg   rg   rh   Útest_plot_scatter€  s    
ý

z$TestDataFramePlots.test_plot_scatterc              	   C   s\   t tj d¡dgd�}tdddd�j|d< d}tjt|d	�� |j	d
ddd� W 5 Q R X d S )Nr(   rˆ   r‹   z
2014-01-01Úh)ÚstartÚfreqÚperiodsZdtimez9must be a string or a (real )?number, not 'datetime.time'r&   r   )rÎ   r$   r%   )
r   rP   rQ   rŒ   r
   ÚtimerL   rM   r  rI   rÆ   rg   rg   rh   Ú&test_raise_error_on_datetime_time_data•  s
    z9TestDataFramePlots.test_raise_error_on_datetime_time_datac                 C   s`   t tdddƒddd�}tj ddt|ƒ¡}t||dœƒ}t|jj	dd	d
� t|jj	ddd
� d S )Niã  r   é   ÚW)r  r  r  r   )rz   Úvalsrz   r  r#   )
r
   r   rP   rQ   Únormalr_   r   r   rI   r   )rb   rz   r  rc   rg   rg   rh   Útest_scatterplot_datetime_dataž  s
    z1TestDataFramePlots.test_scatterplot_datetime_datac                 C   s€   t dddgdddgdœƒ}t|jjdd	d
� t|jjddd
� t dddgdd	dgdœƒ}t|jjdd	d
� t|jjddd
� d S )Nro   rp   rq   r   r"   r   rÙ   rˆ   r‰   r#   r   r   rŠ   )r   r   rI   r   r’   rg   rg   rh   Útest_scatterplot_object_data§  s    z/TestDataFramePlots.test_scatterplot_object_dataÚorderedÚ
categoriesÚsetosaÚ
versicolorÚ	virginicac                 C   sì   t ddgddgddgddgddggd	d
gd�}tjdddddg||d�|d< |jjdddd�}|j\}|j}t dddg¡}| 	¡ }t
 ||¡ t ddddg¡}	|j}
t
 |
|	¡ |}dd„ |j ¡ D ƒ}tdd„ t||ƒD ƒƒsèt‚d S )Ngffffff@g      @gš™™™™™@r¾   g      @gš™™™™™	@gš™™™™™@gš™™™™™@Úlengthrð   r‹   r  r  r  )r  r  Zspeciesr   r   ©r$   r%   rŠ   ç      à?g      ø?g      @r»   r¼   r½   c                 S   s   g | ]}|  ¡ ‘qS rg   ©Úget_text)rø   Úirg   rg   rh   rú   Ï  s     zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s   | ]\}}||kV  qd S ©Nrg   )rø   r%  Újrg   rg   rh   Ú	<genexpr>Ð  s     zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   rw   ÚCategoricalrI   r   ÚcollectionsÚcolorbarrP   rt   Z	get_ticksrG   rÈ   Z_boundariesrF   Zget_ymajorticklabelsÚallrZ   r`   )rb   r  r  rc   rF   Zcolorbar_collectionr+  Zexpected_ticksZresult_ticksZexpected_boundariesZresult_boundariesZexpected_yticklabelsZresult_yticklabelsrg   rg   rh   Ú%test_scatterplot_color_by_categorical³  s*     þý
z8TestDataFramePlots.test_scatterplot_color_by_categoricalzx, yr#   )r%   r$   )r%   r%   c                 C   s:   t ddddgt ddddg¡dœƒ}t|jj||d� d S )	Nr   r   r"   r   rˆ   r‰   rŠ   r#   )r   rw   r)  r   rI   r   ©rb   r$   r%   rc   rg   rg   rh   Ú'test_plot_scatter_with_categorical_dataÒ  s    $z:TestDataFramePlots.test_plot_scatter_with_categorical_datac           	      C   sª  t tjjdddd�ttjd d… ƒdddd	gd
�}|jjdddd�|jjdddd�g}|D ]4}|j	d j
jdkstt‚|j	d jj ¡ dksZt‚qZd}|jjddd|d�}|j	d j
j|ks¾t‚|jjddddd�}|j	d jd ksæt‚|jjdddd�}|j	d jd k�st‚| j|j	dgd� t ddgddgdœƒ}ddddg}ddddg}t ||g¡}|jjdd|d�}t |j	d  ¡ |¡ t ddg¡}|jjdd|dd� d S )Nr   r.   )r:   r   )ÚlowÚhighÚsizer:   r$   r%   rƒ   rÄ   r´   r!  r   r   ZGreysÚ	cubehelix)r$   r%   rŠ   ÚcolormapF)r$   r%   rŠ   r+  Úredrî   ©Z
facecolorsr"   r   r„   r¼   r»   ro   rp   Zspring)r$   r%   rŠ   Úcmap)r   rP   rQ   r]   rS   rT   rU   rI   r   r*  r7  r‘   r`   r+  rF   Ú
get_ylabelÚ_check_colorsrt   rG   rÈ   Zget_facecolor)	rb   rc   ra   rF   ÚcmZred_rgbaZ
green_rgbaZ
rgba_arrayZfloat_arrayrg   rg   rh   Útest_plot_scatter_with_cÙ  s2    
ý$z+TestDataFramePlots.test_plot_scatter_with_cc                 C   sR   t tj d¡d dddgd�}|jjdddd�}tj|d j|jd  	¡ d	� d S )
N©r(   r"   r.   rˆ   r‰   rŠ   r‹   )r$   r%   r�   r   )Úright)
r   rP   rQ   rI   r   rG   rÈ   Úvaluesr*  Z	get_sizesr†   rg   rg   rh   Útest_plot_scatter_with_s
  s    z+TestDataFramePlots.test_plot_scatter_with_sc                 C   s\   dd l }ttj d¡d dddgd�}|j ¡ }|jjddd|d�}|jd j	|ksXt
‚d S )	Nr   r<  r.   rˆ   r‰   rŠ   r‹   )r$   r%   rŠ   Únorm)Ú
matplotlibr   rP   rQ   ÚcolorsZLogNormrI   r   r*  r@  r`   )rb   Úmplrc   r@  rF   rg   rg   rh   Útest_plot_scatter_with_norm  s
    
z.TestDataFramePlots.test_plot_scatter_with_normc                 C   sˆ   dd l }ttj d¡d dddgd�}|jjdddd�}|jd j}|j 	¡ |j 
¡ f}|jj|Ž }|jD ]}||ƒ||ƒksjt‚qjd S )	Nr   r<  r.   rˆ   r‰   rŠ   r‹   r!  )rA  r   rP   rQ   rI   r   r*  r@  rŠ   ÚminÚmaxrB  Z	Normalizer`   )rb   rC  rc   rF   Z	plot_normZcolor_min_maxZdefault_normÚvaluerg   rg   rh   Útest_plot_scatter_without_norm  s    
z1TestDataFramePlots.test_plot_scatter_without_normc                 C   s4  t tj dd¡ttjd d… ƒddddgd�}t|jj	ƒ t|jj	dd	� t|jj	d
d
d� t|jj	d
d� t tj dd¡ttjd d… ƒt
dƒd�}t|jj	ƒ t ddgddgdœƒ}t|jj	ƒ}| j|dd� |jj	ddd�}| j|dddd� t|jjƒ}| j|dd� |jjddd�}| j|dddd� d S )Nr:   r   ÚoneÚtwoÚthreerÄ   r´   F©ÚlegendTr   rÒ   r(   é   r   r   rÙ   éZ   r    é#   )ÚrotÚfontsize©r!   Ú
xlabelsizeÚ
ylabelsize)Úyroté7   é   )rV  rU  rT  )r   rP   rQ   rŒ   rS   rT   rU   r   rI   r>   r[   rK   rò   r†   rg   rg   rh   Útest_plot_bar&  s0    
ýýz TestDataFramePlots.test_plot_barc           	      C   s.  |}|d }|  ¡ j}dd„ |D ƒ}t|jjƒ}|  | ¡ |¡ t |j	 
¡ t dt|ƒd ¡¡ t|jƒdt|ƒ ks|t‚t ¡  |jjdd�}| j|ddd	� t ¡  t|jjƒ}t dd
dg¡}|jj|d�}|  ¡ j}dd„ |D ƒ}|  | ¡ |¡ t |j	 
¡ |¡ t|jƒdt|ƒ k�s*t‚d S )NÚheightc                 S   s   g | ]}t |ƒ‘qS rg   r   ©rø   rŠ   rg   rg   rh   rú   K  s     z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>r   r;   é(   ©rQ  r   ©r!   rV  r:   )Ú	positionsc                 S   s   g | ]}t |ƒ‘qS rg   r   r[  rg   rg   rh   rú   ^  s     )Ú_get_numeric_datarB   r   rI   Úboxr�   rX   rG   rÈ   rW   r	  rP   r˜   r_   r¯   r`   r®   rK   rt   )	rb   Úhist_dfrc   ÚseriesÚnumeric_colsÚlabelsrF   ra   r_  rg   rg   rh   Útest_boxplotG  s.    
 ÿ
zTestDataFramePlots.test_boxplotc           	      C   s8  |}|  ¡ j}dd„ |D ƒ}|jjdddd�}| j|dddd� |  | ¡ |¡ t|jƒd	t|ƒ ksjt	‚t
|jjd
d
dd
d�}| j|ddd� | j|dd� t||ƒD ],\}}|  | ¡ |g¡ t|jƒd	ks¨t	‚q¨t dddg¡}|jj|dd�}|  | ¡ |¡ t |j ¡ |¡ t|jƒd	t|ƒ k�s4t	‚d S )Nc                 S   s   g | ]}t |ƒ‘qS rg   r   r[  rg   rg   rh   rú   f  s     z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>é2   r@   F)rQ  rR  Úvertr   ©r!   rV  rU  r;   T)r   r   rh  r    r"   )r   r"   r   rš   r¡   r   )r_  rh  )r`  rB   rI   ra  rK   r�   Úget_yticklabelsr_   r¯   r`   r   rJ   r¤   rZ   rP   rt   rG   rÈ   rŸ   r	  )	rb   rb  rc   rd  re  rF   ra   r�   r_  rg   rg   rh   Útest_boxplot_verticalc  s0    
ûz(TestDataFramePlots.test_boxplot_verticalc              	   C   sÂ   t tj dd¡ttjd d… ƒddddgd�}d}tjt	|d	�� |j
jd
d� W 5 Q R X |j
jdd�}|  |d¡ |j
jdd�}|  |d¡ |j
 ¡ }|  |d¡ |j
jdd�}|  |d¡ d S )Nr:   r   rI  rJ  rK  rÄ   r´   z2return_type must be {None, 'axes', 'dict', 'both'}r&   Z
not_a_type)Úreturn_typeÚdictra   Zboth)r   rP   rQ   rŒ   rS   rT   rU   rL   rM   r¨   rI   ra  Z_check_box_return_type)rb   rc   rd   rf   rg   rg   rh   Útest_boxplot_return_type�  s     
ý
z+TestDataFramePlots.test_boxplot_return_typec                 C   s²   t tj dd¡ƒ}t|jdd�}dd„ |jD ƒ}| j||d� | j|dd	� |jdd
dd�}| j|d
ddd� t|jdddd�}| j	|ddd� |jdddd�}| j
|dd� d S )Nr.   r   Úkde©rÎ   c                 S   s   g | ]}t |ƒ‘qS rg   r   r[  rg   rg   rh   rú   ›  s     z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>©re  r   r    r  r+   )rÎ   rQ  rR  rS  T)r   rÎ   r   r   r   )rÎ   r�   r   rš   rž   )r   rP   rQ   rŒ   r   rI   rB   Ú_check_legend_labelsrK   rJ   r¤   )rb   rc   rF   r  ra   rg   rg   rh   Útest_kde_df—  s     üzTestDataFramePlots.test_kde_dfc                 C   s0   t tjjdd�ƒ}tj|jd< t|jdd� d S )N)r.   r   ©r2  ©r   r   ro  rp  )r   rP   rQ   Úuniformru   Úlocr   rI   r’   rg   rg   rh   Útest_kde_missing_vals­  s    z(TestDataFramePlots.test_kde_missing_valsc                    sV  ddl m‰  ttj dd¡ƒ}|d }t|jjƒ}dd„ |j	D ƒ}| j
||d� t|jjdddd	�}| j|dd
d� | j|dd� |jjdd�}| j|ddd� t ¡  |jjdddd�}‡ fdd„| ¡ D ƒ}t |d  ¡ d¡ t ¡  |jjddd�}‡ fdd„| ¡ D ƒ}t |d  ¡ d¡ t ¡  |jjdddd�}| j|dddd� d S )Nr   ©Ú	Rectangler.   r   c                 S   s   g | ]}t |ƒ‘qS rg   r   r[  rg   rg   rh   rú   º  s     z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>rq  T)r   r   r�   r   r   rš   rž   r\  r]  r^  )Ú
cumulativeÚbinsÚdensityc                    s   g | ]}t |ˆ ƒr|‘qS rg   ©r¬   ©rø   r$   ry  rg   rh   rú   Ì  s     
 r   r¼   )r{  r|  c                    s   g | ]}t |ˆ ƒr|‘qS rg   r~  r  ry  rg   rh   rú   Ñ  s     
 rü   g      Y@rg  r@   Ú
horizontal)rQ  rR  Úorientationri  )Zmatplotlib.patchesrz  r   rP   rQ   rŒ   r   rI   r}   rB   rr  rJ   r¤   rK   rG   r®   Zget_childrenÚassert_almost_equalró   )rb   rc   rc  rF   r  ra   Zrectsrg   ry  rh   Útest_hist_df³  s6    üzTestDataFramePlots.test_hist_dfÚweightsçš™™™™™¹?©r.   )Úshape)r.   r   c                 C   sz   t j d¡ tttddgt j dd¡ƒƒƒ}t|jd|d�}t|jdd�}d	d
„ |j	D ƒ}dd
„ |j	D ƒ}t
 ||¡ d S )Nr   ro   rp   r   r.   r}   )rÎ   r„  rp  c                 S   s   g | ]}|  ¡ ‘qS rg   r  ©rø   Úpatchrg   rg   rh   rú   å  s     z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |  ¡  ‘qS )r…  r  rˆ  rg   rg   rh   rú   é  s     )rP   rQ   Úseedr   rm  rZ   rŒ   r   rI   rí   rG   r‚  )rb   r„  rc   rÕ   rÖ   Zpatch_height_with_weightsZexpected_patch_heightrg   rg   rh   Útest_hist_weightsÚ  s     z$TestDataFramePlots.test_hist_weightsNc           
      C   s´   t  dd„ |D ƒ¡}t  dd„ |D ƒ¡}t  dd„ |D ƒ¡}t  dd„ |D ƒ¡}	|d k	rhtj||dd� |d k	r€tj||dd� |d k	r˜tj||dd� |d k	r°tj|	|dd� d S )Nc                 S   s   g | ]}|  ¡ ‘qS rg   rö   r÷   rg   rg   rh   rú   õ  s     z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS rg   r  r÷   rg   rg   rh   rú   ö  s     c                 S   s   g | ]}|  ¡ ‘qS rg   r  r÷   rg   rg   rh   rú   ÷  s     c                 S   s   g | ]}|  ¡ ‘qS rg   )rñ   r÷   rg   rg   rh   rú   ø  s     F)Zcheck_dtype)rP   rt   rG   rÈ   )
rb   rí   Ú
expected_yÚ
expected_hÚ
expected_xÚ
expected_wZresult_yZresult_heightZresult_xZresult_widthrg   rg   rh   Ú_check_box_coordí  s    z#TestDataFramePlots._check_box_coordc                 C   s®  t t t dddddg¡t dddd	d
g¡¡t t dddddg¡t dddddg¡¡t t dddddg¡t d
d	dddg¡¡dœdddgd�}t t t tjdddddg¡t ddddd	d
g¡¡t t dtjddddg¡t ddddddg¡¡t t dddtjddg¡t d
d	ddddg¡¡dœdddgd�}||fD �]h}|jjdd�}| j|jd d… t dddddg¡t dddd	d
g¡d� | j|jdd… t dddddg¡t dddddg¡d� | j|jdd … t dddddg¡t d
d	dddg¡d� |jjddd�}| j|jd d… t dddddg¡t dddd	d
g¡d� | j|jdd… t dddd	d
g¡t dddddg¡d� | j|jdd … t dddddg¡t d
d	dddg¡d� |jjdddd�}| j|d jt dddddg¡t dddd	d
g¡d� | j|d jt dddddg¡t dddddg¡d� | j|d jt dddddg¡t d
d	dddg¡d� |jjddd�}| j|jd d… t dddddg¡t dddd	d
g¡d� | j|jdd… t dddddg¡t dddddg¡d� | j|jdd … t dddddg¡t d
d	dddg¡d� |jjdddd�}| j|jd d… t dddddg¡t dddd	d
g¡d� | j|jdd… t dddd	d
g¡t dddddg¡d� | j|jdd … t dddddg¡t d
d	dddg¡d� |jjddddd�}| j|d jt dddddg¡t dddd	d
g¡d� | j|d jt dddddg¡t dddddg¡d� | j|d jt dddddg¡t d
d	dddg¡d� �q>d S ) Nr   r   r"   r   r+   r(   é	   r@   r;   r:   r  ro   rp   rq   r‹   )r|  r   )rŒ  r�  T)r|  rÑ   é   é   r•   rN  é   )r|  rÑ   r   r€  )r|  r�  )rŽ  r�  )r|  rÑ   r�  )r|  rÑ   r   r�  )	r   rP   Úrepeatrt   ru   rI   r}   r�  rí   )rb   Z	normal_dfZnan_dfrc   rF   ra   rg   rg   rh   Útest_hist_df_coord  sú    ***ýú	 ÿ ÿ ÿùôýýýýýýýýýýýýýýý   ÿýýýz%TestDataFramePlots.test_hist_df_coordc                 C   s(   t tj dd¡ƒ ¡ }t|jdd� d S )Nr.   r   TrL  )r   rP   rQ   rŒ   Úcumsumr   rI   r’   rg   rg   rh   Útest_plot_int_columns‡  s    z(TestDataFramePlots.test_plot_int_columnsc                 C   s¨   dd l m} | ¡ }ttj dd¡ƒ}ddddœdddœdddgddgfD ]X}| ¡  | d	¡ |j	|d
�}t
| ¡ d t|ƒ… ƒD ]\}}| ¡ || ks„t‚q„qJd S )Nr   r.   r"   ú^ú+Úo)r   r   r   ©r   r   éo   )Ústyle)Úmatplotlib.pyplotÚpyplotÚgcfr   rP   rQ   rŒ   ZclfÚadd_subplotrI   Ú	enumerater…   r_   Z
get_markerr`   )rb   r^   re   rc   ÚmarkersrF   ÚidxrO   rg   rg   rh   Útest_style_by_column‹  s    
ü
 z'TestDataFramePlots.test_style_by_columnc                 C   sP   t ddgƒ}| ¡ }| ¡ d ks$t‚|jdd�}| ¡  ¡ d  ¡ dksLt‚d S )Nr   r   TrL  r   Ú )r   rI   Ú
get_legendr`   Ú	get_textsr$  )rb   r�   rF   rg   rg   rh   Útest_line_label_none�  s
    z'TestDataFramePlots.test_line_label_nonezprops, expected)ZboxpropsZboxes)ZwhiskerpropsZwhiskers)ZcappropsZcaps)ZmedianpropsZmediansc                 C   sP   t dd„ dD ƒƒ}|ddii}|jjf ddi|—Ž}|| d  ¡ dksLt‚d S )	Nc                 S   s   i | ]}|t j d ¡“qS r†  )rP   rQ   )rø   rÚ   rg   rg   rh   Ú
<dictcomp>°  s      zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ÚABCÚcolorZC1rl  rm  r   )r   rI   ra  Ú	get_colorr`   )rb   Úpropsr  rc   Zkwdrf   rg   rg   rh   Ú!test_specified_props_kwd_plot_box¥  s    z4TestDataFramePlots.test_specified_props_kwd_plot_boxc                 C   sŽ   t t dddg¡tdddƒtdddƒtdddƒgd	gd
�}| ¡ }|jd  ¡ }|d |d k sdt‚|jd  ¡ }t	 
|t dddg¡¡ d S )Nr¾   r½   r¼   éÜ  r(   r   r‘  r@   Útestr´   r   )r   rP   rt   r   rI   r¯   r­   r`   rÛ   rG   rÈ   )rb   rc   rF   r-   Zydatarg   rg   rh   Útest_unordered_ts¶  s     ýz$TestDataFramePlots.test_unordered_tsc                 C   sj   t ddddgiƒ}tjjD ]}|j|d� t|j|ƒƒ  qdD ]&}|jdd|d� t|j|ƒddƒ q>d S )Nr$   r   r   r"   rp  )r   r€   )r   r   ÚPlotAccessorÚ_common_kindsrI   Úgetattr)rb   rc   rÎ   rg   rg   rh   Útest_kind_both_waysÂ  s    z&TestDataFramePlots.test_kind_both_waysc              
   C   sH   t tdƒƒ}tjjD ].}d}tjt|d�� |j|d� W 5 Q R X qd S )NÚabcdúno numeric data to plotr&   rp  )	r   rS   r   r´  rµ  rL   rM   r  rI   ©rb   rc   rÎ   rd   rg   rg   rh   Útest_all_invalid_plot_dataÌ  s
    z-TestDataFramePlots.test_all_invalid_plot_datac              
   C   sÎ   t tj d¡ dd¡td�}d|tj |jd ¡dk< tj	j
D ].}d}tjt|d	�� |j|d
� W 5 Q R X q>t tj d¡ dd¡td�}d|tj |jd ¡dk< tjtdd	�� |jdd
� W 5 Q R X d S )NrÏ   r(   r   rj   rˆ   r   r"  r¹  r&   rp  rÅ   )r   rP   rQ   rÓ   rŒ   rv   rR   r‡  r   r´  rµ  rL   rM   r  rI   rº  rg   rg   rh   Ú test_partially_invalid_plot_dataÓ  s    z3TestDataFramePlots.test_partially_invalid_plot_datac              	   C   s@   t tj dd¡ƒ}d}tjt|d�� |jdd� W 5 Q R X d S )Nr(   r   z*invalid_plot_kind is not a valid plot kindr&   Zinvalid_plot_kindrp  )r   rP   rQ   rŒ   rL   rM   r¨   rI   rÆ   rg   rg   rh   Útest_invalid_kindá  s    z$TestDataFramePlots.test_invalid_kindzx,y,lblrp   rq   ro   rˆ   r‰   rŠ   c              	   C   sJ   t ddgddgddgdœƒ}tjtdd	�� |j|||d
� W 5 Q R X d S )Nr   r   r"   r   r+   r:   r  úx must be a label or positionr&   ©r$   r%   r�   ©r   rL   rM   r¨   rI   )rb   r$   r%   Úlblrc   rg   rg   rh   Útest_invalid_xy_argsç  s    	z'TestDataFramePlots.test_invalid_xy_argsc              	   C   sR   t ddgddgddgdœƒ}d}tjt|d	�� |jd
ddgdd� W 5 Q R X d S )Nr   r   r"   r   r+   r:   r  z.label should be list-like and same length as yr&   ro   rp   rq   Z	bad_labelr¿  rÀ  rÆ   rg   rg   rh   Útest_bad_labelô  s    z!TestDataFramePlots.test_bad_labelzx,yr„   c              	   C   sL   t dddgdddggtdƒd�}tjtd	d
�� |j||d� W 5 Q R X d S )Nr   r"   r+   r   r   r:   ZAABr‹   r¾  r&   r#   )r   rS   rL   rM   r¨   rI   r.  rg   rg   rh   Útest_invalid_xy_args_dup_colsú  s     z0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsr5  Úbluer   r   r   ZbokehÚcythonÚgreenÚyellowc                 C   sl   t ddgddgddgdœƒ}t|jd||d	� |j||||d
�}t|jƒt|ƒksVt‚| j| ¡ |d� d S )Nr   r   r"   r   r+   r:   r  ro   r¿  )r$   r%   r�   r­  ©Z
linecolors)r   r   rI   r_   r¯   r`   r9  r…   )rb   r$   r%   rÁ  rB  rc   rF   rg   rg   rh   Útest_y_listlike  s
    
z"TestDataFramePlots.test_y_listlikezx,y,colnamesc                 C   s0   t ddgddgdœƒ}||_t|j||d� d S )Nr   r   r"   r   r„   r#   )r   rB   r   rI   )rb   r$   r%   Zcolnamesrc   rg   rg   rh   Útest_xy_args_integer  s    z'TestDataFramePlots.test_xy_args_integerc                 C   sš   t tjjdd�tjjdd�t d¡tjjdd� dœƒ}|jjdddd�}t|jƒdks\t	‚|jjddd	d
�}t|d j
jƒdks†t	‚| j|ddd� d S )Nr  rt  r  ro   rp   r(   )r$   r%   Zgridsizer   T)r$   r%   r   r   r   rD   r   )r   rP   rQ   rv  r˜   rI   r€   r_   r*  r`   Úfigurera   rJ   )rb   rc   rF   ra   rg   rg   rh   Útest_hexbin_basic  s    ýÿz$TestDataFramePlots.test_hexbin_basicc                 C   sˆ   t tjjdd�tjjdd�t d¡tjjdd� dœƒ}|jjdddd�}t|jƒdks\t	‚|jjdddtj
d	�}t|jƒdks„t	‚d S )
Nr  rt  r  ro   rp   rq   )r$   r%   rq   r   )r$   r%   rq   Zreduce_C_function)r   rP   rQ   rv  r˜   rI   r€   r_   r*  r`   Zstdr†   rg   rg   rh   Útest_hexbin_with_c.  s    ýÿz%TestDataFramePlots.test_hexbin_with_czkwargs, expectedZBuGnr4  r3  r7  ZYlGnc                 C   sj   t tjjdd�tjjdd�t d¡tjjdd� dœƒ}|jjf dddœ|—Ž}|jd jj	|ksft
‚d S )Nr  rt  r  ro   rp   r#   r   )r   rP   rQ   rv  r˜   rI   r€   r*  r7  r‘   r`   )rb   Úkwargsr  rc   rF   rg   rg   rh   Útest_hexbin_cmap=  s    	ýÿz#TestDataFramePlots.test_hexbin_cmapc              	   C   sp  t tj dd¡dddgdddd	d
gd�}d}tjt|d�� |j ¡  W 5 Q R X t	|jjdd�}|  
|j|j¡ t	|jjdd�}|  
|j|j¡ t	|jjddd�}t|ƒt|jƒks¸t‚|D ]}|  
|j|j¡ q¼t||jƒD ]\}}| ¡ |ksÞt‚qÞdddddg}dddddg}t	|jjdd||d�}t|ƒt|jƒk�sBt‚|D ]$}|  
|j|¡ | j|j|d� �qFd S )Nr+   r"   ÚXÚYÚZrˆ   r‰   rŠ   rà   ÚerA   z/pie requires either y column or 'subplots=True'r&   r|   r   Tr   ro   rp   rq   rr   rs   rî   ÚgÚm)r   r   re  rB  r6  )r   rP   rQ   rR   rL   rM   r¨   rI   r~   r   r�   Útextsr*   r_   rB   r`   rZ   r8  r9  rí   )rb   rc   rd   rF   ra   Úylabelre  Z
color_argsrg   rg   rh   Útest_pie_dfP  sF    ýýûzTestDataFramePlots.test_pie_dfc              	   C   s  dd l }ttj dd¡ƒ}tdƒD ]}tj|j||f< q"| jj	dd�\}}i }|j
dkr`ddi}t d ¡�  |jjf d|ddœ|—Ž W 5 Q R X dd	d
dg}t|ƒD ]r\}}t|ƒ}	d|	|< dd„ |jD ƒ}
|
|	ksØt‚dd„ | ¡  ¡ D ƒ}|d |… ||d d …  }||ks¤t‚q¤d S )Nr   r   )Zncolsz3.3Ú	normalizeT)r   rF   rM  Ú0Ú1Ú2Ú3r§  c                 S   s   g | ]}|  ¡ ‘qS rg   r#  r  rg   rg   rh   rú   Ž  s     z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS rg   r#  r  rg   rg   rh   rú   ”  s     r   )rA  r   rP   rQ   rR   r[   ru   Zilocr^   r   Ú__version__rG   Úassert_produces_warningrI   r~   r£  rS   r×  r`   r¨  r©  )rb   rC  rc   r%  re   ra   rÏ  Zbase_expectedrF   r  rf   Zresult_labelsÚexpected_labelsrg   rg   rh   Útest_pie_df_nanz  s&    
$z"TestDataFramePlots.test_pie_df_nanc              	   C   sö  t  d¡t  ddd¡dœ}t|ƒ}t  d¡d t  d¡d dœ}t|ƒ}t|j|dd�}| j|dd	d
� t|j|ddd�}| j|dd	d
� t|j|dd�}| j|dd	d
� t|d j||ddd�}| j|d	d	d
� t|d jt  d¡d d�}| j|ddd
� t|jt  d¡d d�}| j|dd	d
� dD ]`}| ¡ }t  d¡d ||< t|j|d�}| j|dd	d
� t|jdd|d�}| j|ddd
� �q*t 	t
¡� |jt j d¡d� W 5 Q R X tdgd dgd dœƒ}t 	t¡� |j|d� W 5 Q R X d S )Nr  r   r   r#   çš™™™™™É?çš™™™™™Ù?T)Úyerrr�   r   ©Úxerrrå  )rå  r    r�   )rå  r£   r   r>   )rå  rç  rÎ   rš   r%   ©rå  )r   r  )rå  u   èª¤å·®r$   )r%   r$   rå  rX  Úzzz)rP   r˜   r   Úonesr   rI   Ú_check_has_errorbarsÚcopyrG   Zexternal_error_raisedr¨   rQ   rŒ   r  )rb   rà   rc   Úd_errÚdf_errrF   rå  Zs_dfrg   rg   rh   Útest_errorbar_plot˜  sD        ÿz%TestDataFramePlots.test_errorbar_plotr>   rò   c                 C   s$  t  d¡t  ddd¡dœ}t|ƒ}t  d¡d t  d¡d dœ}t|ƒ}t|j|d |d�}| j|dd	d
� t|j||d�}| j|dd	d
� t|j|||d�}| j|d	d	d
� t|j|d |d |d�}| j|d	d	d
� t|jdd|d�}| j|d	d	d
� t|jd||d|d�}| j|ddd
� d S )Nr  r   r   r#   rã  rä  r$   ©rå  rÎ   r   ræ  )rå  rç  rÎ   )rç  rå  rÎ   T)r   rå  rç  r   rÎ   r   )rP   r˜   r   rê  r   rI   rë  )rb   rÎ   rà   rc   rí  rî  rF   ra   rg   rg   rh   Ú"test_errorbar_plot_different_kindsÇ  s.    úz5TestDataFramePlots.test_errorbar_plot_different_kindszIterator is consumed)r   rM   c              	   C   sd   t  ¡ �R t d¡t ddd¡dœ}t|ƒ}t|jt dt	|ƒ¡d�}| j
|ddd� W 5 Q R X d S )	Nr  r   r   r#   r…  rè  r   ræ  )ÚwarningsÚcatch_warningsrP   r˜   r   r   rI   Ú	itertoolsr•  r_   rë  )rb   rà   rc   rF   rg   rg   rh   Útest_errorbar_plot_iteratorè  s
    
z.TestDataFramePlots.test_errorbar_plot_iteratorc                 C   sr   t t tj dd¡¡ƒ}t t tj dd¡¡ƒ}t|j|d�}| j|ddd� t|jddd�}| j|ddd� d S )Nr(   r   rè  r   ræ  r   )r%   rå  )r   rP   ÚabsrQ   rŒ   r   rI   rë  )rb   rc   rî  rF   rg   rg   rh   Ú'test_errorbar_with_integer_column_namesò  s    z:TestDataFramePlots.test_errorbar_with_integer_column_namesc           
      C   s.  t t tj dd¡¡ƒ}t t tj dd¡¡ddgd�}ddg}|D ]$}t|j||d�}| j|ddd	� qDtd
ddd�}|j	|dd� |j	|dd� t|j|dd�}| j|ddd	� t 
d¡t 
ddd¡dœ}t |ƒ}t d¡d t d¡d dœ}t |ƒ}||fD ]$}	t|j|	d�}| j|ddd	� �qd S )Nr(   r"   r   r   r‹   rO   r>   rð  ræ  ú1/1/2000ÚM)r  r  T)Zinplacer  r   r#   rã  rä  )r$   rƒ   rè  r   )r   rP   rö  rQ   rŒ   r   rI   rë  r
   r—   r˜   rê  )
rb   rc   rî  ÚkindsrÎ   rF   Úixrà   rí  Úerrrg   rg   rh   Ú"test_errorbar_with_partial_columnsû  s$     z5TestDataFramePlots.test_errorbar_with_partial_columnsc           	      C   s.  t  d¡t  ddd¡dœ}t  d¡d t  d¡d dœ}tddd	d
�}t||d�}t||d�}t|j||d�}| j|ddd� t|j||d�}| j|ddd� t|jd|d |d�}| j|ddd� t|jdd|d�}| j|ddd� t|j||d�}| j|ddd� t|jd||dd�}| j|ddd� d S )Nr  r   r   r#   rã  rä  rø  z1/1/2001rù  )r  r)   rð  r   ræ  r%   r$   )r%   rå  rÎ   r   T)r   rÎ   rå  r   )rP   r˜   rê  r
   r   r   rI   rë  )	rb   rÎ   rà   rí  rû  rß   Ztdf_errrF   ra   rg   rg   rh   Útest_errorbar_timeseries  s.    ûz+TestDataFramePlots.test_errorbar_timeseriesc              	   C   sÐ   t j d¡ t j ddd¡}tt  d¡ dd¡ƒj}|j||d d�}|j	d  
¡ d jd d …df }|dd d …df t  ddg¡ }t ||¡ t d	¡}tjt|d
�� |j|jd� W 5 Q R X t ¡  d S )Nr   r"   r   r+   rN  )rå  rç  r   r   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)r&   rè  )rP   rQ   rŠ  rR   r   r˜   ZreshapeÚTrI   r*  Ú	get_pathsZverticesrt   rG   r‚  r  r  rL   rM   r¨   r®   )rb   rü  rc   rF   Zyerr_0_0Zexpected_0_0rd   rg   rg   rh   Útest_errorbar_asymmetrical4  s      ÿz-TestDataFramePlots.test_errorbar_asymmetricalc              	   C   s”   t tj dd¡ttjd d… ƒd�}t|jdd� t|j|d� t	 
d ¡�@ | ¡ }t|jƒdksft‚t ||j¡ t|jƒdks†t‚W 5 Q R X d S )Nr(   r"   r)   T)Útabler   r   )r   rP   rQ   rR   rS   rT   rU   r   rI   rG   rà  r_   Ztablesr`   r   r  rÿ  r†   rg   rg   rh   Ú
test_tableI  s    $zTestDataFramePlots.test_tablec                    s”  t t tj dd¡¡tdƒddgd�}t t tj dd¡¡d tdƒddgd�}t|jjddd�‰ ˆj	ˆ ddd� t|jjdd|d	�‰ ˆj	ˆ d
dd� t|jjdd|d�‰ ˆj	ˆ dd
d� t|jjdd||d�‰ ˆj	ˆ d
d
d� d‡ ‡fdd„	}t t tj dd¡¡dddddgd�}|jjdddddd�‰ ˆj	ˆ d
d
d� |ˆ j
ddd� |ˆ j
ddd� |jjddddd�‰ ˆj	ˆ dd
d� |ˆ j
ddd� d S )Nr+   r   r$   r%   r´   r#   r   ræ  )r$   r%   rç  r   )r$   r%   rå  )r$   r%   rç  rå  Úhas_xerrc                    sx   g }‡ fdd„ˆj D ƒd }|D ]"}t|ƒr8| |¡ q | |¡ q ‡fdd„|D ƒ}ˆj|t |gt|ƒ ¡d� d S )Nc                    s   g | ]}t |ˆ d ƒr|j‘qS )F)r¶  r¯   r[  ©Úhas_errrg   rh   rú   i  s      z[TestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_color.<locals>.<listcomp>r   c                    s   g | ]}|ˆ j kr|‘qS rg   )r*  r  ©rF   rg   rh   rú   o  s     
 rÉ  )Ú
containersr   ÚextendÚappendr9  rP   rt   r_   )r  r  r  r¯   ZerrsÚelZ	err_lines©rF   rb   r  rh   Ú_check_errorbar_colorg  s     ÿzGTestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_colorr(   rˆ   r‰   rŠ   rà   rÔ  r‹   r5  )r$   r%   rç  rå  rŠ   r  Zhas_yerrrÇ  )r$   r%   rå  r­  )r  )r   rP   rö  rQ   rŒ   r[   r   rI   r   rë  r  )rb   rc   rî  r  rg   r  rh   Útest_errorbar_scatterU  s<      ÿ  ÿ ÿz(TestDataFramePlots.test_errorbar_scatterc              	   C   sH   t dddgddœƒ}tjttfdd�� |jdd	d
dd� W 5 Q R X d S )Nr   r   r"   r   rÙ   z'unknown' is not ar&   rˆ   r‰   Úunknownr   )r$   r%   r4  rÎ   )r   rL   rM   r¨   ÚKeyErrorrI   r’   rg   rg   rh   Útest_scatter_unknown_colormap�  s    z0TestDataFramePlots.test_scatter_unknown_colormapc              
      s„  dd l m} | d¡ tƒ \}}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	œƒ}‡ fd
d„}|D ]}|jddd|dd� qr| | ¡ ¡ ||ƒ t ¡  tƒ \}}t 	t
¡� |jd|dd�}W 5 Q R X ||ƒ t ¡  tƒ \}}|D ]}|jddd|d� qø| | ¡ ¡ |D ]T}t|jƒdk�s:t‚ˆ j| ¡ dd� ˆ j| ¡ dd� ˆ j|jdd�dd� �q"t ¡  d S )Nr   r,  r   r   r"   r   r+   r:   ©rˆ   r‰   rŠ   rà   c                    s®   | D ](}t |jƒdkst‚ˆ j| ¡ dd� q| d | d fD ],}ˆ j| ¡ dd� ˆ j|jdd�dd� q>| d | d fD ],}ˆ j| ¡ dd� ˆ j|jdd�dd� q|d S )	Nr   Tr2   r   r   Fr4   r"   )r_   r¯   r`   rV   rj  rX   ©ra   rF   ©rb   rg   rh   Ú_check™  s    z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkrˆ   r‰   r0   T)r$   r%   r0   rF   Úsharex)r   rF   r  ©r$   r%   r0   rF   r2   r4   )rŸ  r   r®   Ú_generate_4_axes_via_gridspecr   rI   Útight_layoutr¡  rG   rà  ÚUserWarningr_   r¯   r`   rV   rj  rX   ©rb   r^   Úgsra   rc   r  rF   rg   r  rh   Útest_sharex_and_ax‡  s>    

üÿ	

z%TestDataFramePlots.test_sharex_and_axc              
      s€  dd l m} tƒ \}}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œƒ}‡ fd	d
„}|D ]}|jddd|dd� qh| | ¡ ¡ ||ƒ t ¡  tƒ \}}t 	t
¡� |jd|dd�}W 5 Q R X | | ¡ ¡ ||ƒ t ¡  tƒ \}}|D ]}|jddd|d� qü| | ¡ ¡ |D ]T}t|jƒdk�s>t‚ˆ j| ¡ dd� ˆ j| ¡ dd� ˆ j|jdd�dd� �q&d S )Nr   r   r   r"   r   r+   r:   r  c                    s˜   | D ]>}t |jƒdkst‚ˆ j| ¡ dd� ˆ j|jdd�dd� q| d | d fD ]}ˆ j| ¡ dd� qT| d | d fD ]}ˆ j| ¡ dd� q|d S )	Nr   Tr2   r4   r   r   r"   F)r_   r¯   r`   rV   rX   rj  r  r  rg   rh   r  Î  s    z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkrˆ   r‰   r0   T)r$   r%   r0   rF   rê   )r   rF   rê   r  r2   r4   )rŸ  r   r  r   rI   r  r¡  rG   r®   rà  r  r_   r¯   r`   rV   rj  rX   r  rg   r  rh   Útest_sharey_and_ax½  s<    
üÿ	


z%TestDataFramePlots.test_sharey_and_axc              
   C   sä   i }t jjD ]�}i }|dkr`ttjjdd�tjjdd�t d¡tjjdd� dœƒ}dddœ}n|dkrvt 	¡  
¡ }nt 	¡ }t |jf d	|i|—Ž¡||< qt ¡  t ¡  d
}| ¡ D ]$}tjt|d�� |j W 5 Q R X qºdS )z3Check that every plot type gets properly collected.)r€   r   r~   r  rt  r  ro   rp   r#   rÅ   rÎ   z)weakly-referenced object no longer existsr&   N)r   r´  Z
_all_kindsr   rP   rQ   rv  r˜   rG   rH   rö  ÚweakrefÚproxyrI   r®   ÚgcZcollectr>  rL   rM   ÚReferenceErrorr¯   )rb   ÚresultsrÎ   Úargsrc   rd   Zresult_valuerg   rg   rh   Útest_memory_leakò  s*    ýÿ z#TestDataFramePlots.test_memory_leakc           
   	      sB  ddl m‰  dd lm‰ ttj d¡tddd�d�}t	tj dd¡|j
tdƒd	�}‡ ‡fd
d„}‡ ‡fdd„}|ƒ |ƒ fD ]”\}}|j|d�}t|jƒdks t‚|j|d�}t|jƒdks¾t‚||fD ]>}| j| ¡ dd� | j| ¡ dd� | j|jdd�dd� qÆt ¡  qz|ƒ |ƒ fD ]’\}}|jd||gd�}t|jƒdk�sJt‚t|jƒdk�s^t‚|D ]@}| j| ¡ dd� | j| ¡ dd� | j|jdd�dd� �qbt ¡  �q|ƒ \}}t t¡� |jd||gddd�}W 5 Q R X t|d jƒdk�sþt‚t|d jƒdk�st‚||fD ]}| j| ¡ dd� �q| j|d  ¡ dd� | j|d jdd�dd� | j|d  ¡ dd� | j|d jdd�dd� t ¡  |ƒ \}}t t¡� |jd||gddd�}W 5 Q R X t|d jƒdk�sît‚t|d jƒdk�st‚| j|d  ¡ dd� | j|d  ¡ dd� ||fD ].}| j| ¡ dd� | j|jdd�dd� �q:t ¡  ‡ ‡fdd„}	|	ƒ }t	tj dd¡|j
tdƒd	�}|jd|d�}|D ]T}t|jƒdk�sÎt‚| j| ¡ dd� | j| ¡ dd� | j|jdd�dd� �q¶t ¡  |	ƒ }t t¡� |jd|ddd�}W 5 Q R X |D ]}t|jƒdk�sFt‚�qF|d |d fD ]}| j| ¡ dd� �qr|d |d fD ]}| j| ¡ dd� �qœ|d |d fD ].}| j| ¡ dd� | j|jdd�dd� �qÆ|d |d fD ].}| j| ¡ dd� | j|jdd�dd� �qt ¡  d S )Nr   )Úgridspecr(   rø  )r  r)   r   ÚABr´   c                     sL   ˆ   dd¡} ˆ ¡ }| | d d…d d …f ¡}| | dd d …f ¡}||fS )Nr"   r   r   ©ÚGridSpecrÌ  r¢  ©r  re   rÕ   rÖ   ©r&  r^   rg   rh   Ú_get_vertical_grid  s
    zHTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_vertical_gridc                     sL   ˆ   dd¡} ˆ ¡ }| | d d …d d…f ¡}| | d d …df ¡}||fS )Nr   r"   r   r(  r*  r+  rg   rh   Ú_get_horizontal_grid%  s
    zJTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_horizontal_gridr  r   Tr2   r4   rE   )r   rF   r  rê   Fc                     st   ˆ   dd¡} ˆ ¡ }| | d d…d d…f ¡}| | d d…df ¡}| | dd d…f ¡}| | d ¡}||||fS )Nr"   r   r   r(  )r  re   rÕ   rÖ   Zax3Zax4r+  rg   rh   Ú_get_boxed_gridb  s    zETestDataFramePlots.test_df_gridspec_patterns.<locals>._get_boxed_gridr   ZABCDr"   )rA  r&  rŸ  r   r   rP   rQ   rŒ   r
   r   r*   rS   rI   r_   r¯   r`   rV   rj  rX   rG   r®   rà  r  )
rb   Útsrc   r,  r-  rÕ   rÖ   rF   ra   r.  rg   r+  rh   Útest_df_gridspec_patterns  s”    

 
 	z,TestDataFramePlots.test_df_gridspec_patternsc                 C   s4   | j tdddgdddgdœƒtjjdddœd	� d S )
Nr   r   r"   r   rÙ   rˆ   r‰   r#   )Úkws)Z_check_grid_settingsr   r   r´  Z_dataframe_kindsr  rg   rg   rh   Útest_df_grid_settingsˆ  s
    ýz(TestDataFramePlots.test_df_grid_settingsc           	      C   s@  | j  ¡ \}}| ddddg¡ ttj d¡ƒj|d� ttj 	d¡tj 	d¡dœƒ}| j  
¡ }| d¡}|jd|dd	dd
d� | j  ¡ \}}ddlm} ||ƒ}|jdddd�}ttj d¡ƒj|d� ttj d¡ƒj|d� | j  ¡ \}}ddlm} ||dddd�}ttj d¡ƒj|d� ttj d¡ƒj|d� d S )Nrã  r(   r  r@   rÙ   )r   r   r   r   r   rˆ   r‰   Zhsv)rÎ   rF   r$   r%   rŠ   r7  r   )Úmake_axes_locatabler=  z5%gš™™™™™©?)r2  Úpad)Ú
inset_axesz30%r¼   r"   )rð   rZ  rw  )r^   r   Zadd_axesr   rP   rQ   rR   rI   r   rŒ   rÌ  Zmpl_toolkits.axes_grid1r3  Zappend_axesZ%mpl_toolkits.axes_grid1.inset_locatorr5  )	rb   re   rF   rc   r3  ÚdividerZcaxr5  Ziaxrg   rg   rh   Útest_plain_axes�  s$    

z"TestDataFramePlots.test_plain_axesÚmethodc                 C   sp   t tj dd¡tdƒd�jdd„ d�jdd„ d	�}d
}ddg}||ddœ}t|j|ƒf |Ž}| j|j	|d� d S )NrN  r   r'  r‹   c                 S   s
   | j  ¡ S r&  )rp   r—  ©rc   rg   rg   rh   Ú<lambda>³  ó    zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>©rq   c                 S   s
   | j d S )Ngš™™™™™ñ?r<  r9  rg   rg   rh   r:  ´  r;  )rr   r  rq   rr   T)rã   rR  Z
mark_right)ra   rU  )
r   rP   rQ   rŒ   rS   Zassignr¶  rI   rK   rä   )rb   r8  rc   rR  rÌ   rÏ  rF   rg   rg   rh   Útest_secondary_axis_font_size®  s    ÿþÿz0TestDataFramePlots.test_secondary_axis_font_sizec                 C   s”   t dddgdddgdddgd	œƒ}|jjd
d�}| dd¡ dd„ | ¡ D ƒ}tt|| ¡ ƒƒ}|d dkspt‚|d dks€t‚|d dks�t‚d S )Nr"   r   r  rÏ   é   ZMondayZTuesdayZ	Wednesday)ZsalesZvisitsÚdayr?  r”   r   c                 S   s   g | ]}|  ¡ ‘qS rg   r#  ©rø   Útrg   rg   rh   rú   Ê  s     zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>r»   r¼   r½   )	r   rI   rÅ   Úset_xlimrX   rm  rZ   Ú
get_xticksr`   )rb   rc   rF   ÚxticklabelsÚlabels_positionrg   rg   rh   Útest_x_string_values_ticks¾  s    ýÿz-TestDataFramePlots.test_x_string_values_ticksc                 C   s®   t  ddgddgg¡}ttj dd¡ddg|d�}| ¡ }| d	d¡ d
d„ | ¡ D ƒ}t	t
|| ¡ ƒƒ}|d dkszt‚|d dksŠt‚|d dksšt‚|d dksªt‚d S )Nr±  iÝ  r   r   r   ro   rp   rA   r   c                 S   s   g | ]}|  ¡ ‘qS rg   r#  r@  rg   rg   rh   rú   Ø  s     zETestDataFramePlots.test_x_multiindex_values_ticks.<locals>.<listcomp>z	(2012, 1)r»   z	(2012, 2)r¼   z	(2013, 1)r½   z	(2013, 2)r¾   )r   Zfrom_productr   rP   rQ   rŒ   rI   rB  rX   rm  rZ   rC  r`   )rb   r*   rc   rF   rD  rE  rg   rg   rh   Útest_x_multiindex_values_ticksÑ  s    z1TestDataFramePlots.test_x_multiindex_values_ticksc                 C   sL   t ddgddgd�}|j|d�}| ¡ }|d dk s8t‚|d dksHt‚d S )Nr   r   r   r)   rp  r   )r   rI   r¿   r`   )rb   rÎ   rc   rF   Úxlimsrg   rg   rh   Útest_xlim_plot_lineà  s
    z&TestDataFramePlots.test_xlim_plot_linec                 C   sÈ   | j  ¡ \}}ddddg}tddddgdd	dd
gddddgddddgdœ|d�}|dddg jj|dd� |dg j|dd� | ¡ }|d dk s–t‚|d dks¦t‚dd„ | ¡ D ƒ}||ksÄt‚d S )NZk1Zk2Zk3Zk4iè  r²   iÜ  i„  ix  i¸  i@  i°  r   r"   r   )Ús1Ús2Ús3rã   r)   rJ  rK  rL  F)rF   rÑ   rã   T)rF   rã   r   c                 S   s   g | ]}|  ¡ ‘qS rg   r#  r@  rg   rg   rh   rú     s     zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)r^   r   r   rI   r>   r¿   r`   rX   )rb   re   rF   Zindexesrc   rH  rD  rg   rg   rh   Ú0test_xlim_plot_line_correctly_in_mixed_plot_typeê  s"    



üù	zCTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_typec                 C   sl   t dgtd�}|jst‚| ¡ }t| ¡ ƒdks4t‚| ¡ d }t| ¡ ƒdksTt‚t| ¡ ƒdksht‚d S )NZfoo)rB   rk   r   r   )	r   ÚintÚemptyr`   rI   r_   r…   r­   rÛ   )rb   rc   rF   rO   rg   rg   rh   Útest_plot_no_rows  s    
z$TestDataFramePlots.test_plot_no_rowsc              	   C   s4   t dddgƒ}tjtdd�� | ¡  W 5 Q R X d S )Nrˆ   r‰   rŠ   r¹  r&   )r   rL   rM   r  rI   r’   rg   rg   rh   Útest_plot_no_numeric_data  s    z,TestDataFramePlots.test_plot_no_numeric_data)rO   r>   rò   r}   ro  r}  rÅ   r~   c                 C   sÀ   t  d¡t  d¡d t  d¡d t  d¡t  d¡dœ}t|ƒ}|jddg|d�}t|ƒdks`t‚dd	gd
dgdgf}t||ƒD ]<\}}|dkrœ| j||d� |dkr~t|jƒt|ƒks~t‚q~d S )Nr(   r   )rˆ   r‰   rŠ   rà   rÔ  )r‰   rÔ  )rŠ   rà   ©r   rÎ   r"   r‰   rÔ  rŠ   rà   rˆ   r~   rq  rO   )	rP   r˜   r   rI   r_   r`   rZ   rr  r¯   )rb   rÎ   rà   rc   ra   rá  rF   re  rg   rg   rh   Útest_group_subplot  s    ûz%TestDataFramePlots.test_group_subplotc              	   C   s<   t tdƒƒ}d}tjt|d�� |jdgd� W 5 Q R X d S )Nr   z!An iterable subplots for a Seriesr&   ©rˆ   rC   )r   r[   rL   rM   ÚNotImplementedErrorrI   )rb   Zserrd   rg   rg   rh   Ú(test_group_subplot_series_notimplemented+  s    z;TestDataFramePlots.test_group_subplot_series_notimplementedc              	   C   sL   t t d¡t ddg¡d�}d}tjt|d�� |jdgd� W 5 Q R X d S )Nr   rœ  )r   r   r‹   z6An iterable subplots for a DataFrame with a MultiIndexr&   rC   )	r   rP   Úeyer   r\   rL   rM   rU  rI   rÆ   rg   rg   rh   Ú,test_group_subplot_multiindex_notimplemented1  s    z?TestDataFramePlots.test_group_subplot_multiindex_notimplementedc              	   C   sF   t t d¡ddgd�}d}tjt|d�� |jdgd� W 5 Q R X d S )Nr   rˆ   r‹   z4An iterable subplots for a DataFrame with non-uniquer&   rT  rC   )r   rP   rW  rL   rM   rU  rI   rÆ   rg   rg   rh   Ú0test_group_subplot_nonunique_cols_notimplemented7  s    zCTestDataFramePlots.test_group_subplot_nonunique_cols_notimplementedzsubplots, expected_msg)é{   z(subplots should be a bool or an iterable)rˆ   ú!each entry should be a list/tuple))r   r[  )rT  r[  c              	   C   sH   t  d¡t  d¡dœ}t|ƒ}tjt|d�� |j|d� W 5 Q R X d S )Nr(   rÙ   r&   rC   ©rP   r˜   r   rL   rM   r¨   rI   )rb   r   Zexpected_msgrà   rc   rg   rg   rh   Útest_group_subplot_bad_input=  s    z/TestDataFramePlots.test_group_subplot_bad_inputc              	   C   sJ   t  d¡t  d¡dœ}t|ƒ}tjtdd�� |jdgd� W 5 Q R X d S )Nr(   rÙ   z Column label\(s\) \['bad_name'\]r&   )rˆ   Zbad_namerC   r\  ©rb   rà   rc   rg   rg   rh   Ú&test_group_subplot_invalid_column_nameP  s    z9TestDataFramePlots.test_group_subplot_invalid_column_namec              	   C   sT   t  d¡t  d¡t  d¡dœ}t|ƒ}tjtdd�� |jddgd� W 5 Q R X d S )Nr(   )rˆ   r‰   rŠ   zshould be in only one subplotr&   rÙ   )rˆ   rŠ   rC   r\  r^  rg   rg   rh   Ú$test_group_subplot_duplicated_columnW  s    z7TestDataFramePlots.test_group_subplot_duplicated_column)ra  r   r€   c              	   C   sL   t  d¡t  d¡dœ}t|ƒ}tjtdd�� |jdg|d� W 5 Q R X d S )Nr(   rÙ   z1When subplots is an iterable, kind must be one ofr&   rR  r\  )rb   rÎ   rà   rc   rg   rg   rh   Útest_group_subplot_invalid_kind^  s     ÿz2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr§  Únew)Úoldrc  rb  )Nr§  r§  )Nr§  r   r§  c                 C   sŒ   t ddgddggddgd�}||j_|j|d�}| ¡ |ks@t‚| ¡ dksPt‚|j|||d	�}| ¡ t|ƒkstt‚| ¡ t|ƒksˆt‚d S )
Nr   r   r+   úType AúType Br‹   rp  r§  )rÎ   rØ  Úxlabel)r   r*   r‘   rI   Ú
get_xlabelr`   r8  Ústr)rb   rÎ   Z
index_nameZ	old_labelZ	new_labelrc   rF   rg   rg   rh   Ú(test_xlabel_ylabel_dataframe_single_plotg  s    z;TestDataFramePlots.test_xlabel_ylabel_dataframe_single_plotzxlabel, ylabel)NN)úX LabelN)NúY Label)rj  rk  r   r€   c                 C   st   d}d}t ddgddgg||gd�}|j|||||d�}| ¡ |d krJ|n|ksTt‚| ¡ |d krf|n|kspt‚d S )Nrd  re  r   r   r+   r‹   )rÎ   r$   r%   rf  rØ  )r   rI   rg  r`   r8  )rb   rÎ   rf  rØ  ZxcolZycolrc   rF   rg   rg   rh   Ú'test_xlabel_ylabel_dataframe_plane_plotƒ  s    z:TestDataFramePlots.test_xlabel_ylabel_dataframe_plane_plotrã   )FTc                 C   sj   t dgƒj|dddgd�}|jjD ]B}|j ¡ r"| ¡ dks@t‚| ¡ dksPt‚| 	¡ d dks"t‚q"d S )Nr   rÒ  )r   r.   r¶   )rã   rØ  r/   r,   )
r   rI   rÌ  ra   rŸ   Zget_visibler8  r`   rè   Z
get_yticks)rb   rã   Zax_dfrF   rg   rg   rh   Útest_secondary_y˜  s    
   ÿ
z#TestDataFramePlots.test_secondary_y)NNNN)oÚ__name__Ú
__module__Ú__qualname__rL   ÚmarkZxfailZslowri   r{   r‚   r‡   rŽ   r“   r™   Zparametrizer¥   r©   r°   rµ   rº   rÃ   rÇ   rÍ   rØ   râ   ræ   ré   rë   rï   rô   r  r  r
  r  r  r  r  r-  r/  r;  r?  rD  rH  rY  rf  rk  rn  ÚtdZskip_if_no_scipyrs  rx  rƒ  rP   rê  r‹  r�  r–  r˜  r¦  rª  r°  r³  r·  r»  r¼  r½  rÂ  rÃ  rÄ  rÊ  rË  rÍ  rÎ  rÐ  rÙ  râ  rï  rñ  r¨   rõ  r÷  rý  rþ  r  r  r  r  r  r  r%  r0  r2  r7  r=  rF  rG  rI  rM  rP  rQ  rS  rV  rX  rY  r]  r_  r`  ra  ri  rl  rm  rg   rg   rg   rh   r   '   s˜  f
 ÿ

%
/'þ%		þ
1	
 

' ÿ
   ú
 üþ	

	þþ

ýþ
	$


ýþ
*
.
		

!,65
"s

	
 ÿüþ	
ûþ
üþ	r   c                  C   sr   dd l } dd l}dd lm} | j dd¡}| |d ¡}| |d ¡}| |d ¡}| |d ¡}|||||gfS )Nr   r   ru  )r   r   rœ  rD   )rA  Zmatplotlib.gridspecrŸ  r   r&  r)  Zsubplot)rC  rA  r^   r  Zax_tlZax_llZax_trZax_lrrg   rg   rh   r  ¤  s    r  )&Ú__doc__r   r   r!  rô  r  rT   rò  r  ÚnumpyrP   rL   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrr  Zpandas.core.dtypes.apir   Zpandasrw   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingrG   Zpandas.tests.plotting.commonr   r   Zpandas.io.formats.printingr   Zskip_if_no_mplr   r  rg   rg   rg   rh   Ú<module>   sH   $	                 