o
    deI                    @   s   d Z ddlmZmZ ddlZddlZddlZddlZddlZddlZddl	Z
ddlZddlm  mZ ddlmZ ddlZddlmZmZmZmZmZmZmZ ddlmZ ddlmZm Z  ddl!m"Z" ej#G dd	 d	eZ$d
d Z%dS )z Test cases for DataFrame.plot     )datedatetimeN)is_list_like)	DataFrame
MultiIndexPeriodIndexSeriesbdate_range
date_rangeplotting)TestPlotBase_check_plot_workspprint_thingc                   @   sB  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g ddd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zejd&d'd(gd)d* Zd+d, Zd-d. Zejjd/d0d1ejd2d3d/gd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA Z dBdC Z!dDdE Z"dFdG Z#dHdI Z$ejdJd3d/gejdKg dLg dMfdNdO Z%ejdPg dQdRdS Z&dTdU Z'dVdW Z(dXdY Z)dZd[ Z*ejjd\d] Z+d^d_ Z,d`da Z-dbdc Z.e/j0ddde Z1e/j0dfdg Z2dhdi Z3ejdjdke4j5dldm dke4j5dndm gdodp Z6	q	q	q	qddrdsZ7dtdu Z8dvdw Z9dxdy Z:dzd{ Z;ejd|g d}d~d 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&g ddd ZMejjdeNddd ZOdd ZPejjddĄ ZQejd&g dddƄ ZRddȄ ZSddʄ ZTdd̄ ZUdd΄ ZVddЄ ZWdd҄ ZXe/j0ddԄ ZYddք ZZdd؄ Z[ddڄ Z\ejdg dܢ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dg ddd Zhdd Zidd Zjejd&ddd Zkejdd ddddqdddgfgejd&g ddd Zlejdg d	ejd&d
dgdd Zmejdddd ZndqS (  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 d    n1 sjw   Y  ttjddttjd d d}t|jdd}| 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 ]'}| |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g d$d%d&gd'}tjd(d)gd*d+gd'}ttjddd,||d-}t|jd.d# td/tjdi}t|jjdd0}| j|dd1d t|jjdd2d3}| j|dd1d | j \}}|jjd|d4}t|dksJ |j}	|	|d u sJ d S )5NF)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)blarg
   index)r   )r      r)   )yticks)xticks)id   )ylimxlimblah)r   r   title)r   r3   r"   r   visibleminor)r3   ))   αr   )r9   r   )   βr   )r:   r"   )   γr   )r;   r,   )   δ   )r<      i0i1)names)baru   Δ)rB   u   Ε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randintrB   pltr   lenaxes)
selfdfre   msgrK   tuplesr+   rG   figresult rl   k/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/plotting/frame/test_frame.py	test_plot)   s   $
zTestDataFramePlots.test_plotc              
   C   s   g d}t g dg d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 )N)20082009N20112012r   r   r"   r   r,   r>   r,   r"   r   dtypez%Y)formati8T)rv   utcABCDErz   r{   r#   r|   r}   r~   )
r   rU   arraynanobjectpdto_datetimeviewr   rN   )rf   datesrg   rl   rl   rm   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   r   r"   r   UInt32rt   r#   r%   r%   r$   )r   r   r   r   rN   rT   rB   histpier   scatterhexbin)rf   arrsrg   rl   rl   rm   test_integer_array_plot   s   z*TestDataFramePlots.test_integer_array_plotc                 C   s6   t g dg dd}| }t| dksJ d S )Nr$   r%   zr   r   r"   rz   r{   r   )r   rN   rd   	get_linesrf   rg   rK   rl   rl   rm   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)   r"   abcrG   r   r   r#   )r   rU   rV   randnrN   _check_text_labelsr\   r^   r   rl   rl   rm   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 )Nr   r   r   r   NAMELABEL)r%   label)r   rU   rV   r   r+   namerN   rf   rg   rl   rl   rm   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#   rz   r{   r$   r   r   Test)   rE   )r$   r%   r3   figsizerI   )g      0@g       @)r   r   r   )rL   rM   _check_datarN   	set_indexr{   rU   arangerd   rG   r   r3   rO   r   rl   rl   rm   test_plot_xy   s   $"$zTestDataFramePlots.test_plot_xyzinput_log, expected_log)Tlog)symsymlogc                 C   s   t dtditdd}|j|d}| j||d | |ks#J |j|d}| j||d | |ks8J |j|d}| j|||d	 | |ksNJ | |ksVJ d S )
Nr   r/   r*   logyyaxis)logxr\   loglog)r\   r   )r   rU   r   rN   _check_ax_scales
get_yscale
get_xscale)rf   	input_logexpected_logrg   rK   rl   rl   rm   test_logscales   s   z!TestDataFramePlots.test_logscalesinput_param)r   r   r   c                 C   sh   t dtditdd}d}tjt|d |jdi |di W d    d S 1 s-w   Y  d S )Nr   r/   r*   z9Boolean, None and 'sym' are valid options, 'sm' is given.r&   smrl   )r   rU   r   rQ   rR   
ValueErrorrN   )rf   r   rg   rh   rl   rl   rm   test_invalid_logscale   s
   "z(TestDataFramePlots.test_invalid_logscalec                 C   s  t  }|jdd}| }t|d  trJ | j|dd t   dt	j
d< | }| }t|d  tr<J | j|dd t   dt	j
d< | }| }t|d  tr_J tt|d  tslJ t   t	j
dd" | }| }t|d  trJ | j|dd W d    n1 sw   Y  t   | }| }t|d  trJ tt|d  tsJ | j|dd d S )	NT)x_compatr      r    zxaxis.compatFr   )rL   rM   rN   r   
isinstance	get_xdatar   rP   closer   plot_paramsuse)rf   rg   rK   linesrl   rl   rm   test_xcompat   s<   

zTestDataFramePlots.test_xcompatc                 C   sT   t tjddttdddtdddddgd}|  | jjd	d
 t	
  d S )N   r     r      r   r   r+   rG   r   r   )r   rU   rV   rW   r	   r   rN   rc   axhlinerL   r   r   rl   rl   rm   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+   ru   r   r   )ru   r   F)check_index_typert   )r   rU   r   int64rN   r   
get_xydatar   rL   assert_series_equalr%   r   r   Indexfloat64r+   )rf   rg   rK   r   rsrl   rl   rm   test_unsorted_index0  s   **z&TestDataFramePlots.test_unsorted_indexc              	   C   sp  t dg dig dd}| }| \}}| }|t|d  d ks)J |t|d  d ks8J 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smJ |t|d  d ks|J t g dg dd}|jddd}| \}}| }|t|d  d ksJ |t|d  d ksJ d S )Nr%                 ?       @      @)r   r   r   r   r*   r   r   r   r   g      @g      @g      @r   )g     V@g     V@g     @W@g      W@)r%   r   r   r#   )	r   rN   get_xlimr   rU   nanminget_datananmaxr   )rf   rg   rK   xminxmaxr   rl   rl   rm   test_unsorted_index_limsB  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 s1w   Y  tjt	|d |j
jdd	 W d    d S 1 sPw   Y  d S )
Nr=   r   r$   r%   r   fourr   z+Log-y scales are not supported in area plotr&   Tr   r   )r   rU   rV   rW   rX   rY   rZ   rQ   rR   r   rN   arearf   rg   rh   rl   rl   rm   test_negative_log[  s   "z$TestDataFramePlots.test_negative_logc                 C   sZ   t t|d  d }t||D ]\}}|| d 7 }| d }t|| qd S )Nr   r   )rU   zerosrd   r   r_   rL   assert_numpy_array_equal)rf   normal_linesstacked_linesbasenlslsyrl   rl   rm   _compare_stacked_y_coodg  s   z*TestDataFramePlots._compare_stacked_y_coodkindrT   r   c                 C   s  t jd}t|ddg dd}| }t|d|d|d |d d}t|ddttjd d g d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 d    n1 sw   Y  ||jd }
t	|
j
|d	d	d d S )N*   r=   r   )wr$   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   )rU   rV   RandomStater   rW   r   rX   rY   rZ   r   rN   r   r   rQ   rR   r   r   r+   )rf   r   	np_randomrg   neg_dfsep_dfmixed_dfax1ax2rh   df2rl   rl   rm   test_line_area_stackedn  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  | q&d S )Nr   r   r"   r   r   r   )kr*   r   r   rt   )r"   r   r   )FFTF)FTFF)r   r   r   r"   )r"   r   r   r   Tr   F)rU   r   r   rL   makeDateIndexr   rN   r   	get_ydatar   r   r   deletedatamaskr   )rf   values1values2rg   tdfdrK   masked1masked2exp	expected1	expected2rl   rl   rm   test_line_area_nan_df  s<   
z(TestDataFramePlots.test_line_area_nan_dfc                 C   sZ  t tjddg dd}| }| \}}| }||d  d d ks)J ||d  d d ks7J |jdd}| \}}| }||d  d d ksUJ ||d  d d kscJ |jddd	}| j|dd
d |D ]6}t	|ds}J t	|drJ | \}}| }||d  d d ksJ ||d  d d ksJ qtd S )Nr=   r"   r   r   r   r   T)secondary_y)r  r   r4   r   left_axright_ax)
r   rU   rV   rW   rN   r   r   r   rO   hasattr)rf   rg   rK   r   r   r   re   rl   rl   rm   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g dd}| }t|jj|d}| \}}| \}}|	 }	||	d 
 d d ks6J ||	d 
 d d ksDJ |dksJJ t|jj|d}| \}}|dks^J d S )Nr=   r   r   r   r   r   r   )r   rU   rV   rW   r   rN   r   r   get_ylimr   r   )
rf   r   rg   r   rK   r   r   yminymaxr   rl   rl   rm   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
 | |||s3J | |||s>J d S )Nr   r   r$   r%   r   r   T)shareyr   )rK   r   )	r   rU   rV   rW   rc   r   rN   
get_y_axisjoined)rf   rg   rj   r   r   rl   rl   rm   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s3J q)|jjddd}| j|ddd |D ]}|jD ]
}| dksUJ qKqFd S )	Nr,   r   )	linewidthT)r   r"  )r"  r   )r,   r   r   )	r   rU   rV   r   rN   rB   patchesget_linewidthrO   )rf   rg   rK   rre   rl   rl   rm   test_bar_linewidth  s   


z%TestDataFramePlots.test_bar_linewidthc                 C   sF  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 q0|jj
|d}|jD ]}| |t|j	 ksTJ qE|jj
d|d}|jD ]
}| |ksjJ q`|jj|dd}|D ]}|jD ]
}| |ksJ qzqu|jj
|dd}|D ]}|jD ]
}| |ksJ qqd S )Nr,   g?)widthT)r   r'  )r'  r   )r   rU   rV   r   rN   rB   r#  	get_widthrd   rG   barh
get_height)rf   rg   r'  rK   r%  re   rl   rl   rm   test_bar_barwidth  s2   





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s"J |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sJ q|jjdtg dd}|D ]}dd |jD }|dgd ksJ qd S )Nr,   Fr   )r   bottomc                 S      g | ]}|  qS rl   get_y.0prl   rl   rm   
<listcomp>;      z;TestDataFramePlots.test_bar_bottom_left.<locals>.<listcomp>   T)r   c                 S   r-  rl   r.  r0  rl   rl   rm   r3  ?  r4  )r   r   r   r   r   )r   leftc                 S   r-  rl   get_xr0  rl   rl   rm   r3  C  r4  rs   c                 S   r-  rl   r;  r0  rl   rl   rm   r3  G  r4  r   )r   r,  c                 S   r-  rl   r.  r0  rl   rl   rm   r3  L  r4  )r   r:  c                 S   r-  rl   r;  r0  rl   rl   rm   r3  Q  r4  )	r   rU   rV   rW   rN   rB   r#  r)  r   )rf   rg   rK   rk   re   rl   rl   rm   test_bar_bottom_left8  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s'J |jjd	d
}dd |jD }||ks<J dd |jD }g d}||ksNJ d S )Nr)      )r,   r)   r>  r   rz   r{   r|   )	r)   r   r>  r,   r)   r>  r   r   r"   c                 S   r-  rl   r*  r0  rl   rl   rm   r3  X  r4  z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>Tr   c                 S   r-  rl   r@  r0  rl   rl   rm   r3  \  r4  c                 S   r-  rl   r.  r0  rl   rl   rm   r3  _  r4  )	r   r   r         $@r   g      4@g      .@rA  g      D@)r   rU   r   rN   rB   r#  )rf   rg   rK   expectedrk   rl   rl   rm   test_bar_nanT  s    
zTestDataFramePlots.test_bar_nanc                 C   s0  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 ]e}|j	 }|j
 }t|tg d | dksOJ |jd  d	ksZJ |jd
  dkseJ |jj	dd}t|tg d | dksJ |jd  d	ksJ |jd
  dksJ q0d S )Nr=   r,   ABCDEFabcder   )r   r   r   r"   r   r,   )g      g      @r   g      пr   g@Tr   g      @)r   rU   rV   r   r   r   rX   CategoricalIndexrN   rB   r\   get_ticklocsrL   r   r   r   r#  r<  )rf   df1r  rg   rK   ticksrl   rl   rm   test_bar_categoricalc  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 sEw   Y  t
