a
    nÝEb56 ã                   @   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
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! e	j"j#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)ÚTestPlotBaseÚ_check_plot_works©Úpprint_thingc                   @   s*  e Zd Zdd„ Z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ej dg d¢¡dd„ ƒZdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zejjd,d-d.�ej d/d0d,g¡d1d2„ ƒƒZd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Zd=d>„ Z d?d@„ Z!dAdB„ Z"dCdD„ Z#dEdF„ Z$ej dGd0d,g¡ej dHg dI¢g dJ¢f¡dKdL„ ƒƒZ%ej dMg dN¢¡dOdP„ ƒZ&dQdR„ Z'dSdT„ Z(dUdV„ Z)dWdX„ Z*dYdZ„ Z+d[d\„ Z,e-j.d]d^„ ƒZ/e-j.d_d`„ ƒZ0dadb„ Z1ej dcdde2j3dedf� dde2j3dgdf� g¡dhdi„ ƒZ4dôdkdl„Z5dmdn„ Z6dodp„ Z7dqdr„ Z8dsdt„ Z9ej dug dv¢¡dwdx„ ƒZ:dydz„ Z;e-j.d{d|„ ƒZ<d}d~„ Z=dd€„ Z>d�d‚„ Z?ej dƒd„d…gd†d‡fd†gd„d…gdˆd‰gfg¡dŠd‹„ ƒZ@dŒd�„ ZAej dŽd�d†gd„fg¡d�d‘„ ƒZBe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�„ ƒZCej džd•d–d†d„gfd–d•d•d–gfg¡dŸd „ ƒZDd¡d¢„ ZEd£d¤„ ZFej d¥i d¦fd§d¨id¨fd©dªidªfg¡d«d¬„ ƒZGd­d®„ ZHd¯d°„ ZId±d²„ ZJej d³g d´¢¡dµd¶„ ƒZKejjd·eLd¸�d¹dº„ ƒZMd»d¼„ ZNd½d¾„ ZOej d³g d´¢¡d¿dÀ„ ƒZPdÁdÂ„ ZQdÃdÄ„ ZRdÅdÆ„ ZSdÇdÈ„ ZTdÉdÊ„ ZUe-j.dËdÌ„ ƒZVdÍdÎ„ ZWdÏdÐ„ ZXdÑdÒ„ ZYej dÓg dÔ¢¡dÕdÖ„ ƒZZd×dØ„ Z[dÙdÚ„ Z\ej d³dÛdÜg¡dÝdÞ„ ƒZ]dßdà„ Z^dádâ„ Z_dãdä„ Z`ej dådædçdèdédjdêd–d—gfg¡ej d³g dë¢¡dìdí„ ƒƒZaej dîg dï¢¡ej d³dðdñg¡dòdó„ ƒƒZbdjS )õÚTestDataFramePlotsc                 C   sd   t  | |¡ dd l}| ¡  t ¡ | _ttj	j
dd�tj	j
dd�t d¡tj	j
dd� dœƒ| _d S )Nr   é   ©Úsize©ÚAÚBÚC)r   Úsetup_methodÚ
matplotlibZ
rcdefaultsÚtmZmakeTimeDataFrameÚtdfr   ÚnpÚrandomÚuniformÚarangeÚ	hexbin_df)ÚselfÚmethodÚmpl© r#   úf/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/plotting/frame/test_frame.pyr   )   s    
ýÿzTestDataFramePlots.setup_methodc                 C   s¤  ddl m} | j}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œƒ}|ƒ r´d}nd}tj	t
|d�� |jjdd� W d   ƒ n1 sê0    Y  ttj dd¡ttjd d… ƒd�}t|jdd�}| j|dd� t|jdd� t|jg d¢d� t|jg d¢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g d'¢d(d)gd*�}tjd+d,gd-d.gd*�}ttj ddd/¡||d0�}t|jd1d&� td2tj d¡iƒ}t|jjdd3�}| j|dd4d	� t|jjdd5d6�}| j|dd4d	� | j ¡ \}	}|jjd|d7�}t|ƒdk�sˆJ ‚|j}
|
|d u �s J ‚d S )8Nr   )Úmpl_ge_3_1_0F)ÚgridT©Údefault_axesÚsubplotsé   ©r*   é   ©Úaxes_numÚlayout)éÿÿÿÿé   )r(   r)   r/   ©r1   r1   )r(   r)   Ú	use_index©Úxrotr,   r1   é   ©ÚxÚyz''Line2D' object has no property 'blarg'zUnknown property blarg©Úmatch)Zblargé
   ©Úindex)r3   )Zsort_columns)r,   é   r<   )Zyticks)Úxticks)iœÿÿÿéd   )ZylimZxlimZblah)r(   r)   Útitle)r)   rB   ©r6   r,   ©Úvisible©Úminor)rB   ))õ   Î±r   )rH   r,   )õ   Î²r1   )rI   r6   )õ   Î³r*   )rJ   r?   )õ   Î´é   )rK   é   Zi0Úi1)Únames)Úbaru   Î”)rP   u   Î•Zc0Úc1)é   r1   ©Úcolumnsr>   u   Î£r8   )r)   ©r,   r,   )r0   r,   )r)   r/   ©r)   Úax) Ú"pandas.plotting._matplotlib.compatr%   r   r   ÚplotÚ_check_axes_shapeÚ_check_ticks_propsr   ÚpytestÚraisesÚAttributeErrorÚliner   r   ÚrandÚlistÚstringÚascii_lettersÚ_check_visibleÚxaxisÚget_xticklabelsÚ	get_labelÚzipÚranger   Úfrom_tuplesÚrandintrP   Úpltr)   ÚlenÚaxes)r    r%   Údfrn   ÚmsgrW   Ztuplesr>   rT   ÚfigÚresultr#   r#   r$   Ú	test_plot8   sŒ    üü,$
õÿzTestDataFramePlots.test_plotc              
   C   sü   g d¢}t g d¢g d¢ddtjddgtj|dd	� d
