U
    `»{jYM ã                   @   s
  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	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 d dlmZ d dlmZmZ d dlmZ d dlm Z  zd dl!m"Z" W n e#k
ræ   dd	„ Z"Y nX ej$G d
d„ deƒƒZ%dd„ Z&dS )é    )ÚdateÚdatetimeN)Úis_list_like)Ú	DataFrameÚ
MultiIndexÚPeriodIndexÚSeriesÚbdate_rangeÚ
date_range)ÚTestPlotBaseÚ_check_plot_works©Úpprint_thing)Úmpl_ge_3_6_0c                   C   s   dS )NT© r   r   r   úe/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/plotting/frame/test_frame.pyÚ<lambda>&   ó    r   c                   @   st  e Zd Zejjeƒ 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/e0j1didj„ ƒZ2e0j1dkdl„ ƒZ3dmdn„ Z4ej dodpe5j6dqdr� dpe5j6dsdr� g¡dtdu„ ƒZ7�ddwdx„Z8dydz„ Z9d{d|„ Z:d}d~„ Z;dd€„ Z<ej d�d‚dƒd„d…g¡d†d‡„ ƒZ=dˆd‰„ Z>e0j1dŠd‹„ ƒZ?dŒd�„ Z@dŽd�„ ZAd�d‘„ ZBej d’d“d”gd•d–fd•gd“d”gd—d˜gfg¡d™dš„ ƒZCd›dœ„ ZDej d�džd•gd“fg¡dŸd „ ƒZEe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¬„ ƒZFej d­d¤d¥d•d“gfd¥d¤d¤d¥gfg¡d®d¯„ ƒZGd°d±„ ZHd²d³„ ZIej d´i dµfd¶d·id·fd¸d¹id¹fg¡dºd»„ ƒZJd¼d½„ ZKd¾d¿„ ZLejjdÀdÁ„ ƒZMejjej d(d)dÂdÃg¡dÄdÅ„ ƒƒZNejjdÆeOdÇ�dÈdÉ„ ƒZPdÊdË„ ZQejjdÌdÍ„ ƒZRej d(d)dÂdÃg¡dÎdÏ„ ƒZSdÐdÑ„ ZTdÒdÓ„ ZUdÔdÕ„ ZVdÖd×„ ZWdØdÙ„ ZXe0j1dÚ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ð„ Zce0j1e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„ ƒZn�d�d„ ZodvS (   ÚTestDataFramePlotszApi changed)Ú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� 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d0d1gd2d3gd/�}ttj ddd4¡||d5�}t|jd6d$� td7tj d¡iƒ}t|jjdd8�}| j|dd9d� t|jjdd:d;�}| j|dd9d� | j ¡ \}}|jjd|d<�}t|ƒdk�snt‚|j}	|	|d k�s†t‚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#   ©Zsort_columnsé   )Úyticks)Úxticks)iœÿÿÿéd   )ÚylimZxlimZblah)r   r   Útitle)r   r5   ©r&   r   ©Úvisible©Úminor)r5   )õ   Î±r   )r;   r   )õ   Î²r!   )r<   r&   )õ   Î³r   )r=   r0   )õ   Î´é   )r>   é   Zi0Úi1)Únames)Úbaru   Î”)rC   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ÚrandintrC   Úpltr   ÚlenÚAssertionErrorÚaxes)
ÚselfÚdfrf   ÚmsgrK   Ztuplesr.   rG   ÚfigÚresultr   r   r   Ú	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   r0   r@   ©Údtypez%Y)ÚformatÚi8T)ro   Úutc)ÚAÚBÚCÚDÚErr   rs   r'   rt   ru   rv   )
r   rU   ÚarrayÚnanÚobjectÚpdÚto_datetimeÚviewr   rN   )rg   Údatesrh   r   r   r   Ú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UInt32rm   r'   r)   ©r)   r(   )rz   rw   r   r   rN   rT   rC   ÚhistÚpier   ÚscatterÚhexbin)rg   ZarrÚsrh   r   r   r   Ú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&   ©rr   rs   )r   rN   rd   Ú	get_linesre   ©rg   rh   rK   r   r   r   Ú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©rG   r'   )r   rU   rV   ÚrandnrN   Ú_check_text_labelsr\   r^   r‰   r   r   r   Ú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   rU   rV   r�   r.   ÚnamerN   re   ©rg   rh   r   r   r   Ú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'   rr   rs   ©r(   r   r!   ZTest)é   rE   )r(   r)   r5   ÚfigsizerI   )g      0@g       @)r   r   r™   )rL   rM   Z_check_datarN   Ú	set_indexrs   rU   Úarangerd   rG   r�   r5   rO   r‰   r   r   r   Ú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‹   r3   r-   ©Úlogy©Úyaxis)Úlogx©r\   ©Úloglog)r\   r¢   )r   rU   r›   rN   Ú_check_ax_scalesZ
get_yscalere   Z
get_xscale)rg   Z	input_logZexpected_logrh   rK   r   r   r   Ú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‹   r3   r-   z9Boolean, None and 'sym' are valid options, 'sm' is given.r*   Úsm)r   rU   r›   rQ   rR   Ú
ValueErrorrN   )rg   r©   rh   ri   r   r   r   Ú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­   )rL   rM   rN   rˆ   Ú
isinstanceÚ	get_xdatar   re   rP   ÚcloseÚplottingZplot_paramsZuse)rg   rh   rK   Úlinesr   r   r   Ú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.   rG   r   r   )r   rU   rV   rW   r	   r   rN   rc   ZaxhlinerL   r±   r•   r   r   r   Ú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)   r3   éc   r    )r.   rn   r   r   )rn   r”   F)Zcheck_index_typerm   )r   rU   r›   Zint64rN   rˆ   Z
get_xydatar   rL   Zassert_series_equalr)   r±   rz   ÚIndexÚfloat64r.   )rg   rh   rK   r³   Úrsr   r   r   Útest_unsorted_index4  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   rN   Úget_xlimrˆ   rU   ZnanminÚget_datare   Znanmaxrx   )rg   rh   rK   ÚxminÚxmaxr³   r   r   r   Útest_unsorted_index_limsF  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   rU   rV   rW   rX   rY   rZ   rQ   rR   r«   rN   Úarea©rg   rh   ri   r   r   r   Ú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   )rU   Zzerosrd   rÄ   r_   rL   Úassert_numpy_array_equal)rg   Znormal_linesZstacked_linesÚbaseÚnlÚslÚsyr   r   r   Ú_compare_stacked_y_coodk  s
    z*TestDataFramePlots._compare_stacked_y_coodÚkindrT   rÉ   c           
   
   C   s¾  t  d¡��¨ ttj dd¡ddddgd�}| }ttj d¡tj d¡tj d¡ tj d¡ d	œƒ}ttj 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� W 5 Q R X 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Õ   )rL   Ú
RNGContextr   rU   rV   rW   r�   rX   rY   rZ   r   rN   rÑ   r³   rQ   rR   r«   rš   r.   )
rg   rÒ   rh   Úneg_dfZsep_dfZmixed_dfÚax1Úax2ri   Údf2r   r   r   Útest_line_area_stackedr  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   rm   FTrÖ   )rU   rx   r   rL   ZmakeDateIndexr   rN   r³   Ú	get_ydatarw   r¼   rÌ   ÚdeleteÚdataÚmaskrÉ   )rg   Zvalues1Zvalues2rh   ÚtdfÚdrK   Zmasked1Zmasked2ÚexpZ	expected1Z	expected2r   r   r   Ú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   r6   r   Zleft_axÚright_ax)r   rU   rV   rW   rN   rÃ   rˆ   rÄ   re   rO   Úhasattr)rg   rh   rK   rÅ   rÆ   r³   rf   r   r   r   Ú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   rU   rV   rW   r   rN   rÉ   rÃ   Úget_ylimrˆ   rÄ   re   )
rg   rÕ   rh   rØ   rK   rÅ   rÆ   ZyminZymaxr³   r   r   r   Ú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É   )rK   rÒ   )
r   rU   rV   rW   rc   r   rN   Z
get_y_axisZjoinedre   )rg   rh   rj   rÙ   rÚ   r   r   r   Ú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 )	Nr0   r!   )Ú	linewidthT)rÕ   rð   )rð   r   )r0   r   r   )
r   rU   rV   r�   rN   rC   ÚpatchesZget_linewidthre   rO   )rg   rh   rK   Úrrf   r   r   r   Ú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 )Nr0   gÍÌÌÌÌÌì?)ÚwidthT)rÕ   rô   )rô   r   )r   rU   rV   r�   rN   rC   rñ   Ú	get_widthrd   rG   re   ÚbarhÚ
get_height)rg   rh   rô   rK   rò   rf   r   r   r   Ú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 )Nr0   Fr   )rÕ   Úbottomc                 S   s   g | ]}|  ¡ ‘qS r   ©Zget_y©Ú.0Úpr   r   r   Ú
<listcomp>?  s     z;TestDataFramePlots.test_bar_bottom_left.<locals>.<listcomp>é   Tr    éþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿc                 S   s   g | ]}|  ¡ ‘qS r   rú   rû   r   r   r   rþ   C  s     )rÕ   Úleftc                 S   s   g | ]}|  ¡ ‘qS r   ©Úget_xrû   r   r   r   rþ   G  s     r!   r&   r   c                 S   s   g | ]}|  ¡ ‘qS r   r  rû   r   r   r   rþ   K  s     )r   rù   c                 S   s   g | ]}|  ¡ ‘qS r   rú   rû   r   r   r   rþ   P  s     )r   r  c                 S   s   g | ]}|  ¡ ‘qS r   r  rû   r   r   r   rþ   U  s     )
r   rU   rV   rW   rN   rC   rñ   re   rö   rw   )rg   rh   rK   rk   rf   r   r   r   Útest_bar_bottom_left<  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,   é   r0   r   r!   r&   ©rr   rs   rt   r   c                 S   s   g | ]}|  ¡ ‘qS r   ©r÷   rû   r   r   r   rþ   \  s     z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>TrÖ   c                 S   s   g | ]}|  ¡ ‘qS r   r
  rû   r   r   r   rþ   `  s     c                 S   s   g | ]}|  ¡ ‘qS r   rú   rû   r   r   r   rþ   c  s     r¿   g      $@g      4@g      .@g      D@)r   rU   rx   rN   rC   rñ   re   )rg   rh   rK   Úexpectedrk   r   r   r   Útest_bar_nanX  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?   r0   ZABCDEFZabcder¸   r   r   r!   r&   r   )g      à¿g      @g      Ð¿r    gš™™™™™@TrÖ   g      @)r   rU   rV   r�   rz   r»   rX   ZCategoricalIndexrN   rC   r\   Úget_ticklocsrL   rÌ   rw   rÃ   re   rñ   r  )rg   Zdf1rÛ   rh   rK   Zticksr   r   r   Útest_bar_categoricalg  s,    ýý