d}tjt|d |jj	dd W d    n1 shw   Y  |jddddd}| j|ddd d S )Nr=   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   rI   r   )r   rU   rV   r   rX   rY   rZ   r   rN   r   reescaperQ   rR   	TypeErrorrO   )rf   rg   rh   re   rl   rl   rm   test_plot_scatter  s"   

z$TestDataFramePlots.test_plot_scatterc                 C   sr   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    d S 1 s2w   Y  d S )Nr)   r   r   z
2014-01-01h)startfreqperiodsdtimez9must be a string or a (real )?number, not 'datetime.time'r&   r   )r   r$   r%   )
r   rU   rV   r   r
   timerQ   rR   rM  rN   r   rl   rl   rm   &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)rP  rR  rQ  r   )r   valsr   rX  r#   )
r
   r   rU   rV   normalrd   r   r   rN   r   )rf   r   rX  rg   rl   rl   rm   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?  r   r"   r   r  r   r   r#   r   r   r   )r   r   rN   r   r   rl   rl   rm   test_scatterplot_object_data  s   z/TestDataFramePlots.test_scatterplot_object_dataordered
categories)setosa
versicolor	virginica)r`  ra  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 snJ d S )Ngffffff@g      @g@r   g      @g	@g@g@lengthr'  r   )r_  r_  ra  ra  r`  )r]  r^  speciesr   r   r$   r%   r   )      ?g      ?g      @r   c                 S   r-  rl   get_text)r1  irl   rl   rm   r3    r4  zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s    | ]	\}}||kV  qd S Nrl   )r1  rh  jrl   rl   rm   	<genexpr>  s    zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   r   CategoricalrN   r   collectionscolorbarrU   r   	get_ticksrL   r   _boundariesrK   get_ymajorticklabelsallr_   )rf   r]  r^  rg   rK   colorbar_collectionrn  expected_ticksresult_ticksexpected_boundariesresult_boundariesexpected_yticklabelsresult_yticklabelsrl   rl   rm   %test_scatterplot_color_by_categorical  s*    
 z8TestDataFramePlots.test_scatterplot_color_by_categoricalzx, y)r#   )r%   r$   )r%   r%   c                 C   s2   t g dtg dd}t|jj||d d S )Nr   )r   r   r   r   r#   )r   r   rl  r   rN   r   rf   r$   r%   rg   rl   rl   rm   '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 g dd}|jjdd	d