¡tj|ddd� d
¡dœtj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 )N)Z2008Z2009NZ2011Z2012©r,   r1   r6   r*   r?   )ç      ð?ç       @ç      @ç      @ç      @rM   r?   r6   r1   z%Y)ÚformatÚi8T)rz   Úutc©r   r   r   ÚDÚE©Údtyper   r   r7   r   r~   r   )	r   r   ÚnanÚpdÚto_datetimeÚviewÚint64r   rY   )r    Údatesro   r#   r#   r$   Útest_nullable_int_plot¤   s"    ûøz)TestDataFramePlots.test_nullable_int_plotc                 C   s´   t jg d¢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 )N©r,   r1   r6   r*   ZUInt32r€   r7   r9   ©r9   r8   )rƒ   Úarrayr   r   rY   r_   rP   ÚhistÚpier   ÚscatterÚhexbin)r    ZarrÚsro   r#   r#   r$   Útest_integer_array_plotº   s    z*TestDataFramePlots.test_integer_array_plotc                 C   s6   t g d¢g d¢dœƒ}| ¡ }t| ¡ ƒdks2J ‚d S )N©r8   r9   Úz©r,   r1   r6   ©r   r   r,   )r   rY   rm   Ú	get_lines©r    ro   rW   r#   r#   r$   Útest_nonnumeric_excludeÌ   s    z*TestDataFramePlots.test_nonnumeric_excludec                 C   s>   t tj dd¡g d¢d�}|jddd�}|  |j ¡ d¡ d S )Nr<   r6   ©ÚaÚbÚc©rT   rš   r›   r7   )r   r   r   ÚrandnrY   Ú_check_text_labelsre   rg   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@J ‚d S )Nr1   rš   r›   r�   ÚNAMEZLABEL)r9   Úlabel)r   r   r   rž   r>   ÚnamerY   ©r    ro   r#   r#   r$   Útest_donot_overwrite_index_nameÖ   s    z2TestDataFramePlots.test_donot_overwrite_index_namec                 C   sh  | j }|  |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,   r7   r   r   ©r8   rŠ   r1   ZTest)é   rR   )r8   r9   rB   ÚfigsizerU   )g      0@g       @)r.   r/   r¨   )r   Z_check_datarY   Ú	set_indexr   r   r   rm   rT   rŸ   rB   rZ   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sFJ ‚|j|d�}| j||d� | ¡ |kspJ ‚|j|d�}| j|||d	� | ¡ |ksœJ ‚| ¡ |ks¬J ‚d S )
Nrš   rA   r=   ©Úlogy©Úyaxis)Úlogx©re   ©Úloglog)re   r°   )r   r   r   rY   Ú_check_ax_scalesZ
get_yscaleZ
get_xscale)r    Z	input_logZexpected_logro   rW   r#   r#   r$   Útest_logscalesõ   s    z!TestDataFramePlots.test_logscalesÚinput_param)r±   r®   r´   c                 C   sf   t dt d¡it d¡d�}d}tjt|d��$ |jf i |di¤Ž W d   ƒ n1 sX0    Y  d S )Nrš   rA   r=   z9Boolean, None and 'sym' are valid options, 'sm' is given.r:   Úsm)r   r   r   r\   r]   Ú
ValueErrorrY   )r    r·   ro   rp   r#   r#   r$   Útest_invalid_logscale  s    z(TestDataFramePlots.test_invalid_logscalec                 C   s¢  | j }|jdd�}| ¡ }t|d  ¡ tƒr0J ‚| j|dd� t ¡  dt	j
d< | ¡ }| ¡ }t|d  ¡ tƒrvJ ‚| j|dd� t ¡  dt	j
d< | ¡ }| ¡ }t|d  ¡ tƒr¼J ‚tt|d  ¡ ƒtƒsÖJ ‚t ¡  t	j
 dd¡�F | ¡ }| ¡ }t|d  ¡ tƒ�rJ ‚| j|dd� W d   ƒ n1 �s:0    Y  t ¡  | ¡ }| ¡ }t|d  ¡ tƒ�rtJ ‚tt|d  ¡ ƒtƒ�s�J ‚| j|dd� d S )	NT)Úx_compatr   é   r4   zxaxis.compatFr»   )r   rY   r–   Ú
isinstanceÚ	get_xdatar   r[   r   ÚcloseÚplottingZplot_paramsZuse)r    ro   rW   Ú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é   r1   éÐ  r,   é   rš   r›   ©r>   rT   r   rŠ   )r   r   r   r`   r	   r   rY   rl   Zaxhliner   r¿   r¤   r#   r#   r$   Útest_period_compat7  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 )Nr9   rA   éc   r0   )r>   r�   r   r,   )r�   r£   F)Zcheck_index_typer€   )r   r   r   r†   rY   r–   Z
get_xydatar   r   Zassert_series_equalr9   r¿   rƒ   ÚIndexÚfloat64r>   )r    ro   rW   rÁ   Úrsr#   r#   r$   Útest_unsorted_indexD  s    ÿ**z&TestDataFramePlots.test_unsorted_indexc              	   C   st  t dg d¢ig d¢d�}| ¡ }| ¡ \}}| ¡ }|t |d  ¡ d ¡ksRJ ‚|t |d  ¡ d ¡kspJ ‚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ÚJ ‚|t |d  ¡ d ¡ksøJ ‚t g d¢g d¢dœƒ}|jddd�}| ¡ \}}| ¡ }|t |d  ¡ d ¡k�sPJ ‚|t |d  ¡ d ¡k�spJ ‚d S )Nr9   ©ç        ru   rv   rw   )ru   rÎ   rw   rv   r=   r   rÎ   ru   rw   rx   ry   g      @rv   )g     ÀV@g     €V@g     @W@g      W@)r9   r“   r“   r7   )	r   rY   Úget_xlimr–   r   ZnanminÚget_dataZnanmaxr‚   )r    ro   rW   ÚxminÚxmaxrÁ   r#   r#   r$   Útest_unsorted_index_limsV  s*    þ z+TestDataFramePlots.test_unsorted_index_limsc                 C   s¬   t tj dd¡ttjd d… ƒg d¢d� }d}tjt	|d�� |j
jdd� W d   ƒ n1 sb0    Y  tjt	|d�� |j
jdd	� W d   ƒ n1 sž0    Y  d S )
NrL   r*   ©r8   r9   r“   ÚfourrÆ   z+Log-y scales are not supported in area plotr:   Tr­   r³   )r   r   r   r`   ra   rb   rc   r\   r]   r¹   rY   Úarea©r    ro   rp   r#   r#   r$   Útest_negative_logo  s    ý,z$TestDataFramePlots.test_negative_logc                 C   sZ   t  t|d  ¡ d ƒ¡}t||ƒD ]0\}}|| ¡ d 7 }| ¡ d }t ||¡ q$d S )Nr   r,   )r   Zzerosrm   rÐ   rh   r   Úassert_numpy_array_equal)r    Znormal_linesZstacked_linesÚbaseÚnlÚslÚsyr#   r#   r$   Ú_compare_stacked_y_cood{  s
    z*TestDataFramePlots._compare_stacked_y_coodc           
   
   C   sî  t  d¡��Ì ttj dd¡g d¢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… ƒg d¢d�}dD �]4}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 d   ƒ n1 �sœ0    Y  | |jd ¡}	t
|	j|d
d
d� q’W d   ƒ n1 �sà0    Y  d S )Né*   rL   r*   )Úwr8   r9   r“   r�   rÆ   )r_   rÖ   F)ÚkindÚstackedTr1   ©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â   )r   Ú
RNGContextr   r   r   r`   rž   ra   rb   rc   r   rY   rÞ   rÁ   r\   r]   r¹   r©   r>   )
r    ro   Úneg_dfZsep_dfZmixed_dfrá   Úax1Úax2rp   Údf2r#   r#   r$   Útest_line_area_stacked‚  sB    

üÿ	ý
  ÿ,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	g d	¢t j
d
�}	t t  |jd¡|	¡ t j	g d¢t j
d
�}	t t  |jd¡|	¡ t |jt  	g d¢¡¡ t |jt  	g d¢¡¡ t j	g d¢t j
d
�}
t j	g d¢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,   r1   r6   ©rš   r›   r*   )Úkr=   r   r”   r€   )r6   r1   r,   )FFTF)FTFF)r,   r1   r   r6   )r6   r   r1   r,   Trã   F)r   r‚   r   r   ZmakeDateIndexr   rY   rÁ   Ú	get_ydatar‹   rÊ   rÙ   ÚdeleteÚdataÚmaskrÖ   )r    Zvalues1Zvalues2ro   r   ÚdrW   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¡g d¢d�}| ¡ }| ¡ \}}| ¡ }||d  ¡ d d ksRJ ‚||d  ¡ d d ksnJ ‚|jdd�}| ¡ \}}| ¡ }||d  ¡ d d ksªJ ‚||d  ¡ d d ksÆJ ‚|jddd	�}| j|dd
d� |D ]p}t	|dƒsúJ ‚t	|dƒ�r
J ‚| ¡ \}}| ¡ }||d  ¡ d d k�s<J ‚||d  ¡ d d ksèJ ‚qèd S )NrL   r6   r’   r�   r   r0   T)Úsecondary_y)ró   r)   rC   r-   Zleft_axÚright_ax)
r   r   r   r`   rY   rÏ   r–   rÐ   rZ   Úhasattr)r    ro   rW   rÑ   rÒ   rÁ   rn   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.)ÚstrictÚreasonrâ   Tc           
      C   sÀ   t tj dd¡g d¢d�}| }t|jj|d�}| ¡ \}}| ¡ \}}| 	¡ }	||	d  
