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