d|jjddddg}|D ]}|j	d j
jdks8J |j	d jj d
ksEJ 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 sqJ |jjdddd}|j	d jd u sJ | 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   r/   )r=   r   )lowhighsizer=   r   r   r$   r%   r   rd  r   r   Greys	cubehelix)r$   r%   r   colormapF)r$   r%   r   rn  redr%  
facecolorsr"   r   r   )r   r   r   r   )r   r   r   r   rz   r{   r   r   spring)r$   r%   r   cmap)r   rU   rV   rb   rX   rY   rZ   rN   r   rm  r  r   rn  rK   
get_ylabel_check_colorsr   rL   r   get_facecolor)	rf   rg   re   rK   cmred_rgba
green_rgba
rgba_arrayfloat_arrayrl   rl   rm   test_plot_scatter_with_c  s2   $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)   r"   r/   r   r   r   r   r   )r$   r%   r   r   )right)
r   rU   rV   rN   r   rL   r   valuesrm  	get_sizesr   rl   rl   rm   test_plot_scatter_with_s
  s   "z+TestDataFramePlots.test_plot_scatter_with_sc                 C   sZ   dd l }ttjdd g dd}|j }|jjddd|d	}|jd j	|u s+J d S )
Nr   r  r/   r   r   r   r   r   )r$   r%   r   norm)

matplotlibr   rU   rV   colorsLogNormrN   r   rm  r  )rf   mplrg   r  rK   rl   rl   rm   test_plot_scatter_with_norm  s
   
z.TestDataFramePlots.test_plot_scatter_with_normc                 C   s   dd l }ttjdd g dd}|jjdddd	}|jd j}|j	 |j
 f}|jj| }|jD ]}||||ks@J q4d S )