¡ d d kslJ ‚||	d  
¡ d d ksˆJ ‚|dks”J ‚t|jj|d�}| ¡ \}}|dks¼J ‚d S )NrL   r*   rÔ   r�   rã   r   r0   )r   r   r   r`   r   rY   rÖ   rÏ   Zget_ylimr–   rÐ   )
r    râ   ro   rå   rW   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
� |  |¡ ||¡sfJ ‚|  |¡ ||¡s|J ‚d S )Nr*   r1   r8   r9   r�   r,   T)ÚshareyrÖ   )rW   rá   )	r   r   r   r`   rl   r)   rY   Z
get_y_axisZjoined)r    ro   rq   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&J ‚q&|jjddd�}|jD ]}| ¡ dksRJ ‚qR|jjddd�}| j|ddd� |D ] }|jD ]}| ¡ dks–J ‚q–qŒd S )	Nr?   r1   )Ú	linewidthT)râ   rü   )rü   r)   )r?   r,   r-   )	r   r   r   rž   rY   rP   ÚpatchesZget_linewidthrZ   )r    ro   rW   Úrrn   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*J ‚q*|jjd|d�}|jD ]}| ¡ |ks`J ‚q`|jj
|d�}|jD ]}| ¡ |t|j	ƒ ksŠJ ‚qŠ|jj
d|d�}|jD ]}| ¡ |ksÀJ ‚qÀ|jj|dd�}|D ] }|jD ]}| ¡ |ksôJ ‚qôqê|jj
|dd�}|D ]&}|jD ]}| ¡ |k�s*J ‚�q*�q d S )Nr?   gÍÌÌÌÌÌì?)ÚwidthT)râ   r   )r   r)   )r   r   r   rž   rY   rP   rý   Ú	get_widthrm   rT   ÚbarhÚ
get_height)r    ro   r   rW   rþ   rn   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sDJ ‚|jjdg d	¢d�}d
d„ |jd d… D ƒ}|g d	¢ks€J ‚|jjdt g d¢¡d�}dd„ |jD ƒ}|dgd ks¼J ‚|jjdg d¢d�}dd„ |jd d… D ƒ}|g d¢ksøJ ‚|jjddd�}|D ]*}dd„ |jD ƒ}|dgd k�sJ ‚�q|jjdt g d¢¡d�}|D ]*}dd„ |jD ƒ}|dgd k�sVJ ‚�qVd S )Nr?   Fr,   )râ   Úbottomc                 S   s   g | ]}|  ¡ ‘qS r#   ©Zget_y©Ú.0Úpr#   r#   r$   Ú
<listcomp>O  ó    z;TestDataFramePlots.test_bar_bottom_left.<locals>.<listcomp>é   T)r0   éþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿc                 S   s   g | ]}|  ¡ ‘qS r#   r  r  r#   r#   r$   r
  S  r  )r,   r,   r,   r,   r,   )râ   Úleftc                 S   s   g | ]}|  ¡ ‘qS r#   ©Úget_xr  r#   r#   r$   r
  W  r  rt   c                 S   s   g | ]}|  ¡ ‘qS r#   r  r  r#   r#   r$   r
  [  r  r0   )r)   r  c                 S   s   g | ]}|  ¡ ‘qS r#   r  r  r#   r#   r$   r
  `  r  )r)   r  c                 S   s   g | ]}|  ¡ ‘qS r#   r  r  r#   r#   r$   r
  e  r  )	r   r   r   r`   rY   rP   rý   r  r‹   )r    ro   rW   rr   rn   r#   r#   r$   Útest_bar_bottom_leftL  s*    z'TestDataFramePlots.test_bar_bottom_leftc                 C   s    t dtjdgg d¢g d¢dœƒ}|j ¡ }g d¢}dd„ |jD ƒ}||ksNJ ‚|jjd	d
�}dd„ |jD ƒ}||ksxJ ‚dd„ |jD ƒ}g d¢}||ksœJ ‚d S )Nr<   r   )r?   r<   r   r”   r   )	r<   r   r   r?   r<   r   r,   r1   r6   c                 S   s   g | ]}|  ¡ ‘qS r#   ©r  r  r#   r#   r$   r
  l  r  z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>Trã   c                 S   s   g | ]}|  ¡ ‘qS r#   r  r  r#   r#   r$   r
  p  r  c                 S   s   g | ]}|  ¡ ‘qS r#   r  r  r#   r#   r$   r
  s  r  )	rÎ   rÎ   rÎ   ç      $@rÎ   g      4@g      .@r  g      D@)r   r   r‚   rY   rP   rý   )r    ro   rW   Úexpectedrr   r#   r#   r$   Útest_bar_nanh  s     
zTestDataFramePlots.test_bar_nanc                 C   s2  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 g d¢¡¡ | ¡ dksžJ ‚|jd  ¡ d	ks´J ‚|jd
  ¡ dksÊJ ‚|jj	dd�}t |t g d¢¡¡ | ¡ dksþJ ‚|jd  ¡ d	k�sJ ‚|jd
  ¡ dks`J ‚q`d S )NrL   r?   ZABCDEFZabcderÆ   )r   r,   r1   r6   r*   r?   )g      à¿g      @r   g      Ð¿r0   gš™™™™™@Trã   g      @)r   r   r   rž   rƒ   rÉ   ra   ZCategoricalIndexrY   rP   re   Úget_ticklocsr   rÙ   r‹   rÏ   rý   r  )r    Zdf1rè   ro   rW   Zticksr#   r#   r$   Útest_bar_categoricalw  s,    ýý

z'TestDataFramePlots.test_bar_categoricalc                 C   s   t tj dd¡ttjd d… ƒg d¢d�}t|jj	ddd� t|jj	dd	d� t
 d
¡}tjt|d�� |jj	dd� W d   ƒ n1 sŠ0    Y  t
 d¡}tjt|d�� |jj	dd� W d   ƒ n1 sÐ0    Y  |jddddd�}| j|ddd� d S )NrL   r*   rÔ   rÆ   r8   r9   r7   r,   r1   z5scatter() missing 1 required positional argument: 'y'r:   r¦   z5scatter() missing 1 required positional argument: 'x'rŠ   rŽ   T)r8   r9   rá   r)   rU   r-   )r   r   r   rž   ra   rb   rc   r   rY   rŽ   ÚreÚescaper\   r]   Ú	TypeErrorrZ   )r    ro   rp   rn   r#   r#   r$   Útest_plot_scatter”  s    ý
,
,z$TestDataFramePlots.test_plot_scatterc                 C   sp   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 d   ƒ n1 sb0    Y  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á   r8   r9   )
r   r   r   rž   r
   Útimer\   r]   r  rY   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'  r7   )
r
   r   r   r   Únormalrm   r   r   rY   rŽ   )r    r‡   r'  ro   r#   r#   r$   Útest_scatterplot_datetime_data²  s
    z1TestDataFramePlots.test_scatterplot_datetime_datac                 C   sx   t g d¢g d¢dœƒ}t|jjddd� t|jjddd� t g d¢g d	¢dœƒ}t|jjddd� t|jjddd� d S )
Nr   ©r1   r6   r*   rê   rš   r›   r7   r   r,   r™   )r   r   rY   rŽ   r¤   r#   r#   r$   Útest_scatterplot_object_data»  s    z/TestDataFramePlots.test_scatterplot_object_dataÚorderedÚ
categories)ÚsetosaÚ
versicolorÚ	virginica)r/  r0  r.  c                 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g d¢||d�|d< |jjdddd�}|j\}|j}t g d¢¡}| 	¡ }t
 ||¡ t g d¢¡}	|j}
t
 |
|	¡ |}dd„ |j ¡ D ƒ}tdd„ t||ƒD ƒƒsÜJ ‚d S )Ngffffff@g      @gš™™™™™@rw   g      @gš™™™™™	@gš™™™™™@gš™™™™™@Úlengthr   r�   )r.  r.  r0  r0  r/  )r,  r-  Zspeciesr   r,   ©r8   r9   rœ   )ç      à?g      ø?g      @rÍ   c                 S   s   g | ]}|  ¡ ‘qS r#   ©Úget_text)r  Úir#   r#   r$   r
  ã  r  zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s   | ]\}}||kV  qd S ©Nr#   )r  r6  Újr#   r#   r$   Ú	<genexpr>ä  r  zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   rƒ   ÚCategoricalrY   rŽ   ÚcollectionsÚcolorbarr   r‹   Z	get_ticksr   rÙ   Z_boundariesrW   Zget_ymajorticklabelsÚallrh   )r    r,  r-  ro   rW   Zcolorbar_collectionr<  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, y)r7   )r9   r8   )r9   r9   c                 C   s2   t g d¢t g d¢¡dœƒ}t|jj||d� d S )Nr‰   )rš   r›   rš   rœ   r7   )r   rƒ   r:  r   rY   rŽ   ©r    r8   r9   ro   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 dd¡ttjd d… ƒg d¢d�}|j	j