z'TestDataFramePlots.test_bar_categoricalc              	   C   s8  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 tjtdd�� |jj	ddd
d
d� W 5 Q R X tjtdd�� |jj	ddd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   z%Specify exactly one of `s` and `size`)r(   r)   r„   Úsizez&Specify exactly one of `c` and `color`r‹   rŒ   ÚredÚgreen)r(   r)   r�   Úcolorr‚   T)r(   r)   rÒ   r   rI   r   )r   rU   rV   r�   rX   rY   rZ   r   rN   r‚   ÚreÚescaperQ   rR   Ú	TypeErrorrO   )rg   rh   ri   rf   r   r   r   Ú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   rU   rV   r�   r
   ÚtimerQ   rR   r  rN   rÊ   r   r   r   Ú&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   )r}   Úvalsr}   r  r'   )
r
   r   rU   rV   Únormalrd   r   r   rN   r‚   )rg   r}   r  rh   r   r   r   Ú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 )Nrr   rs   rt   r!   r&   r   rÝ   r‹   rŒ   r'   r   r   r�   )r   r   rN   r‚   r•   r   r   r   Ú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 r   ©Úget_text)rü   Úir   r   r   rþ   Ø  s     zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s   | ]\}}||kV  qd S ©Nr   )rü   r-  Újr   r   r   Ú	<genexpr>Ù  s     zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   rz   ÚCategoricalrN   r‚   ÚcollectionsÚcolorbarrU   rw   Z	get_ticksrL   rÌ   Z_boundariesrK   Zget_ymajorticklabelsÚallr_   re   )rg   r#  r$  rh   rK   Zcolorbar_collectionr3  Zexpected_ticksZresult_ticksZexpected_boundariesZresult_boundariesZexpected_yticklabelsZresult_yticklabelsr   r   r   Ú%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   rz   r1  r   rN   r‚   ©rg   r(   r)   rh   r   r   r   Ú'test_plot_scatter_with_categorical_dataÛ  s    $z:TestDataFramePlots.test_plot_scatter_with_categorical_datac           
      C   sÖ  ddl m} 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 ]R}|jd jjdks€t‚|ƒ r¢|jd jj ¡ d	ks¸t‚qf|jd jjd	ksft‚qfd}|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   )Úmpl_ge_3_4_0r3   )r?   r   )ÚlowÚhighr  r?   r(   r)   r†   rÈ   r¸   r)  r   r!   ZGreysÚ	cubehelix)r(   r)   r�   ÚcolormapF)r(   r)   r�   r3  r  rò   ©Z