Nr   r  r/   r   r   r   r   r   rd  )r  r   rU   rV   rN   r   rm  r  r   minmaxr  	Normalize)rf   r  rg   rK   	plot_normcolor_min_maxdefault_normvaluerl   rl   rm   test_plot_scatter_without_norm  s   
z1TestDataFramePlots.test_plot_scatter_without_normc                 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 )Nr=   r   onetwothreer   r   FlegendTr   r   r)      r   r   r  Z   r    #   )rotfontsizer!   
xlabelsize
ylabelsize)yrot7      )r  r  r  )r   rU   rV   r   rX   rY   rZ   r   rN   rB   r`   rP   r)  r   rl   rl   rm   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>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dt| ksJ d S )Nheightc                 S      g | ]}t |qS rl   r   r1  r   rl   rl   rm   r3  K  r4  z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>r   r>   (   r  r   r!   r  )r   r=   r>   )	positionsc                 S   r  rl   r   r  rl   rl   rm   r3  ^  r4  )_get_numeric_datarG   r   rN   boxr   r]   rL   r   r\   rG  rU   r   rd   r   r   rP   r   )	rf   hist_dfrg   seriesnumeric_colslabelsrK   re   r  rl   rl   rm   test_boxplotG  s,   

zTestDataFramePlots.test_boxplotc           	      C   s4  |}|  j}dd |D }|jjdddd}| j|dddd | | | t|jd	t| ks5J t	|jjd
d
dd
d}| j
|ddd | j|dd t||D ]\}}| | |g t|jd	ksjJ qTtg d}|jj|dd}| | | t|j | t|jd	t| ksJ d S )Nc                 S   r  rl   r   r  rl   rl   rm   r3  f  r4  z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>2   rE   F)r  r  vertr   r!   r  r  r>   T)r   r   r  r   r"   )r   r"   r   r   r   )r"   r   rE   )r  r  )r  rG   rN   r  rP   r   get_yticklabelsrd   r   r   rO   r   r_   rU   r   rL   r   r   rG  )	rf   r  rg   r  r  rK   re   r   r  rl   rl   rm   test_boxplot_verticalc  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 s0w   Y  |j
jd	d}| |d	 |j
jd
d}| |d
 |j
 }| |d
 |j
jdd}| |d d S )Nr=   r   r  r   z2return_type must be {None, 'axes', 'dict', 'both'}r&   
not_a_type)return_typedictre   both)r   rU   rV   r   rX   rY   rZ   rQ   rR   r   rN   r  _check_box_return_type)rf   rg   rh   rk   rl   rl   rm   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   r  rl   r   r  rl   rl   rm   r3    r4  z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>r  r   r    r>  r,   )r   r  r  r  T)r   r   r   r   r   )r   r   r   r   r   )r   rU   rV   r   r   rN   rG   _check_legend_labelsrP   rO   r   )rf   rg   rK   rB  re   rl   rl   rm   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   r  r   r   r  r  )r   rU   rV   uniformr   locr   rN   r   rl   rl   rm   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   r  rl   r   r  rl   rl   rm   r3    r4  z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>r  T)r   r   r   r   r   r   r   r  r  r  )
cumulativebinsdensityc                       g | ]	}t | r|qS rl   r   r1  r$   r  rl   rm   r3        r   r   )r  r  c                    r  rl   r  r  r  rl   rm   r3    r  r6  g      Y@r  rE   
horizontal)r  r  orientationr  )matplotlib.patchesr  r   rU   rV   r   r   rN   r   rG   r  rO   r   rP   rL   r   get_childrenassert_almost_equalr*  )rf   rg   r  rK   rB  re   rectsrl   r  rm   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   rz   r{   r   r/   r   )r   r  r  c                 S   r-  rl   r@  r1  patchrl   rl   rm   r3    r4  z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |   qS )r  r@  r  rl   rl   rm   r3    s    )rU   rV   seedr   r  r_   r   r   rN   r#  rL   r  )rf   r  rg   r   r   patch_height_with_weightsexpected_patch_heightrl   rl   rm   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r4tj||dd |d ur@tj||dd |d urLtj||dd |d urZtj|	|dd d S d S )Nc                 S   r-  rl   r.  r0  rl   rl   rm   r3    r4  z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   r-  rl   r@  r0  rl   rl   rm   r3    r4  c                 S   r-  rl   r;  r0  rl   rl   rm   r3    r4  c                 S   r-  rl   )r(  r0  rl   rl   rm   r3    r4  F)check_dtype)rU   r   rL   r   )
rf   r#  
expected_y
expected_h
expected_x
expected_wresult_yresult_heightresult_xresult_widthrl   rl   rm   _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 )Nrs   )r)   	   rE   r>   r=   )rE   rE   rE   rE   rE   )r=   r>   rE   r  r)   r?  r   r   r   r"   r   r,   )r"   r)   r  rE   r>   r=   )rE   r"   rE   rE   rE   rE   )r=   r>   rE   r"   r  r)   )r  )r   r   r   r   r   )r  r  r)   T)r  r   )      r   r     )r  r   r   r   r  )r  r  )r  r  )r  r   r  )r  r   r   r  )	r   rU   repeatr   r   rN   r   r  r#  )rf   	normal_dfnan_dfrg   rK   re   rl   rl   rm   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   Tr  )r   rU   rV   r   cumsumr   rN   r   rl   rl   rm   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 ],}|  |d
 |j	|d}t
| d t| D ]\}}| || ksOJ qAq$d S )Nr   r/   r"   ^+o)r   r   r   r   r   )r  r  r	  o   )style)matplotlib.pyplotpyplotgcfr   rU   rV   r   clfadd_subplotrN   	enumerater   rd   
get_marker)rf   rc   rj   rg   markersrK   idxrT   rl   rl   rm   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s&J d S )Nr   r   Tr  r    )r   rN   
get_legend	get_textsrg  )rf   r   rK   rl   rl   rm   test_line_label_none  s
    z'TestDataFramePlots.test_line_label_nonezprops, expected))boxpropsboxes)whiskerpropswhiskers)cappropscaps)medianpropsmediansc                 C   sP   t dd dD }|ddii}|jjd	ddi|}|| d  dks&J d S )
Nc                 S   s   i | ]	}|t jd qS r  )rU   rV   )r1  r  rl   rl   rm   
<dictcomp>  r  zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ABCcolorC1r  r  r   rl   )r   rN   r  	get_color)rf   propsrB  rg   kwdrk   rl   rl   rm   !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 s1J |jd	  }t	|tg d
 d S )N)r   r   r     r)   r   r  rE   testr   r   )r   r   r   )
r   rU   r   r   rN   r   r   r  rL   r   )rf   rg   rK   r.   ydatarl   rl   rm   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 )Nr$   r   r  )r   r   )r   r   PlotAccessor_common_kindsrN   getattr)rf   rg   r   rl   rl   rm   test_kind_both_ways  s   z&TestDataFramePlots.test_kind_both_waysc              	   C   s\   t td}tjjD ]!}d}tjt|d |j|d W d    n1 s&w   Y  q
d S )Nabcdno numeric data to plotr&   r  )	r   rX   r   r/  r0  rQ   rR   rM  rN   rf   rg   r   rh   rl   rl   rm   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 d    n1 s;w   Y  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 d    d S 1 suw   Y  d S )Nr   r)   r   rt   r   r   re  r4  r&   r  r   )r   rU   rV   r   r   r   rW   r  r   r/  r0  rQ   rR   rM  rN   r5  rl   rl   rm    test_partially_invalid_plot_data  s   "z3TestDataFramePlots.test_partially_invalid_plot_datac                 C   sV   t tjdd}d}tjt|d |jdd W d    d S 1 s$w   Y  d S )Nr)   r   z*invalid_plot_kind is not a valid plot kindr&   invalid_plot_kindr  )r   rU   rV   r   rQ   rR   r   rN   r   rl   rl   rm   test_invalid_kind  s
   "z$TestDataFramePlots.test_invalid_kindzx,y,lblr{   r|   rz   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    d S 1 s)w   Y  d S )Nr   r   r"   r   r,   r=   r?  x must be a label or positionr&   r$   r%   r   r   rQ   rR   r   rN   )rf   r$   r%   lblrg   rl   rl   rm   test_invalid_xy_args  s   	"z'TestDataFramePlots.test_invalid_xy_argsc                 C   sh   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    d S 1 s-w   Y  d S )Nr   r   r"   r   r,   r=   r?  z.label should be list-like and same length as yr&   rz   r{   r|   	bad_labelr;  r<  r   rl   rl   rm   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    d S 1 s(w   Y  d S )N)r   r"   r,   )r   r   r=   AABr   r:  r&   r#   )r   rX   rQ   rR   r   rN   r{  rl   rl   rm   test_invalid_xy_args_dup_cols  s   "z0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsr  bluer   r   r   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s+J | j| |d d S )Nr   r   r"   r   r,   r=   r?  rz   r;  )r$   r%   r   r%  
linecolors)r   r   rN   rd   r   r  r   )rf   r$   r%   r=  r  rg   rK   rl   rl   rm   test_y_listlike  s
   
z"TestDataFramePlots.test_y_listlikezx,y,colnamesc                 C   s0   t ddgddgd}||_t|j||d d S )Nr   r   r"   r   r   r#   )r   rG   r   rN   )rf   r$   r%   colnamesrg   rl   rl   rm   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.J |jjddd	d
}t|d j	j
dksCJ | j|ddd d S )Nr>  r  r?  rz   r{   r)   )r$   r%   gridsizer   T)r$   r%   r   r   r   rI   r   )r   rU   rV   r  r   rN   r   rd   rm  figurere   rO   )rf   rg   rK   re   rl   rl   rm   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.J |jjdddtj	d	}t|jdksBJ d S )
Nr>  r  r?  rz   r{   r|   )r$   r%   r|   r   )r$   r%   r|   reduce_C_function)
r   rU   rV   r  r   rN   r   rd   rm  stdr   rl   rl   rm   test_hexbin_with_c.  s   z%TestDataFramePlots.test_hexbin_with_czkwargs, expectedBuGnr  r  r  YlGnc                 C   sj   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|}|jd jj	|ks3J d S )	Nr>  r  r?  rz   r{   r#   r   rl   )
r   rU   rV   r  r   rN   r   rm  r  r   )rf   kwargsrB  rg   rK   rl   rl   rm   test_hexbin_cmap=  s   	z#TestDataFramePlots.test_hexbin_cmapc                 C   sl  t tjddg dg dd}d}tjt|d |j  W d    n1 s)w   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sbJ |D ]
}| 
|j|j qdt||jD ]\}}| |ksJ qug d}g d}t	|jjdd||d}t|t|jksJ |D ]}| 
|j| | j|j|d qd S )Nr,   r"   )XYZr   r   r   r  erF   z/pie requires either y column or 'subplots=True'r&   rX  r   r   Tr   ry   )r%  gr   r   m)r   r   r  r  r  )r   rU   rV   rW   rQ   rR   r   rN   r   r   r   textsr+   rd   rG   r_   r  r  r#  )rf   rg   rh   rK   re   ylabelr  
color_argsrl   rl   rm   test_pie_dfP  sJ   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r0ddi}td  |jjdd|dd| W d    n1 sMw   Y  g d}t|D ]9\}}t|}	d	|	|< d
d |jD }
|
|	kstJ dd |  D }|d | ||d d   }||ksJ qZd S )Nr   r   )ncolsz3.3	normalizeT)r   rK   r  )0123r  c                 S   r-  rl   rf  r  rl   rl   rm   r3    r4  z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   r-  rl   rf  r  rl   rl   rm   r3    r4  r   rl   )r  r   rU   rV   rW   r`   r   ilocrc   r   __version__rL   assert_produces_warningrN   r   r  rX   r^  r  r  )rf   r  rg   rh  rj   re   rU  base_expectedrK   rB  rk   result_labelsexpected_labelsrl   rl   rm   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
 qt	t
 |jt jdd W d    n1 sw   Y  tdgd dgd d}t	t |j|d W d    d S 1 s	w   Y  d S )NrV  r   r   r#   皙?皙?T)yerrr   r   xerrrq  )rq  r   r   )rq  r   r   rB   )rq  rs  r   r   r%   rq  )r   rV  )rq  u   誤差r$   )r%   r$   rq  r  zzz)rU   r   r   onesr   rN   _check_has_errorbarscopyrL   external_error_raisedr   rV   r   rM  )rf   r  rg   d_errdf_errrK   rq  s_dfrl   rl   rm   test_errorbar_plot  s@   $z%TestDataFramePlots.test_errorbar_plot)rT   rB   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 )NrV  r   r   r#   ro  rp  r$   rq  r   r   rr  )rq  rs  r   )rs  rq  r   T)r   rq  rs  r   r   r   )rU   r   r   rv  r   rN   rw  )rf   r   r  rg   rz  r{  rK   re   rl   rl   rm   "test_errorbar_plot_different_kinds  s.   z5TestDataFramePlots.test_errorbar_plot_different_kindszIterator is consumed)r   rR   c                 C   sz   t  / tdtdddd}t|}t|jtdt	|d}| j