ddd	d
�|j	j
dddd
�g}|D ]R}|jd jjdksxJ ‚|ƒ rš|jd jj ¡ d	ks°J ‚q^|jd jjd	ks^J ‚q^d}|j	j
ddd	|d�}|jd jj|ksàJ ‚|j	j
ddd	dd�}|jd jd u �s
J ‚|j	j
dddd
�}|jd jd u �s2J ‚| j|jdgd� tddgddgdœƒ}g d¢}g d¢}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_0rL   r*   rÔ   rÆ   r8   r9   r“   r2  r,   r1   ZGreysÚ	cubehelix)r8   r9   rœ   ÚcolormapF)r8   r9   rœ   r<  Úredrþ   ©Z
facecolorsr6   r•   )ru   rÎ   rÎ   ru   )rÎ   ru   rÎ   ru   r   r   rÎ   ru   Zspring)r8   r9   rœ   Úcmap)rX   rA  r   r   r   rž   ra   rb   rc   rY   rŽ   r;  rF  r£   r<  rW   Ú
get_ylabelZ_labelÚ_check_colorsr‹   r   rÙ   Zget_facecolor)r    ÚrequestrA  ro   rn   rW   Ú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   sP   t tj d¡d g d¢d�}|jjdddd�}tj|d j|jd	  	¡ d
� d S )N)r<   r6   rA   r™   r�   rš   r›   rœ   )r8   r9   r�   r   )Úright)
r   r   r   rY   rŽ   r   rÙ   Úvaluesr;  Z	get_sizesr—   r#   r#   r$   Útest_plot_scatter_with_s#  s    z+TestDataFramePlots.test_plot_scatter_with_sc                 C   s0  t tj dd¡ttjd d… ƒg d¢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 )NrL   r*   ©ÚoneÚtwoÚthreerÕ   rÆ   F©ÚlegendTr'   rã   r<   é   r   r,   rê   éZ   r4   é#   )ÚrotÚfontsize©r5   Ú
xlabelsizeÚ
ylabelsize)Úyroté7   é   )r]  r\  r[  )r   r   r   rž   ra   rb   rc   r   rY   rP   ri   r[   r  r—   r#   r#   r$   Útest_plot_bar*  s0    ýýz TestDataFramePlots.test_plot_barc                 C   s2  | j }|d }| ¡ j}dd„ |D ƒ}t|jjƒ}|  | ¡ |¡ t 	|j
 ¡ t dt|ƒd ¡¡ t|jƒ| jt|ƒ ks€J ‚t ¡  |jjdd�}| j|ddd� t ¡  t|jjƒ}t g d	¢¡}|jj|d
�}| ¡ j}dd„ |D ƒ}|  | ¡ |¡ t 	|j
 ¡ |¡ t|jƒ| jt|ƒ k�s.J ‚d S )NÚheightc                 S   s   g | ]}t |ƒ‘qS r#   r   ©r  rœ   r#   r#   r$   r
  N  r  z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>r,   é(   ©rX  r   ©r5   r]  )r,   rL   rM   )Ú	positionsc                 S   s   g | ]}t |ƒ‘qS r#   r   rb  r#   r#   r$   r
  a  r  )Úhist_dfÚ_get_numeric_datarT   r   rY   ÚboxrŸ   rf   r   rÙ   re   r  r   r   rm   rÁ   Úbp_n_objectsr¿   r[   r‹   )r    ro   ÚseriesÚnumeric_colsÚlabelsrW   rn   rf  r#   r#   r$   Útest_boxplotJ  s,    
ÿ
zTestDataFramePlots.test_boxplotc                 C   s>  | j }| ¡ j}dd„ |D ƒ}|jjdddd�}| j|dddd� |  | ¡ |¡ t|j	ƒ| j
t|ƒ ksnJ ‚t|jjd	d	dd	d
�}| j|ddd� | j|dd� t||ƒD ].\}}|  | ¡ |g¡ t|j	ƒ| j
ks¬J ‚q¬t g d¢¡}|jj|dd�}|  | ¡ |¡ t |j ¡ |¡ t|j	ƒ| j
t|ƒ k�s:J ‚d S )Nc                 S   s   g | ]}t |ƒ‘qS r#   r   rb  r#   r#   r$   r
  i  r  z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>é2   rR   F)rX  rY  Úvertr   ©r5   r]  r\  T)r(   r)   rp  r±   r6   )r,   r6   r-   r«   r²   )r6   r1   rR   )rf  rp  )rg  rh  rT   rY   ri  r[   rŸ   Úget_yticklabelsrm   rÁ   rj  r   rZ   rµ   rh   r   r‹   r   rÙ   r°   r  )r    ro   rl  rm  rW   rn   r¢   rf  r#   r#   r$   Útest_boxplot_verticalf  s0    