facecolorsr&   r   r‡   rÀ   r¿   rr   rs   Zspring)r(   r)   r�   Úcmap)Ú"pandas.plotting._matplotlib.compatr8  r   rU   rV   rb   rX   rY   rZ   rN   r‚   r2  r>  r”   re   r3  rK   Ú
get_ylabelZ_labelÚ_check_colorsrw   rL   rÌ   Zget_facecolor)
rg   r8  rh   rf   rK   ÚcmZred_rgbaZ
green_rgbaZ
rgba_arrayZfloat_arrayr   r   r   Útest_plot_scatter_with_câ  s8    
ý$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&   r3   r‹   rŒ   r�   rŽ   )r(   r)   r„   r   )Úright)
r   rU   rV   rN   r‚   rL   rÌ   Úvaluesr2  Z	get_sizesr‰   r   r   r   Ú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   rD  r3   r‹   rŒ   r�   rŽ   )r(   r)   r�   Únorm)Ú
matplotlibr   rU   rV   ÚcolorsZLogNormrN   r‚   r2  rH  re   )rg   Úmplrh   rH  rK   r   r   r   Ú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   rD  r3   r‹   rŒ   r�   rŽ   r)  )rI  r   rU   rV   rN   r‚   r2  rH  r�   ÚminÚmaxrJ  Z	Normalizere   )rg   rK  rh   rK   Z	plot_normZcolor_min_maxZdefault_normÚvaluer   r   r   Ú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   é   )r^  r]  r\  )r   rU   rV   r�   rX   rY   rZ   r   rN   rC   r`   rP   rö   r‰   r   r   r   Útest_plot_bar4  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 r   r   ©rü   r�   r   r   r   rþ   Y  s     z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>r   r@   é(   ©rY  r   ©r%   r^  r?   )Ú	positionsc                 S   s   g | ]}t |ƒ‘qS r   r   rc  r   r   r   rþ   l  s     )Ú_get_numeric_datarG   r   rN   Úboxr�   r]   rL   rÌ   r\   r  rU   r›   rd   r³   re   r±   rP   rw   )	rg   Úhist_dfrh   ÚseriesÚnumeric_colsÚlabelsrK   rf   rg  r   r   r   Útest_boxplotU  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 r   r   rc  r   r   r   rþ   t  s     z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>é2   rE   F)rY  rZ  Úvertr   ©r%   r^  r]  r@   T)r   r   rp  r£   r&   )r   r&   r   r�   r¤   r!   )rg  rp  )rh  rG   rN   ri  rP   r�   Úget_yticklabelsrd   r³   re   r   rO   r§   r_   rU   rw   rL   rÌ   r¢   r  )	rg   rj  rh   rl  rm  rK   rf   r“   rg  r   r   r   Útest_boxplot_verticalq  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   rQ  rR  rS  rÈ   r¸   z2return_type must be {None, 'axes', 'dict', 'both'}r*   Z
not_a_type)Úreturn_typeÚdictrf   Zboth)r   rU   rV   r�   rX   rY   rZ   rQ   rR   r«   rN   ri  Z_check_box_return_type)rg   rh   ri   rk   r   r   r   Ú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 )Nr3   r   Úkde©rÒ   c                 S   s   g | ]}t |ƒ‘qS r   r   rc  r   r   r   rþ   ©  s     z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>©rm  r   r$   r  r0   )rÒ   rY  rZ  r[  T)r   rÒ   r   r   r   )rÒ   r    r   r�   r¡   )r   rU   rV   r�   r   rN   rG   Ú_check_legend_labelsrP   rO   r§   )rg   rh   rK   r  rf   r   r   r   Ú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)r3   r   ©r  ©r   r   rw  rx  )r   rU   rV   Úuniformrx   Úlocr   rN   r•   r   r   r   Ú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   ©Ú	Rectangler3   r   c                 S   s   g | ]}t |ƒ‘qS r   r   rc  r   r   r   rþ   È  s     z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>ry  T)r   r   r    r   r   r�   r¡   rd  re  rf  )Ú
cumulativeÚbinsÚdensityc                    s   g | ]}t |ˆ ƒr|‘qS r   ©r¯   ©rü   r(   r�  r   r   rþ   Ú  s     
 r    rÀ   )rƒ  r„  c                    s   g | ]}t |ˆ ƒr|‘qS r   r†  r‡  r�  r   r   rþ   ß  s     
 r   g      Y@ro  rE   Ú
horizontal)rY  rZ  Úorientationrq  )Zmatplotlib.patchesr‚  r   rU   rV   r�   r   rN   r€   rG   rz  rO   r§   rP   rL   r±   Zget_childrenÚassert_almost_equalr÷   )rg   rh   rk  rK   r  rf   Zrectsr   r�  r   Útest_hist_dfÁ  s6    üzTestDataFramePlots.test_hist_dfÚweightsçš™™™™™¹?©r3   )Úshape)r3   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   rr   rs   r!   r3   r€   )rÒ   rŒ  rx  c                 S   s   g | ]}|  ¡ ‘qS r   r
  ©rü   Úpatchr   r   r   rþ   ó  s     z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |  ¡  ‘qS )r�  r
  r�  r   r   r   rþ   ÷  s     )rU   rV   Úseedr   ru  r_   r�   r   rN   rñ   rL   rŠ  )rg   rŒ  rh   rÙ   rÚ   Zpatch_height_with_weightsZexpected_patch_heightr   r   r   Ú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 r   rú   rû   r   r   r   rþ     s     z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r   r
  rû   r   r   r   rþ     s     c                 S   s   g | ]}|  ¡ ‘qS r   r  rû   r   r   r   rþ     s     c                 S   s   g | ]}|  ¡ ‘qS r   )rõ   rû   r   r   r   rþ     s     F)Zcheck_dtype)rU   rw   rL   rÌ   )
rg   rñ   Ú
expected_yÚ
expected_hÚ
expected_xÚ
expected_wZresult_yZresult_heightZresult_xZresult_widthr   r   r   Ú_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   r0   r,   é	   rE   r@   r?   r	  rr   rs   rt   rŽ   )r„  r   )r”  r•  T)r„  rÕ   é   é   r˜   rV  é   )r„  rÕ   r   rˆ  )r„  r‰  )r–  r—  )r„  rÕ   r‰  )r„  rÕ   r   r‰  )	r   rU   Úrepeatrw   rx   rN   r€   r˜  rñ   )rg   Z	normal_dfZnan_dfrh   rK   rf   r   r   r   Útest_hist_df_coord  sú    ***ýú	 ÿ ÿ ÿùôýýýýýýýýýýýýýýý   ÿýýýz%TestDataFramePlots.test_hist_df_coordc                 C   s(   t tj dd¡ƒ ¡ }t|jdd� d S )Nr3   r   TrT  )r   rU   rV   r�   Úcumsumr   rN   r•   r   r   r   Ú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   r3   r&   ú^ú+Úo)r   r   r!   ©r   r   éo   )Ústyle)Úmatplotlib.pyplotÚpyplotÚgcfr   rU   rV   r�   ZclfÚadd_subplotrN   Ú	enumeraterˆ   rd   Z
get_markerre   )rg   rc   rj   rh   ÚmarkersrK   ÚidxrT   r   r   r   Ú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!   TrT  r   Ú )r   rN   Ú
get_legendre   Ú	get_textsr,  )rg   r„   rK   r   r   r   Ú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Ž  )rU   rV   )rü   rÞ   r   r   r   Ú
<dictcomp>¾  s      zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ÚABCr  ZC1rt  ru  r   )r   rN   ri  Ú	get_colorre   )rg   Úpropsr  rh   Zkwdrk   r   r   r   Ú!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™  rE   Útestr¸   r   )r   rU   rw   r   rN   r³   r°   re   rß   rL   rÌ   )rg   rh   rK   r2   Zydatar   r   r   Ú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&   rx  )r‚   rƒ   )r   r²   ÚPlotAccessorÚ_common_kindsrN   Úgetattr)rg   rh   rÒ   r   r   r   Ú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*   rx  )	r   rX   r²   r»  r¼  rQ   rR   r  rN   ©rg   rh   rÒ   ri   r   r   r   Útest_all_invalid_plot_dataÛ  s
    z-TestDataFramePlots.test_all_invalid_plot_datac                 C   sî   t  d¡�n ttj 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 qDW 5 Q R X t  d¡�\ ttj dd¡td�}d|tj |jd ¡dk< tjtdd	�� |jdd
� W 5 Q R X W 5 Q R X d S )NrÓ   r,   r!   rm   r‹   r   r*  rÀ  r*   rx  rÉ   )rL   r×   r   rU   rV   r�   ry   rW   r�  r²   r»  r¼  rQ   rR   r  rN   rÁ  r   r   r   Ú 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_kindrx  )r   rU   rV   r�   rQ   rR   r«   rN   rÊ   r   r   r   Útest_invalid_kindó  s    z$TestDataFramePlots.test_invalid_kindzx,y,lblrs   rt   rr   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   r0   r?   r	  úx must be a label or positionr*   ©r(   r)   r“   ©r   rQ   rR   r«   rN   )rg   r(   r)   Úlblrh   r   r   r   Ú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   r0   r?   r	  z.label should be list-like and same length as yr*   rr   rs   rt   Z	bad_labelrÆ  rÇ  rÊ   r   r   r   Ú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&   r0   r!   r   r?   ZAABrŽ   rÅ  r*   r'   )r   rX   rQ   rR   r«   rN   r6  r   r   r   Útest_invalid_xy_args_dup_cols  s     z0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsr  Úbluer   r   r!   ZbokehÚcythonr  Ú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   r0   r?   r	  rr   rÆ  )r(   r)   r“   r  ©Z
linecolors)r   r   rN   rd   r³   re   rA  rˆ   )rg   r(   r)   rÈ  rJ  rh   rK   r   r   r   Ú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   rG   r   rN   )rg   r(   r)   Zcolnamesrh   r   r   r   Ú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  r|  r	  rr   rs   r,   )r(   r)   Zgridsizer   T)r(   r)   r   r   r!   rI   r   )r   rU   rV   r~  r›   rN   rƒ   rd   r2  re   Úfigurerf   rO   )rg   rh   rK   rf   r   r   r   Ú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  r|  r	  rr   rs   rt   )r(   r)   rt   r   )r(   r)   rt   Zreduce_C_function)r   rU   rV   r~  r›   rN   rƒ   rd   r2  re   Zstdr‰   r   r   r   Útest_hexbin_with_c@  s    ýÿz%TestDataFramePlots.test_hexbin_with_czkwargs, expectedZBuGnr<  r;  r>  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  r|  r	  rr   rs   r'   r   )r   rU   rV   r~  r›   rN   rƒ   r2  r>  r”   re   )rg   Úkwargsr  rh   rK   r   r   r   Útest_hexbin_cmapO  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 )Nr0   r&   ÚXÚYÚZr‹   rŒ   r�   rä   ÚerF   z/pie requires either y column or 'subplots=True'r*   r   r!   Tr   rr   rs   rt   ru   rv   rò   ÚgÚm)r   r   rm  rJ  r=  )r   rU   rV   rW   rQ   rR   r«   rN   r�   r   r�   Útextsr.   rd   rG   re   r_   r@  rA  rñ   )rg   rh   ri   rK   rf   Úylabelrm  Z
color_argsr   r   r   Útest_pie_dfb  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   rK   rU  Ú0Ú1Ú2Ú3r¯  c                 S   s   g | ]}|  ¡ ‘qS r   r+  r‡  r   r   r   rþ      s     z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r   r+  r‡  r   r   r   rþ   ¦  s     r   )rI  r   rU   rV   rW   r`   rx   Zilocrc   r   Ú__version__rL   Úassert_produces_warningrN   r�   r«  rX   rÝ  re   r°  r±  )rg   rK  rh   r-  rj   rf   rÕ  Zbase_expectedrK   r  rk   Zresult_labelsÚexpected_labelsr   r   r   Útest_pie_df_nanŒ  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   rC   )rë  rí  rÒ   r�   r)   ©rë  )r!   r  )rë  u   èª¤å·®r(   )r)   r(   rë  r`  Úzzz)rU   r›   r   Úonesr   rN   Ú_check_has_errorbarsÚcopyrL   Zexternal_error_raisedr«   rV   r�   r  )rg   rä   rh   Úd_errÚdf_errrK   rë  Zs_dfr   r   r   Útest_errorbar_plotª  sD        ÿz%TestDataFramePlots.test_errorbar_plotrC   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   )rU   r›   r   rð  r   rN   rñ  )rg   rÒ   rä   rh   ró  rô  rK   rf   r   r   r   Ú"test_errorbar_plot_different_kindsÙ  s.    úz5TestDataFramePlots.test_errorbar_plot_different_kindszIterator is consumed)r   rR   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_warningsrU   r›   r   r   rN   Ú	itertoolsr�  rd   rñ  )rg   rä   rh   rK   r   r   r   Ú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   rU   ÚabsrV   r�   r   rN   rñ  )rg   rh   rô  rK   r   r   r   Ú'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Ž   rT   rC   rö  rì  ú1/1/2000ÚM)r  r  T)Zinplacer  r    r'   ré  rê  )r(   r†   rî  r   )r   rU   rü  rV   r�   r   rN   rñ  r
   rš   r›   rð  )
rg   rh   rô  ÚkindsrÒ   rK   Úixrä   ró  Úerrr   r   r   Ú"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   )rU   r›   rð  r
   r   r   rN   rñ  )	rg   rÒ   rä   ró  r  rã   Ztdf_errrK   rf   r   r   r   Ú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!   r0   rV  )rë  rí  r   r    zCAsymmetrical error bars should be provided with the shape (3, 2, 5)r*   rî  )rU   rV   r’  rW   r   r›   ZreshapeÚTrN   r2  Ú	get_pathsZverticesrw   rL   rŠ  r  r  rQ   rR   r«   r±   )rg   r  rh   rK   Zyerr_0_0Zexpected_0_0ri   r   r   r   Útest_errorbar_asymmetricalF  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   rU   rV   rW   rX   rY   rZ   r   rN   rL   ræ  rd   Ztablesre   r²   r  r  r‰   r   r   r   Ú
test_table[  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 )Nr0   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³   rc  ©Úhas_errr   r   rþ   {  s      z[TestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_color.<locals>.<listcomp>r   c                    s   g | ]}|ˆ j kr|‘qS r   )r2  r‡  ©rK   r   r   rþ   �  s     
 rÏ  )Ú
containersr   ÚextendÚappendrA  rU   rw   rd   )r  r  r  r³   ZerrsÚelZ	err_lines©rK   rg   r  r   Ú_check_errorbar_colory  s     ÿzGTestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_colorr,   r‹   rŒ   r�   rä   rÚ  rŽ   r  )r(   r)   rí  rë  r�   r  Zhas_yerrr  )r(   r)   rë  r  )r
  )r   rU   rü  rV   r�   r`   r   rN   r‚   rñ  r  )rg   rh   rô  r  r   r  r   Útest_errorbar_scatterg  s<      ÿ  ÿ ÿz(TestDataFramePlots.test_errorbar_scatterc              
      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   r4  r   r!   r&   r   r0   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   Tr7   r   r!   Fr9   r&   )rd   r³   re   r[   rr  r]   ©rf   rK   ©rg   r   r   Ú_check¥  s    z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr‹   rŒ   r5   T)r(   r)   r5   rK   Úsharex)r   rK   r  ©r(   r)   r5   rK   r7   r9   )r§  r¨  r±   Ú_generate_4_axes_via_gridspecr   rN   Útight_layoutr©  rL   ræ  ÚUserWarningrd   r³   re   r[   rr  r]   ©rg   rc   Úgsrf   rh   r  rK   r   r  r   Ú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   r0   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   Tr7   r9   r   r!   r&   F)rd   r³   re   r[   r]   rr  r  r  r   r   r  Ú  s    z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr‹   rŒ   r5   T)r(   r)   r5   rK   rî   )r   rK   rî   r  r7   r9   )r§  r¨  r  r   rN   r  r©  rL   r±   ræ  r  rd   r³   re   r[   rr  r]   r  r   r  r   Útest_sharey_and_axÉ  s<    