|ddd W d    d S 1 s6w   Y  d S )	NrV  r   r   r#   r  rt  r   rr  )warningscatch_warningsrU   r   r   r   rN   	itertoolsr  rd   rw  )rf   r  rg   rK   rl   rl   rm   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   rt  r   rr  r   )r%   rq  )r   rU   absrV   r   r   rN   rw  )rf   rg   r{  rK   rl   rl   rm   '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	 q"t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	 qd S )Nr)   r"   r   r   r   rT   rB   r~  rr  1/1/2000M)rR  rQ  T)inplacerV  r   r#   ro  rp  )r$   r   rt  r   )r   rU   r  rV   r   r   rN   rw  r
   r   r   rv  )
rf   rg   r{  kindsr   rK   ixr  rz  errrl   rl   rm   "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 )NrV  r   r   r#   ro  rp  r  z1/1/2001r  )rQ  r*   r~  r   rr  r%   r$   )r%   rq  r   r   T)r   r   rq  r   )rU   r   rv  r
   r   r   rN   rw  )	rf   r   r  rz  r  r  tdf_errrK   re   rl   rl   rm   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 sgw   Y  t  d S )Nr   r"   r   r,   r  )rq  rs  r   r   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)r&   rt  )rU   rV   r  rW   r   r   reshapeTrN   rm  	get_pathsverticesr   rL   r  rK  rL  rQ   rR   r   r   )rf   r  rg   rK   yerr_0_0expected_0_0rh   rl   rl   rm   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s3J t||j t|jdksCJ W d    d S 1 sNw   Y  d S )Nr)   r"   r*   T)tabler   r   )r   rU   rV   rW   rX   rY   rZ   r   rN   rL   rj  rd   tablesr   r  r  r   rl   rl   rm   
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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,   r   r$   r%   r   r#   r   rr  )r$   r%   rs  r   )r$   r%   rq  )r$   r%   rs  rq  has_xerrc                    sx   g } fddj D d }|D ]}t|r|| q|| qfdd|D }j|t|gt| d d S )Nc                    s   g | ]}t | d r|jqS )F)r1  r   r  has_errrl   rm   r3  i  s    z[TestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_color.<locals>.<listcomp>r   c                    s   g | ]	}| j v r|qS rl   )rm  r  rK   rl   rm   r3  o  r  rH  )
containersr   extendappendr  rU   r   rd   )r  rB  r  r   errsel	err_linesrK   rf   r  rm   _check_errorbar_colorg  s   
zGTestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_colorr)   rZ  r   r   r   r  r[  r  )r$   r%   rs  rq  r   r  has_yerrrF  )r$   r%   rq  r%  )r  )r   rU   r  rV   r   r`   r   rN   r   rw  r  )rf   rg   r{  r  rl   r  rm   test_errorbar_scatterU  s2   "z(TestDataFramePlots.test_errorbar_scatterc                 C   s\   t g ddd}tjttfdd |jdddd	d
 W d    d S 1 s'w   Y  d S )Nr   r   r  z'unknown' is not ar&   r   r   unknownr   )r$   r%   r  r   )r   rQ   rR   r   KeyErrorrN   r   rl   rl   rm   test_scatter_unknown_colormap  s   "z0TestDataFramePlots.test_scatter_unknown_colormapc                    st  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 q)||  || t  t \}}t	t
 |jd
|d
d}W d    n1 sbw   Y  || t  t \}}|D ]}|jddd	|d qv||  |D ](}t|jdksJ  j| d
d  j| d
d  j|jd
dd
d qt  d S )Nr   rr  r   r   r"   r   r,   r=   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   Tr5   r   r   Fr7   r"   )rd   r   r[   r  r]   re   rK   rf   rl   rm   _check  s   z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr   r   r3   T)r$   r%   r3   rK   sharex)r   rK   r  r$   r%   r3   rK   r   r5   r7   )r  r  r   _generate_4_axes_via_gridspecr   rN   tight_layoutr  rL   rj  UserWarningrd   r   r[   r  r]   rf   rc   gsre   rg   r  rK   rl   r  rm   test_sharex_and_ax  s@   

	

z%TestDataFramePlots.test_sharex_and_axc                    sp  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
 q$||  || t  t \}}t	t
 |jd	|d	d}W d    n1 s]w   Y  ||  || t  t \}}|D ]}|jddd|d qx||  |D ](}t|jdksJ  j| d	d  j| d	d  j|jd	dd	d qd 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 q*| d | d fD ]} j| dd q>d S )	Nr   Tr5   r7   r   r   r"   F)rd   r   r[   r]   r  r  r  rl   rm   r    s   z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr   r   r3   T)r$   r%   r3   rK   r  )r   rK   r  r  r   r5   r7   )r  r  r  r   rN   r  r  rL   r   rj  r  rd   r   r[   r  r]   r  rl   r  rm   test_sharey_and_ax  s@   
	


z%TestDataFramePlots.test_sharey_and_axc              	   C   s   i }t jjD ]H}i }|dv r0ttjjddtjjddtdtjjdd d}ddd}n|dkr;t	 
 }nt	 }t|jdd	|i|||< qt  t  d
}| D ]}tjt|d |j W d   n1 stw   Y  q]dS )z3Check that every plot type gets properly collected.)r   r   r   r>  r  r?  rz   r{   r#   r   r   z)weakly-referenced object no longer existsr&   Nrl   )r   r/  
_all_kindsr   rU   rV   r  r   rL   rM   r  weakrefproxyrN   r   gccollectr  rQ   rR   ReferenceErrorr   )rf   resultsr   argsrg   rh   result_valuerl   rl   rm   test_memory_leak  s0    z#TestDataFramePlots.test_memory_leakc           
         sz  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\}}|j|d}t|jdksPJ |j|d}t|jdks_J ||fD ]}| j| dd | j| dd | j|jdddd qct  q=| | fD ]E\}}|jd||gd}t|jdksJ t|jdksJ |D ]}| j| dd | j| dd | j|jdddd qt  q| \}}tt |jd||gddd}W d    n1 sw   Y  t|d jdksJ t|d jdksJ ||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 d    n	1 sww   Y  t|d jdksJ t|d jdksJ | j|d  dd | j|d  dd ||fD ]}| j| dd | j|jdddd qt   fdd}	|	 }t	tjdd|j
tdd	}|jd|d}|D ]*}t|jdksJ | j| dd | j| dd | j|jdddd qt  |	 }tt |jd|ddd}W d    n	1 s8w   Y  |D ]}t|jdksKJ q?|d |d fD ]}| j| dd qU|d |d fD ]}| j| dd qj|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 qt  d S )Nr   )gridspecr)   r  )rR  r*   r   ABr   c                     sL     dd}  }|| d dd d f }|| dd d f }||fS )Nr"   r   r   GridSpecrN  r  r  rj   r   r   r  rc   rl   rm   _get_vertical_grid  
   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  rl   rm   _get_horizontal_grid%  r  zJTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_horizontal_gridr  r   Tr5   r7   rJ   )r   rK   r  r  Fc                     st     dd}  }|| d dd df }|| d ddf }|| dd df }|| d }||||fS )Nr"   r   r   r  )r  rj   r   r   ax3ax4r  rl   rm   _get_boxed_gridb  s   zETestDataFramePlots.test_df_gridspec_patterns.<locals>._get_boxed_gridr   ABCDr"   )r  r  r  r  r   rU   rV   r   r
   r   r+   rX   rN   rd   r   r[   r  r]   rL   r   rj  r  )
rf   tsrg   r  r  r   r   rK   re   r  rl   r  rm   test_df_gridspec_patterns  s   



	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   r#   )kws)_check_grid_settingsr   r   r/  _dataframe_kindsr  rl   rl   rm   test_df_grid_settings  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)ro  ro  ro  ro  r)   r  rE   r  )r   r   r   r   r   r   r   hsv)r   rK   r$   r%   r   r  r   )make_axes_locatabler  z5%g?)r  pad)
inset_axesz30%r   r"   )r'  r  r  )rc   r   add_axesr   rU   rV   rW   rN   r   r   rN  mpl_toolkits.axes_grid1r  append_axes%mpl_toolkits.axes_grid1.inset_locatorr  )	rf   rj   rK   rg   r  dividercaxr  iaxrl   rl   rm   test_plain_axes  s$   

z"TestDataFramePlots.test_plain_axesmethod)rT   r)  rB   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|di |}| j|j	|d d S )Nr  r   r  r   c                 S   s
   | j  S ri  )r{   r  rg   rl   rl   rm   <lambda>     
 zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>r|   c                 S   s
   | j d S )Ng?r  r  rl   rl   rm   r    r  )r}   r>  r|   r}   T)r  r  
mark_right)re   r  rl   )
r   rU   rV   r   rX   assignr1  rN   rP   r  )rf   r  rg   r  r   rU  rK   rl   rl   rm   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s5J |d dks=J |d dksEJ d S )N)r"   r   r"   )r>  r      )MondayTuesday	Wednesday)salesvisitsdayr  r   r   r"   c                 S   r-  rl   rf  r1  trl   rl   rm   r3    r4  zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>r  r   r  r   r  r   )r   rN   r   set_xlimr]   r  r_   
get_xticks)rf   rg   rK   xticklabelslabels_positionrl   rl   rm   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s=J |d dksEJ |d dksMJ |d dksUJ d S )Nr+  i  r   r   r   rz   r{   rF   r   c                 S   r-  rl   rf  r  rl   rl   rm   r3    r4  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   from_productr   rU   rV   r   rN   r  r]   r  r_   r  )rf   r+   rg   rK   r  r  rl   rl   rm   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 sJ |d dks$J d S )Nr   r   r   r*   r  r   )r   rN   r   )rf   r   rg   rK   xlimsrl   rl   rm   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sHJ dd | D }||ksWJ d S )N)k1k2k3k4)i  r     r   )i  ix  r   i  )r  r  i@  i  )r   r"   r   r"   )s1s2s3r  r*   )r   r  r  F)rK   r   r  T)rK   r  r   r   r"   c                 S   r-  rl   rf  r  rl   rl   rm   r3    r4  zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)rc   r   r   rN   rB   r   r]   )rf   rj   rK   indexesrg   r  r  rl   rl   rm   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sJ | d }t| dks*J t| dks4J d S )Nfoo)rG   ru   r   r   )r   intemptyrN   rd   r   r   r  )rf   rg   rK   rT   rl   rl   rm   test_plot_no_rows  s   
z$TestDataFramePlots.test_plot_no_rowsc                 C   sH   t g d}tjtdd |  W d    d S 1 sw   Y  d S )Nr   r4  r&   )r   rQ   rR   rM  rN   r   rl   rl   rm   test_plot_no_numeric_data  s   
"z,TestDataFramePlots.test_plot_no_numeric_data)rT   rB   r)  r   r  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s0J dd	gd
dgdgf}t||D ]\}}|dkrN| j||d |dkr]t|jt|ks]J q?d S )Nr)   r   rZ  )r   r[  )r   r  r   r   r"   r   r[  r   r  r   r   r  rT   )rU   r   r   rN   rd   r_   r  r   )rf   r   r  rg   re   rm  rK   r  rl   rl   rm   test_group_subplot  s"   z%TestDataFramePlots.test_group_subplotc                 C   sR   t td}d}tjt|d |jdgd W d    d S 1 s"w   Y  d S )Nr   z!An iterable subplots for a Seriesr&   r   rH   )r   r`   rQ   rR   NotImplementedErrorrN   )rf   serrh   rl   rl   rm   (test_group_subplot_series_notimplemented+  s
   "z;TestDataFramePlots.test_group_subplot_series_notimplementedc                 C   sb   t tdtddgd}d}tjt|d |jdgd W d    d S 1 s*w   Y  d S )Nr   r
  )r   r   r   z6An iterable subplots for a DataFrame with a MultiIndexr&   rH   )	r   rU   eyer   ra   rQ   rR   r  rN   r   rl   rl   rm   ,test_group_subplot_multiindex_notimplemented1  s
   "z?TestDataFramePlots.test_group_subplot_multiindex_notimplementedc                 C   s\   t tdddgd}d}tjt|d |jdgd W d    d S 1 s'w   Y  d S )Nr   r   r   z4An iterable subplots for a DataFrame with non-uniquer&   r  rH   )r   rU   r  rQ   rR   r  rN   r   rl   rl   rm   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  )r  r  c                 C   s^   t dt dd}t|}tjt|d |j|d W d    d S 1 s(w   Y  d S )Nr)   r  r&   rH   rU   r   r   rQ   rR   r   rN   )rf   r   expected_msgr  rg   rl   rl   rm   test_group_subplot_bad_input=  s
   "z/TestDataFramePlots.test_group_subplot_bad_inputc                 C   s`   t dt dd}t|}tjtdd |jdgd W d    d S 1 s)w   Y  d S )Nr)   r  z Column label\(s\) \['bad_name'\]r&   )r   bad_namerH   r  rf   r  rg   rl   rl   rm   &test_group_subplot_invalid_column_nameP  s
   "z9TestDataFramePlots.test_group_subplot_invalid_column_namec                 C   sj   t dt dt dd}t|}tjtdd |jddgd W d    d S 1 s.w   Y  d S )Nr)   r   zshould be in only one subplotr&   r  )r   r   rH   r  r  rl   rl   rm   $test_group_subplot_duplicated_columnW  s
   "z7TestDataFramePlots.test_group_subplot_duplicated_column)r  r   r   c                 C   sb   t dt dd}t|}tjtdd |jdg|d W d    d S 1 s*w   Y  d S )Nr)   r  z1When subplots is an iterable, kind must be one ofr&   r
  r  )rf   r   r  rg   rl   rl   rm   test_group_subplot_invalid_kind^  s   "z2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr  new)oldr  r  )Nr  r  )Nr  r   r  )rT   r   rB   c                 C   s   t ddgddggddgd}||j_|j|d}| |ks J | dks(J |j|||d	}| t|ks:J | t|ksDJ d S )