ûz(TestDataFramePlots.test_boxplot_verticalc                 C   sÒ   t tj dd¡ttjd d… ƒg d¢d�}d}tjt	|d�� |j
jdd� W d   ƒ n1 s`0    Y  |j
jd	d�}|  |d	¡ |j
jd
d�}|  |d
¡ |j
 ¡ }|  |d
¡ |j
jdd�}|  |d¡ d S )NrL   r*   rO  rÆ   z2return_type must be {None, 'axes', 'dict', 'both'}r:   Z
not_a_type)Úreturn_typeÚdictrn   Zboth)r   r   r   rž   ra   rb   rc   r\   r]   r¹   rY   ri  Z_check_box_return_type)r    ro   rp   rr   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 )NrA   r*   Úkde©rá   c                 S   s   g | ]}t |ƒ‘qS r#   r   rb  r#   r#   r$   r
  ž  r  z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>©rm  r   r4   r   r?   )rá   rX  rY  rZ  T)r(   rá   r)   r+   r-   )rá   r®   r)   r«   r¯   )r   r   r   rž   r   rY   rT   Ú_check_legend_labelsr[   rZ   rµ   )r    ro   rW   r  rn   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)rA   r*   r   ©r   r   rw  rx  )r   r   r   r   r‚   Úlocr   rY   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   ©Ú	RectanglerA   r*   c                 S   s   g | ]}t |ƒ‘qS r#   r   rb  r#   r#   r$   r
  ½  r  z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>ry  T)r(   r)   r®   r+   r-   r«   r¯   rc  rd  re  )Ú
cumulativeÚbinsZdensityc                    s   g | ]}t |ˆ ƒr|‘qS r#   ©r½   ©r  r8   r  r#   r$   r
  Ï  r  r0   ru   )r�  r‚  c                    s   g | ]}t |ˆ ƒr|‘qS r#   rƒ  r„  r  r#   r$   r
  Ô  r  r  g      Y@ro  rR   Ú
horizontal)rX  rY  Úorientationrq  )Zmatplotlib.patchesr€  r   r   r   rž   r   rY   rŒ   rT   rz  rZ   rµ   r[   r   r¿   Zget_childrenÚassert_almost_equalr  )r    ro   rk  rW   r  rn   Zrectsr#   r  r$   Útest_hist_df¶  s6    üzTestDataFramePlots.test_hist_dfÚweightsçš™™™™™¹?©rA   )Úshape)rA   r1   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   r   r   r1   rA   rŒ   )rá   r‰  rx  c                 S   s   g | ]}|  ¡ ‘qS r#   r  ©r  Úpatchr#   r#   r$   r
  è  r  z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |  ¡  ‘qS )rŠ  r  r�  r#   r#   r$   r
  ì  r  )r   r   Úseedr   ru  rh   rž   r   rY   rý   r   r‡  )r    r‰  ro   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 urhtj||dd� |d ur€tj||dd� |d ur˜tj||dd� |d ur°tj|	|dd� d S )Nc                 S   s   g | ]}|  ¡ ‘qS r#   r  r  r#   r#   r$   r
  ø  r  z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r#   r  r  r#   r#   r$   r
  ù  r  c                 S   s   g | ]}|  ¡ ‘qS r#   r  r  r#   r#   r$   r
  ú  r  c                 S   s   g | ]}|  ¡ ‘qS r#   )r  r  r#   r#   r$   r
  û  r  F)Zcheck_dtype)r   r‹   r   rÙ   )
r    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 g d¢¡t g d¢¡¡t t g d¢¡t g d¢¡¡t t g d¢¡t g d¢¡¡dœg d¢d�}t t t tjddd	d
dg¡t g d¢¡¡t t dtjdd	d
dg¡t g d¢¡¡t t ddd	tjd
dg¡t g d¢¡¡dœg d¢d�}||fD �]Ž}|jjdd�}| j|jd d… t g d¢¡t g d¢¡d� | j|jdd… t g d¢¡t g d¢¡d� | j|jdd … t g d¢¡t g d¢¡d� |jjddd�}| j|jd d… t g d¢¡t g d¢¡d� | j|jdd… t g d¢¡t g d¢¡d� | j|jdd … t g d¢¡t g d¢¡d� |jjdddd�}| j|d jt g d¢¡t g d¢¡d� | j|d jt g d¢¡t g d¢¡d� | j|d jt g d¢¡t g d¢¡d� |jjddd�}| j|jd d… t g d¢¡t g d¢¡d� | j|jdd… t g d¢¡t g d¢¡d� | j|jdd … t g d¢¡t g d¢¡d� |jjdddd�}| j|jd d… t g d¢¡t g d¢¡d� | j|jdd… t g d¢¡t g d¢¡d� | j|jdd … t g d¢¡t g d¢¡d� |jjddddd�}| j|d jt g d¢¡t g d¢¡d� | j|d jt g d¢¡t g d¢¡d� | j|d jt g d¢¡t g d¢¡d� qþd S )Nrt   )r<   é	   rR   rM   rL   )rR   rR   rR   rR   rR   )rL   rM   rR   r–  r<   r   r�   r,   r1   r6   r*   r?   )r6   r<   r–  rR   rM   rL   )rR   r6   rR   rR   rR   rR   )rL   rM   rR   r6   r–  r<   )r‚  )r   r   r   r   r   )r‘  r’  r<   T)r‚  râ   )é   é   r§   rU  é   )r‚  râ   r)   r   r…  )r‚  r†  )r“  r”  )r‚  râ   r†  )r‚  râ   r)   r†  )	r   r   Úrepeatr‹   r‚   rY   rŒ   r•  rý   )r    Z	normal_dfZnan_dfro   rW   rn   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 )NrA   r*   TrS  )r   r   r   rž   Úcumsumr   rY   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œg d	¢ddgfD ]X}| ¡  | d
¡ |j	|d�}t
| ¡ d t|ƒ… ƒD ]\}}| ¡ || ks‚J ‚q‚qHd S )Nr   rA   r6   ú^ú+Úo)r   r,   r1   ©r   r,   )rž  rŸ  r   éo   )Ústyle)Úmatplotlib.pyplotÚpyplotÚgcfr   r   r   rž   ZclfÚadd_subplotrY   Ú	enumerater–   rm   Z
get_marker)r    rl   rq   ro   ÚmarkersrW   Úidxr_   r#   r#   r$   Útest_style_by_columnŽ  s    
ü
 z'TestDataFramePlots.test_style_by_columnc                 C   sP   t ddgƒ}| ¡ }| ¡ d u s$J ‚|jdd�}| ¡  ¡ d  ¡ dksLJ ‚d S )Nr,   r1   TrS  r   ÚNone)r   rY   Ú
get_legendÚ	get_textsr5  )r    r�   rW   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sLJ ‚d S )	Nc                 S   s   i | ]}|t j d ¡“qS r‹  )r   r   )r  rë   r#   r#   r$   Ú
<dictcomp>³  r  zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ÚABCÚcolorZC1rt  ru  r   )r   rY   ri  Ú	get_color)r    Úpropsr  ro   Zkwdrr   r#   r#   r$   Ú!test_specified_props_kwd_plot_box¨  s    z4TestDataFramePlots.test_specified_props_kwd_plot_boxc                 C   sŠ   t t g d¢¡tdddƒtdddƒtdddƒgdgd�}| ¡ }|jd	  ¡ }|d	 |d k sbJ ‚|jd	  ¡ }t 	|t g d
¢¡¡ d S )N)rw   rv   ru   éÜ  r<   r,   r–  rR   ÚtestrÆ   r   )ru   rv   rw   )
r   r   r‹   r   rY   rÁ   r¾   rì   r   rÙ   )r    ro   rW   r@   Zydatar#   r#   r$   Útest_unordered_ts¹  s     ýz$TestDataFramePlots.test_unordered_tsc                 C   sh   t dg d¢iƒ}tjjD ]}|j|d� t|j|ƒƒ  qdD ]&}|jdd|d� t|j|ƒddƒ q<d S )Nr8   r”   rx  )rŽ   r�   )r   rÀ   ÚPlotAccessorÚ_common_kindsrY   Úgetattr)r    ro   rá   r#   r#   r$   Útest_kind_both_waysÅ  s    z&TestDataFramePlots.test_kind_both_waysc              	   C   s\   t tdƒƒ}tjjD ]B}d}tjt|d�� |j|d� W d   ƒ q1 sL0    Y  qd S )NÚabcdúno numeric data to plotr:   rx  )	r   ra   rÀ   r¹  rº  r\   r]   r  rY   ©r    ro   rá   rp   r#   r#   r$   Útest_all_invalid_plot_dataÐ  s
    z-TestDataFramePlots.test_all_invalid_plot_datac              
   C   sB  t  d¡�Œ ttj dd¡td�}d|tj |jd ¡dk< t	j
jD ]B}d}tjt|d	�� |j|d
� W d   ƒ qD1 s|0    Y  qDW d   ƒ n1 sœ0    Y  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 d   ƒ n1 �s0    Y  W d   ƒ n1 �s40    Y  d S )Nrß   r<   r1   r€   rš   r   r3  r¾  r:   rx  rÖ   )r   rä   r   r   r   rž   Úobjectr`   rŒ  rÀ   r¹  rº  r\   r]   r  rY   r¿  r#   r#   r$   Ú test_partially_invalid_plot_dataØ  s    Jz3TestDataFramePlots.test_partially_invalid_plot_datac                 C   sT   t tj dd¡ƒ}d}tjt|d�� |jdd� W d   ƒ n1 sF0    Y  d S )Nr<   r1   z*invalid_plot_kind is not a valid plot kindr:   Zinvalid_plot_kindrx  )r   r   r   rž   r\   r]   r¹   rY   r×   r#   r#   r$   Útest_invalid_kindè  s    z$TestDataFramePlots.test_invalid_kindzx,y,lblr   r   r   rš   r›   rœ   c                 C   s^   t ddgddgddgdœƒ}tjtdd	��  |j|||d
� W d   ƒ n1 sP0    Y  d S )Nr,   r1   r6   r*   r?   rL   r   úx must be a label or positionr:   ©r8   r9   r¢   ©r   r\   r]   r¹   rY   )r    r8   r9   Úlblro   r#   r#   r$   Útest_invalid_xy_argsî  s    	z'TestDataFramePlots.test_invalid_xy_argsc                 C   sf   t ddgddgddgdœƒ}d}tjt|d	��$ |jd
ddgdd� W d   ƒ n1 sX0    Y  d S )Nr,   r1   r6   r*   r?   rL   r   z.label should be list-like and same length as yr:   r   r   r   Z	bad_labelrÅ  rÆ  r×   r#   r#   r$   Útest_bad_labelû  s    z!TestDataFramePlots.test_bad_labelzx,yr•   c                 C   s\   t g d¢g d¢gtdƒd�}tjtdd�� |j||d� W d   ƒ n1 sN0    Y  d S )N)r,   r6   r?   )r1   r*   rL   ZAABr�   rÄ  r:   r7   )r   ra   r\   r]   r¹   rY   r?  r#   r#   r$   Útest_invalid_xy_args_dup_cols  s    z0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsrD  Úbluer   r,   r1   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sVJ ‚| j| ¡ |d� d S )Nr,   r1   r6   r*   r?   rL   r   r   rÅ  )r8   r9   r¢   r²  ©Z
linecolors)r   r   rY   rm   rÁ   rH  r–   )r    r8   r9   rÇ  Úcolorsro   rW   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,   r1   r6   r*   r•   r7   )r   rT   r   rY   )r    r8   r9   Zcolnamesro   r#   r#   r$   Útest_xy_args_integer  s    z'TestDataFramePlots.test_xy_args_integerc                 C   sh   | j }|jjdddd�}t|jƒdks*J ‚|jjdddd�}t|d jjƒd	ksTJ ‚| j|dd
d� d S )Nr   r   r<   )r8   r9   Zgridsizer,   T)r8   r9   r)   r   r1   rU   r-   )r   rY   r�   rm   r;  Úfigurern   rZ   )r    ro   rW   rn   r#   r#   r$   Útest_hexbin_basic   s    z$TestDataFramePlots.test_hexbin_basicc                 C   sV   | j }|jjdddd�}t|jƒdks*J ‚|jjdddtjd�}t|jƒdksRJ ‚d S )Nr   r   r   )r8   r9   r   r,   )r8   r9   r   Zreduce_C_function)r   rY   r�   rm   r;  r   Zstdr—   r#   r#   r$   Útest_hexbin_with_c/  s
    z%TestDataFramePlots.test_hexbin_with_czkwargs, expectedZBuGnrC  rB  rF  ZYlGnc                 C   s8   | j }|jjf dddœ|¤Ž}|jd jj|ks4J ‚d S )Nr   r   r7   r   )r   rY   r�   r;  rF  r£   )r    Úkwargsr  ro   rW   r#   r#   r$   Útest_hexbin_cmap8  s    	z#TestDataFramePlots.test_hexbin_cmapc                 C   sp  t tj dd¡g d¢g d¢d�}d}tjt|d�� |j ¡  W d   ƒ n1 sR0    Y  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ÄJ ‚|D ]}|  