üÿ	


z%TestDataFramePlots.test_sharey_and_axc           	   
   C   sô   ddl }ddl}i }tjjD ]�}i }|dkrpttjjdd�tjjdd�t 	d¡tjjdd� dœƒ}ddd	œ}n|d
kr†t
 ¡  ¡ }nt
 ¡ }| |jf d|i|—Ž¡||< q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   N)rƒ   r‚   r�   r  r|  r	  rr   rs   r'   rÉ   rÒ   z)weakly-referenced object no longer existsr*   )ÚgcÚweakrefr²   r»  Z
_all_kindsr   rU   rV   r~  r›   rL   rM   rü  ÚproxyrN   r±   ZcollectrQ   rR   ÚReferenceErrorr³   )	rg   r"  r#  ÚresultsrÒ   Úargsrh   ri   Úkeyr   r   r   Ú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   r,   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  rj   rÙ   rÚ   ©Úgridspecrc   r   r   Ú_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.  r   r   Ú_get_horizontal_grid5  s
    zJTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_horizontal_gridr  r   Tr7   r9   rJ   )r   rK   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  rj   rÙ   rÚ   Zax3Zax4r.  r   r   Ú_get_boxed_gridr  s    zETestDataFramePlots.test_df_gridspec_patterns.<locals>._get_boxed_gridr   ZABCDr&   )Úmatplotlib.gridspecr/  r§  r¨  r   rU   rV   r�   r
   r   r.   rX   rN   rd   r³   re   r[   rr  r]   rL   r±   ræ  r  )