Nr   r   r,   Type AType Br   r  r  )r   r_  xlabel)r   r+   r   rN   
get_xlabelr  str)rf   r   
index_name	old_label	new_labelrg   rK   rl   rl   rm   (test_xlabel_ylabel_dataframe_single_plotg  s   z;TestDataFramePlots.test_xlabel_ylabel_dataframe_single_plotzxlabel, ylabel))NN)X LabelN)NY Label)r(  r)  r   r   c                 C   st   d}d}t ddgddgg||gd}|j|||||d}| |d u r%|n|ks*J | |d u r3|n|ks8J d S )Nr  r   r   r   r,   r   )r   r$   r%   r!  r_  )r   rN   r"  r  )rf   r   r!  r_  xcolycolrg   rK   rl   rl   rm   '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 ]!}|j r2| dks J | dks(J | d dks2J qd S )Nr   rX  )r   r/   r   )r  r_  r0   r-   )	r   rN   rN  re   r   get_visibler  r  
get_yticks)rf   r  ax_dfrK   rl   rl   rm   test_secondary_y  s   


z#TestDataFramePlots.test_secondary_y)NNNN)o__name__
__module____qualname__rQ   markxfailslowrn   r   r   r   r   r   r   parametrizer   r   r   r   r   r   r   r   r  r  r  r  r!  r&  r+  r=  rC  rJ  rN  rU  rZ  r\  rz  r|  r  r  r  r  r  r  r  r  tdskip_if_no_scipyr  r  r  rU   rv  r  r  r  r  r  r  r*  r.  r2  r6  r7  r9  r>  r@  rB  rJ  rL  rO  rR  rV  ra  rn  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  rl   rl   rl   rm   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   r  )r   r   r
  rI   )r  matplotlib.gridspecr  r  r  r  subplot)r  r  rc   r  ax_tlax_llax_trax_lrrl   rl   rm   r    s   r  )&__doc__r   r   r  r  rK  rY   r  r  numpyrU   rQ   pandas.util._test_decoratorsutil_test_decoratorsr8  pandas.core.dtypes.apir   pandasr   r   r   r   r   r	   r
   r   pandas._testing_testingrL   pandas.tests.plotting.commonr   r   pandas.io.formats.printingr   skip_if_no_mplr   r  rl   rl   rl   rm   <module>   sJ    $	                 