|j|j¡ qÈt||jƒD ]\}}| ¡ |ksêJ ‚qêg d¢}g d¢}t	|jjdd||d�}t|ƒt|jƒk�sBJ ‚|D ]$}|  
|j|¡ | j|j|d� �qFd S )Nr?   r6   )ÚXÚYÚZ©rš   r›   rœ   rð   ÚerS   z/pie requires either y column or 'subplots=True'r:   rÙ  rŠ   r1   Tr'   r}   )rþ   Úgr›   rœ   Úm)r(   r)   rm  rÐ  rE  )r   r   r   r`   r\   r]   r¹   rY   r�   r   rŸ   Útextsr>   rm   rT   rh   rG  rH  rý   )r    ro   rp   rW   rn   Úylabelrm  Z
color_argsr#   r#   r$   Útest_pie_dfE  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 d   ƒ n1 sš0    Y  g d¢}t|ƒD ]r\}}t|ƒ}	d	|	|< d
d„ |jD ƒ}
|
|	ksèJ ‚dd„ | ¡  ¡ D ƒ}|d |… ||d d …  }||ks´J ‚q´d S )Nr   r*   )Zncolsz3.3Ú	normalizeT)r)   rW   rT  )Ú0Ú1Ú2Ú3Ú c                 S   s   g | ]}|  ¡ ‘qS r#   r4  r„  r#   r#   r$   r
  ƒ  r  z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r#   r4  r„  r#   r#   r$   r
  ‰  r  r,   )r   r   r   r   r`   ri   r‚   Zilocrl   r)   Ú__version__r   Úassert_produces_warningrY   r�   r¨  ra   rß  r­  r®  )r    r"   ro   r6  rq   rn   rÖ  Zbase_expectedrW   r  rr   Zresult_labelsZexpected_labelsr#   r#   r$   Útest_pie_df_nano  s&    
8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 d   ƒ n1 �sÂ0    Y  tdgd dgd dœƒ}t 	t¡� |j|d� W d   ƒ n1 �s0    Y  d S )Nr%  r   r0   r7   çš™™™™™É?çš™™™™™Ù?T)Úyerrr®   r1   ©Úxerrrí  )rí  r±   r®   )rí  r´   r,   rP   )rí  rï  rá   r«   r9   ©rí  )r1   r%  )rí  u   èª¤å·®r8   )r9   r8   rí  r_  Úzzz)r   r   r   Úonesr   rY   Ú_check_has_errorbarsÚcopyr   Zexternal_error_raisedr¹   r   rž   r  )r    rð   ro   Úd_errÚdf_errrW   rí  Zs_dfr#   r#   r$   Útest_errorbar_plot�  s<    ÿ4z%TestDataFramePlots.test_errorbar_plotrá   )r_   rP   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   r0   r7   rë  rì  r8   ©rí  rá   r1   rî  )rí  rï  rá   )rï  rí  rá   T)r(   rí  rï  r)   rá   r,   )r   r   r   rò  r   rY   ró  )r    rá   rð   ro   rõ  rö  rW   rn   r#   r#   r$   Ú"test_errorbar_plot_different_kinds»  s.    úz5TestDataFramePlots.test_errorbar_plot_different_kindszIterator is consumed)rø   r]   c                 C   sx   t  ¡ �\ t d¡t ddd¡dœ}t|ƒ}t|jt dt	|ƒ¡d�}| j
|ddd� W d   ƒ n1 sj0    Y  d S )	Nr%  r   r0   r7   rŠ  rð  r1   rî  )ÚwarningsÚcatch_warningsr   r   r   r   rY   Ú	itertoolsrš  rm   ró  )r    rð   ro   rW   r#   r#   r$   Útest_errorbar_plot_iteratorÛ  s
    
z.TestDataFramePlots.test_errorbar_plot_iteratorc                 C   sf   t tj dd¡ƒ}t tj dd¡ƒ}t|j|d�}| j|ddd� t|jddd�}| j|ddd� d S )Nr<   r1   rð  r   rî  r,   )r9   rí  )r   r   r   rž   r   rY   ró  )r    ro   rö  rW   r#   r#   r$   Ú'test_errorbar_with_integer_column_nameså  s    z:TestDataFramePlots.test_errorbar_with_integer_column_namesc           
      C   s   t tj dd¡ƒ}t tj dd¡ddgd�}ddg}|D ]$}t|j||d�}| j|ddd	� q8t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<   r6   r1   r   r�   r_   rP   rø  rî  ú1/1/2000ÚM)r"  r!  T)Zinplacer%  r0   r7   rë  rì  )r8   r“   rð  r,   )r   r   r   rž   r   rY   ró  r
   r©   r   rò  )
r    ro   rö  Úkindsrá   rW   Ú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   r0   r7   rë  rì  rÿ  z1/1/2001r   )r!  r=   rø  r1   rî  r9   r8   )r9   rí  rá   r,   T)r(   rá   rí  r)   )r   r   rò  r
   r   r   rY   ró  )	r    rá   rð   rõ  r  r   Ztdf_errrW   rn   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 d   ƒ n1 sÎ0    Y  t ¡  d S )Nr   r6   r1   r?   rU  )rí  rï  r,   r0   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)r:   rð  )r   r   r�  r`   r   r   ZreshapeÚTrY   r;  Ú	get_pathsZverticesr‹   r   r‡  r  r  r\   r]   r¹   r¿   )r    r  ro   rW   Zyerr_0_0Zexpected_0_0rp   r#   r#   r$   Útest_errorbar_asymmetrical&  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 ¡�J | ¡ }t|jƒdksfJ ‚t ||j¡ t|jƒdks†J ‚W d   ƒ n1 sš0    Y  d S )Nr<   r6   r=   T)Útabler   r,   )r   r   r   r`   ra   rb   rc   r   rY   r   ré  rm   ZtablesrÀ   r	  r  r—   r#   r#   r$   Ú