rg   Útsrh   r0  r1  rÙ   rÚ   rK   rf   r2  r   r.  r   Ú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  r   r   r   Ú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  rE   rÝ   )r   r   r   r   r‚   r‹   rŒ   Zhsv)rÒ   rK   r(   r)   r�   r>  r   )Úmake_axes_locatablerE  z5%gš™™™™™©?)r  Úpad)Ú
inset_axesz30%rÀ   r&   )rô   rb  r  )rc   r   Zadd_axesr   rU   rV   rW   rN   r   r�   rÒ  Zmpl_toolkits.axes_grid1r8  Zappend_axesZ%mpl_toolkits.axes_grid1.inset_locatorr:  )	rg   rj   rK   rh   r8  ÚdividerZcaxr:  Ziaxr   r   r   Ú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 )NrV  r!   r*  rŽ   c                 S   s
   | j  ¡ S r.  )rs   rŸ  ©rh   r   r   r   r   Ä  r   zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>©rt   c                 S   s
   | j d S )Ngš™™™™™ñ?r?  r>  r   r   r   r   Å  r   )ru   r  rt   ru   T)rç   rZ  Z
mark_right)rf   r]  )
r   rU   rV   r�   rX   Zassignr½  rN   rP   rè   )rg   r=  rh   rZ  rÐ   rÕ  rK   r   r   r   Ú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ÚdayrB  r—   r    c                 S   s   g | ]}|  ¡ ‘qS r   r+  ©rü   Útr   r   r   rþ   Û  s     zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>r¿   rÀ   rÁ   )	r   rN   rÉ   Úset_xlimr]   ru  r_   Ú
get_xticksre   )rg   rh   rK   ÚxticklabelsÚlabels_positionr   r   r   Ú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   rr   rs   rF   r    c                 S   s   g | ]}|  ¡ ‘qS r   r+  rC  r   r   r   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   rU   rV   r�   rN   rE  r]   ru  r_   rF  re   )rg   r.   rh   rK   rG  rH  r   r   r   Ú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-   rx  r   )r   rN   rÃ   re   )rg   rÒ   rh   rK   Úxlimsr   r   r   Ú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-   rM  rN  rO  F)rK   rÕ   rç   T)rK   rç   r   c                 S   s   g | ]}|  ¡ ‘qS r   r+  rC  r   r   r   rþ     s     zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)rc   r   r   rN   rC   rÃ   re   r]   )rg   rj   rK   Zindexesrh   rK  rG  r   r   r   Ú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)rG   rn   r   r   )	r   ÚintÚemptyre   rN   rd   rˆ   r°   rß   )rg   rh   rK   rT   r   r   r   Ú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   rQ   rR   r  rN   r•   r   r   r   Útest_plot_no_numeric_data  s    z,TestDataFramePlots.test_plot_no_numeric_data)rT   rC   rö   r€   rw  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�   ry  rT   )	rU   r›   r   rN   rd   re   r_   rz  r³   )rg   rÒ   rä   rh   rf   rç  rK   rm  r   r   r   Ú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‹   rH   )r   r`   rQ   rR   ÚNotImplementedErrorrN   )rg   Zserri   r   r   r   Ú(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*   rH   )	r   rU   Úeyer   ra   rQ   rR   rX  rN   rÊ   r   r   r   Ú,test_group_subplot_multiindex_notimplementedB  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*   rW  rH   )r   rU   rZ  rQ   rR   rX  rN   rÊ   r   r   r   Ú0test_group_subplot_nonunique_cols_notimplementedH  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^  )rW  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*   rH   ©rU   r›   r   rQ   rR   r«   rN   )rg   r   Zexpected_msgrä   rh   r   r   r   Útest_group_subplot_bad_inputN  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_namerH   r_  ©rg   rä   rh   r   r   r   Ú&test_group_subplot_invalid_column_namea  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�   rH   r_  ra  r   r   r   Ú$test_group_subplot_duplicated_columnh  s    z7TestDataFramePlots.test_group_subplot_duplicated_column)ri  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*   rU  r_  )rg   rÒ   rä   rh   r   r   r   Útest_group_subplot_invalid_kindo  s     ÿz2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr¯  Únew)Úoldrf  re  )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!   r0   úType AúType BrŽ   rx  r¯  )rÒ   rÞ  Úxlabel)r   r.   r”   rN   Ú
get_xlabelre   r@  Ústr)rg   rÒ   Z
index_nameZ	old_labelZ	new_labelrh   rK   r   r   r   Ú(test_xlabel_ylabel_dataframe_single_plotx  s    z;TestDataFramePlots.test_xlabel_ylabel_dataframe_single_plotzxlabel, ylabel)NN)úX LabelN)NúY Label)rm  rn  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 )Nrg  rh  r   r!   r0   rŽ   )rÒ   r(   r)   ri  rÞ  )r   rN   rj  re   r@  )rg   rÒ   ri  rÞ  ZxcolZycolrh   rK   r   r   r   Ú'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   r3   rº   )rç   rÞ  r4   r1   )
r   rN   rÒ  rf   r¢   Zget_visibler@  re   rì   Z
get_yticks)rg   rç   Zax_dfrK   r   r   r   Útest_secondary_y©  s    
   ÿ
z#TestDataFramePlots.test_secondary_yc              	   C   s†   t ddgddgdœƒ}t t¡� |jjddd� W 5 Q R X t t¡� |jjd	d� W 5 Q R X t d	¡� |j d¡ W 5 Q R X d S )
Nr   r!   r&   r   rÝ   r‹   Tr/   F)r   rL   ræ  ÚFutureWarningrN   ri  r•   r   r   r   Útest_sort_columns_deprecated´  s    z/TestDataFramePlots.test_sort_columns_deprecated)NNNN)pÚ__name__Ú
__module__Ú__qualname__rQ   ÚmarkZxfailr   Zslowrl   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"  r5  r7  rC  rG  rL  rP  ra  rn  rs  rv  ÚtdZskip_if_no_scipyr{  r€  r‹  rU   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)  r5  r7  r<  r@  rI  rJ  rL  rP  rS  rT  rV  rY  r[  r\  r`  rb  rc  rd  rl  ro  rp  rr  r   r   r   r   r   )   s˜  g
 ÿ

&
/'þ%		þ
6	
 

' ÿ
   ú
 üþ	


þþ

ýþ
	$


ýþ
*
.
		

!,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!   r}  )r   r   r¤  rI   )rI  r3  r§  r¨  r/  r,  Zsubplot)rK  rI  rc   r  Zax_tlZax_llZax_trZax_lrr   r   r   r  Â  s    r  )'r   r   rú  r  rY   rø  ÚnumpyrU   rQ   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrw  Zpandas.core.dtypes.apir   Zpandasrz   r   r   r   r   r	   r
   Zpandas._testingZ_testingrL   Zpandas.tests.plotting.commonr   r   Zpandas.io.formats.printingr   Zpandas.plottingr²   r?  r   ÚImportErrorZskip_if_no_mplr   r  r   r   r   r   Ú<module>   sL                     )