test_table;  s    $zTestDataFramePlots.test_tablec                    s|  t tj dd¡tdƒddgd�}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j dd¡g d¢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?   r1   r8   r9   rÆ   r7   r   rî  )r8   r9   rï  r,   )r8   r9   rí  )r8   r9   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Á   rb  ©Úhas_errr#   r$   r
  Y  r  z[TestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_color.<locals>.<listcomp>r   c                    s   g | ]}|ˆ j v r|‘qS r#   )r;  r„  ©rW   r#   r$   r
  _  r  rÏ  )Ú
containersr   ÚextendÚappendrH  r   r‹   rm   )r  r  r  rÁ   ZerrsÚelZ	err_lines©rW   r    r  r$   Ú_check_errorbar_colorW  s    ÿzGTestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_colorr<   rÛ  r�   rš   r›   rð   rÜ  rD  )r8   r9   rï  rí  rœ   r  Zhas_yerrrÍ  )r8   r9   rí  r²  )r  )
r   r   r   rž   ri   r   rY   rŽ   ró  r  )r    ro   rö  r  r#   r  r$   Útest_errorbar_scatterG  s*     ÿz(TestDataFramePlots.test_errorbar_scatterc                    sx  dd l m} | d¡ tƒ \}}tg d¢g d¢g d¢g d¢dœƒ}‡ fdd„}|D ]}|jddd	|d
d� qR| | ¡ ¡ ||ƒ t ¡  tƒ \}}t 	t
¡�  |jd
|d
d�}W d   ƒ n1 sÄ0    Y  ||ƒ t ¡  tƒ \}}|D ]}|jddd	|d� qì| | ¡ ¡ |D ]T}t|jƒdk�s.J ‚ˆ j| ¡ d
d� ˆ j| ¡ d
d� ˆ j|jd
d�d
d� �qt ¡  d S )Nr   r=  ©r,   r1   r6   r*   r?   rL   ©rš   r›   rœ   rð   c                    s®   | D ](}t |jƒdksJ ‚ˆ 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,   TrD   r   r1   FrF   r6   )rm   rÁ   rd   rr  rf   ©rn   rW   ©r    r#   r$   Ú_check�  s    z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkrš   r›   rB   T)r8   r9   rB   rW   Úsharex)r)   rW   r  ©r8   r9   rB   rW   r,   rD   rF   )r¤  r¥  r¿   Ú_generate_4_axes_via_gridspecr   rY   Útight_layoutr¦  r   ré  ÚUserWarningrm   rÁ   rd   rr  rf   ©r    rl   Úgsrn   ro   r  rW   r#   r  r$   Útest_sharex_and_axo  s>    

üÿ	
.
z%TestDataFramePlots.test_sharex_and_axc                    st  dd l m} tƒ \}}tg d¢g d¢g d¢g d¢dœƒ}‡ fdd„}|D ]}|jddd|d	d
� qH| | ¡ ¡ ||ƒ t ¡  tƒ \}}t 	t
¡�  |jd	|d	d�}W d   ƒ n1 sº0    Y  | | ¡ ¡ ||ƒ t ¡  tƒ \}}|D ]}|jddd|d� qð| | ¡ ¡ |D ]T}t|jƒdk�s2J ‚ˆ j| ¡ d	d� ˆ j| ¡ d	d� ˆ j|jd	d�d	d� �qd S )Nr   r  r  c                    s˜   | D ]>}t |jƒdksJ ‚ˆ 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,   TrD   rF   r   r1   r6   F)rm   rÁ   rd   rf   rr  r  r  r#   r$   r  ¶  s    z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkrš   r›   rB   T)r8   r9   rB   rW   rú   )r)   rW   rú   r  r,   rD   rF   )r¤  r¥  r  r   rY   r  r¦  r   r¿   ré  r  rm   rÁ   rd   rr  rf   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 ]Z}i }|dv r>| j}dddœ}n|dkrR| j ¡ }n| j}| |j	f d|i|¤Ž¡||< qt
 ¡  | ¡  d	}|D ]<}tjt|d
�� || j W d  ƒ q�1 sÂ0    Y  q�dS )z3Check that every plot type gets properly collected.r   N)r�   rŽ   r�   r   r   r7   rÖ   rá   z)weakly-referenced object no longer existsr:   )ÚgcÚweakrefrÀ   r¹  Z
_all_kindsr   r   ÚabsÚproxyrY   r   r¿   Zcollectr\   r]   ÚReferenceErrorrÁ   )	r    r$  r%  Úresultsrá   Úargsro   rp   Úkeyr#   r#   r$   Útest_memory_leakÚ  s$     z#TestDataFramePlots.test_memory_leakc           
         s„  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 J ‚|j|d�}t|jƒdks¾J ‚||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�sJJ ‚t|jƒdk�s^J ‚|D ]@}| j| ¡ dd� | j| ¡ dd� | j|jdd�dd� �qbt ¡  �q|ƒ \}}t t¡�& |jd||gddd�}W d   ƒ n1 �sò0    Y  t|d jƒdk�sJ ‚t|d jƒdk�s,J ‚||fD ]}| j| ¡ dd� �q4| 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 d   ƒ n1 �sø0    Y  t|d jƒdk�sJ ‚t|d jƒdk�s2J ‚| j|d  ¡ dd� | j|d  ¡ dd� ||fD ].}| j| ¡ dd� | j|jdd�dd� �qft ¡  ‡ ‡fdd„}	|	ƒ }t	tj dd¡|j
tdƒd�}|jd|d�}|D ]T}t|jƒdk�súJ ‚| j| ¡ dd� | j| ¡ dd� | j|jdd�dd� �qât ¡  |	ƒ }t t¡�" |jd|ddd�}W d   ƒ n1 �sz0    Y  |D ]}t|jƒdk�sˆJ ‚�qˆ|d |d fD ]}| j| ¡ dd� �q´|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� �qHt ¡  d S )Nr   r<   rÿ  )r"  r=   r1   ÚABrÆ   c                     sL   ˆ   dd¡} ˆ ¡ }| | d d…d d …f ¡}| | dd d …f ¡}||fS )Nr6   r,   r1   ©ÚGridSpecrÓ  r§  ©r!  rq   ræ   rç   ©Úgridspecrl   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,   r6   r1   r.  r0  r1  r#   r$   Ú_get_horizontal_grid  s
    zJTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_horizontal_gridr  r,   TrD   rF   rV   )r)   rW   r  rú   Fc                     st   ˆ   dd¡} ˆ ¡ }| | d d…d d…f ¡}| | d d…df ¡}| | dd d…f ¡}| | d ¡}||||fS )Nr6   r1   r2   r.  )r!  rq   ræ   rç   Zax3Zax4r1  r#   r$   Ú_get_boxed_gridH  s    zETestDataFramePlots.test_df_gridspec_patterns.<locals>._get_boxed_gridr*   ÚABCDr6   )Úmatplotlib.gridspecr2  r¤  r¥  r   r   r   rž   r
   r   r>   ra   rY   rm   rÁ   rd   rr  rf   r   r¿   ré  r  )
r    Útsro   r3  r4  ræ   rç   rW   rn   r5  r#   r1  r$   Útest_df_gridspec_patternsû  s”    

6
6	2z,TestDataFramePlots.test_df_gridspec_patternsc                 C   s0   | j tg d¢g d¢dœƒtjjdddœd� d S )Nr”   r*  rê   rš   r›   r7   )Úkws)Z_check_grid_settingsr   rÀ   r¹  Z_dataframe_kindsr  r#   r#   r$   Útest_df_grid_settingsn  s
    ýz(TestDataFramePlots.test_df_grid_settingsc           	      C   s<  | j  ¡ \}}| g d¢¡ 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 )N)rë  rë  rë  rë  r<   r  rR   rê   )r   r   r,   r,   rŽ   rš   r›   Zhsv)rá   rW   r8   r9   rœ   rF  r   )Úmake_axes_locatablerL  z5%gš™™™™™©?)r   Úpad)Ú
inset_axesz30%ru   r6   )r   ra  r}  )rl   r)   Zadd_axesr   r   r   r`   rY   r   rž   rÓ  Zmpl_toolkits.axes_grid1r<  Zappend_axesZ%mpl_toolkits.axes_grid1.inset_locatorr>  )	r    rq   rW   ro   r<  ÚdividerZcaxr>  Ziaxr#   r#   r$   Útest_plain_axesv  s$    

z"TestDataFramePlots.test_plain_axesr!   )r_   r  rP   c                 C   st   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 i |¤Ž}| j|j	|d� d S )NrU  r1   r-  r�   c                 S   s
   | j  ¡ S r7  )r   rœ  ©ro   r#   r#   r$   Ú<lambda>š  r  zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>©r   c                 S   s
   | j d S )Ngš™™™™™ñ?rC  rA  r#   r#   r$   rB  ›  r  )r~   r   r   r~   T)ró   rY  Z
mark_right)rn   r\  )
r   r   r   rž   ra   Zassignr»  rY   r[   rô   )r    r!   ro   rY  rÝ   rÖ  rW   r#   r#   r$   Útest_secondary_axis_font_size•  s    ÿþÿz0TestDataFramePlots.test_secondary_axis_font_sizec                 C   sŽ   t g d¢g d¢g d¢dœƒ}|jjdd�}| dd¡ d	d
„ | ¡ D ƒ}tt|| ¡ ƒƒ}|d dksjJ ‚|d dkszJ ‚|d dksŠJ ‚d S )N)r6   r1   r6   )r   rß   é   )ÚMondayÚTuesdayÚ	Wednesday)ZsalesZvisitsÚdayrI  r¦   r0   r6   c                 S   s   g | ]}|  ¡ ‘qS r#   r4  ©r  Útr#   r#   r$   r
  ±  r  zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>rF  rÎ   rG  ru   rH  rv   )r   rY   rÖ   Úset_xlimrf   ru  rh   Ú
get_xticks)r    ro   rW   Ú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szJ ‚|d dksŠJ ‚|d dksšJ ‚|d dksªJ ‚d S )Nr¶  iÝ  r,   r1   r*   r   r   rS   r0   c                 S   s   g | ]}|  ¡ ‘qS r#   r4  rJ  r#   r#   r$   r
  ¿  r  zETestDataFramePlots.test_x_multiindex_values_ticks.<locals>.<listcomp>z	(2012, 1)rÎ   z	(2012, 2)ru   z	(2013, 1)rv   z	(2013, 2)rw   )r   Zfrom_productr   r   r   rž   rY   rL  rf   ru  rh   rM  )r    r>   ro   rW   rN  rO  r#   r#   r$   Útest_x_multiindex_values_ticks¸  s    z1TestDataFramePlots.test_x_multiindex_values_ticksr_   rÖ   c                 C   sL   t ddgddgd�}|j|d�}| ¡ }|d dk s8J ‚|d dksHJ ‚d S )Nr1   r*   r,   r=   rx  r   )r   rY   rÏ   )r    rá   ro   rW   Úxlimsr#   r#   r$   Útest_xlim_plot_lineÇ  s
    z&TestDataFramePlots.test_xlim_plot_linec                 C   s²   | j  ¡ \}}g d¢}tg d¢g d¢g d¢g d¢dœ|d�}|g d¢ jj|d	d
� |dg j|dd� | ¡ }|d dk s€J ‚|d dks�J ‚dd„ | ¡ D ƒ}||ks®J ‚d S )N)Zk1Zk2Zk3Zk4)iè  rÄ   éÜ  rÄ   )i„  ix  rÄ   i¸  )rT  rT  i@  i°  )r,   r6   r*   r6   )Ús1Ús2Ús3ró   r=   )rU  rV  rW  F)rW   râ   ró   T)rW   ró   r   r,   r6   c                 S   s   g | ]}|  ¡ ‘qS r#   r4  rJ  r#   r#   r$   r
  è  r  zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)rl   r)   r   rY   rP   rÏ   rf   )r    rq   rW   Zindexesro   rR  rN  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J ‚| ¡ }t| ¡ ƒdks4J ‚| ¡ d }t| ¡ ƒdksTJ ‚t| ¡ ƒdkshJ ‚d S )NZfoo)rT   r�   r,   r   )r   ÚintÚemptyrY   rm   r–   r¾   rì   )r    ro   rW   r_   r#   r#   r$   Útest_plot_no_rowsë  s    
z$TestDataFramePlots.test_plot_no_rowsc                 C   sF   t g d¢ƒ}tjtdd�� | ¡  W d   ƒ n1 s80    Y  d S )Nr™   r¾  r:   )r   r\   r]   r  rY   r¤   r#   r#   r$   Útest_plot_no_numeric_dataõ  s    z,TestDataFramePlots.test_plot_no_numeric_dataz index_name, old_label, new_label)Nrç  Únew)Úoldr^  r]  )Nrç  rç  )Nrç  r,   rç  )r_   rÖ   rP   c                 C   sŒ   t ddgddggddgd�}||j_|j|d�}| ¡ |ks@J ‚| ¡ dksPJ ‚|j|||d	�}| ¡ t|ƒkstJ ‚| ¡ t|ƒksˆJ ‚d S )
Nr,   r1   r?   úType AúType Br�   rx  rç  )rá   rà  Úxlabel)r   r>   r£   rY   Ú
get_xlabelrG  Ústr)r    rá   Z
index_nameZ	old_labelZ	new_labelro   rW   r#   r#   r$   Ú(test_xlabel_ylabel_dataframe_single_plotú  s    z;TestDataFramePlots.test_xlabel_ylabel_dataframe_single_plotzxlabel, ylabel))NN)úX LabelN)NúY Label)re  rf  rŽ   r�   c                 C   st   d}d}t ddgddgg||gd�}|j|||||d�}| ¡ |d u rJ|n|ksTJ ‚| ¡ |d u rf|n|kspJ ‚d S )Nr_  r`  r,   r1   r?   r�   )rá   r8   r9   ra  rà  )r   rY   rb  rG  )r    rá   ra  rà  ZxcolZycolro   rW   r#   r#   r$   Ú'test_xlabel_ylabel_dataframe_plane_plot  s    z:TestDataFramePlots.test_xlabel_ylabel_dataframe_plane_plot)NNNN)cÚ__name__Ú
__module__Ú__qualname__r   rs   rˆ   r‘   r˜   r    r¥   rª   r\   ÚmarkZparametrizer¶   rº   rÂ   rÇ   rÌ   rÓ   rØ   rÞ   ré   rò   rö   Zxfailrù   rû   rÿ   r  r  r  r  r  r$  r)  r+  r>  r@  rK  rN  r`  rn  rs  rv  ÚtdZskip_if_no_scipyr{  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"  r#  r,  r9  r;  r@  rD  rP  rQ  rS  rX  r[  r\  rd  rg  r#   r#   r#   r$   r   '   s@  lÿ

&0'þ%		þ
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   r1   r|  )r,   r   r¡  rU   )r   r7  r¤  r¥  r2  r/  Zsubplot)r"   r   rl   r!  Zax_tlZax_llZax_trZax_lrr#   r#   r$   r  ,  s    r  )(Ú__doc__r   r   rü  r  rb   rú  Únumpyr   r\   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrl  Zpandas.core.dtypes.apir   Zpandasrƒ   r   r   r   r   r	   r
   Zpandas._testingZ_testingr   Zpandas.tests.plotting.commonr   r   Zpandas.io.formats.printingr   Zpandas.plottingrÀ   rk  ZslowZ
pytestmarkZskip_if_no_mplr   r  r#   r#   r#   r$   Ú<module>   sF                    