o
    5c`M                    @   s  d Z ddlmZmZ ddlZddlZddlZddlZddlZddl	Z	ddl
m  mZ ddlmZ ddlZddlmZmZmZmZmZmZ ddlmZ ddlmZmZ ddlmZ ddl m!Z! zddl"m#Z# W n e$yt   d	d
 Z#Y nw ej%G dd deZ&dd Z'dS )z Test cases for DataFrame.plot     )datedatetimeN)is_list_like)	DataFrame
MultiIndexPeriodIndexSeriesbdate_range
date_range)TestPlotBase_check_plot_workspprint_thing)mpl_ge_3_6_0c                   C   s   dS )NT r   r   r   \/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/plotting/frame/test_frame.py<lambda>'   s    r   c                   @   sR  e Zd Zejje ddejjdd Zdd Z	ejjdd Z
d	d
 Zdd Zdd Zdd Zejdddgdd Zejd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/e0j1ddde Z2e0j1dfdg Z3dhdi Z4ejdjdke5j6dldm dke5j6dndm gdodp Z7	q	q	q	qddrdsZ8dtdu Z9dvdw Z:dxdy Z;dzd{ Z<ejd|g d}d~d Z=dd Z>e0j1dd Z?dd Z@dd ZAdd ZBejdddgddfdgddgddgfgdd ZCdd ZDejdddgdfgdd ZEejdddgdgdgfdddgddgddgfdddgddgddgfgdd ZFejdddddgfddddgfgdd ZGdd ZHdd ZIejdi dfddidfddidfgdd ZJdd ZKdd ZLejjdd ZMejjejd&g ddd ZNejjdeOddd ZPdd ZQejjddĄ ZRejd&g dddƄ ZSddȄ ZTddʄ ZUdd̄ ZVdd΄ ZWddЄ ZXdd҄ ZYe0j1ddԄ ZZddք Z[dd؄ Z\ddڄ Z]ejdg dܢddބ Z^dd Z_dd Z`ejd&d'd(gdd Zadd Zbdd Zcdd Zde0j1ejd&ddd Zedd Zfdd Zgdd Zhejdg ddd Zidd Zjdd Zkejd&ddd Zlejdd ddddqdddgfgejd&g ddd Zmejdg d	ejd&d
dgdd Znejdddd Zodd ZpdqS (  TestDataFramePlotszApi changed)reasonc           
      C   s  t  }t|jdd t|jddd}| j|ddd t|jdddd	}| j|dd
d t|jdddd}| j|dd | j|ddd tddgddgd}d}tjt	|d |jj
dd W 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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d0tjdi}t|jjdd1}| j|dd2d t|jjdd3d4}| j|dd2d | j \}}|jjd|d5}t|dksJ |j}	|	|d u sJ d S )6NF)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"   sort_columns)r      r,   )yticks)xticks)id   )ylimxlimblah)r   r   title)r   r8   r%   r   visibleminor)r8   ))   αr   )r>   r   )   βr    )r?   r%   )   γr   )r@   r1   )   δ   )rA      i0i1)names)baru   Δ)rG   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randintrG   pltr   lenaxes)
selfdfrj   msgrP   tuplesr.   rL   figresultr   r   r   	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   r1   rC   r1   r%   r    dtypez%Y)formati8T)ry   utcABCDEr}   r~   r&   r   r   r   )
r   rZ   arraynanobjectpdto_datetimeviewr   rS   )rk   datesrl   r   r   r   test_nullable_int_plot   s    
z)TestDataFramePlots.test_nullable_int_plotc                 C   s   t jg ddd}t|}t|jj t|jj t|jj t|jj t	||d}t|jj t|jj t|jj t|jjdd t|jj
ddd t|jjddd d S )Nr   r    r%   r   UInt32rw   r&   r(   r(   r'   )r   r   r   r   rS   rY   rG   histpier   scatterhexbin)rk   arrsrl   r   r   r   test_integer_array_plot   s   z*TestDataFramePlots.test_integer_array_plotc                 C   s6   t g dg dd}| }t| dksJ d S )Nr'   r(   zr   r    r%   r}   r~   r   )r   rS   ri   	get_linesrk   rl   rP   r   r   r   test_nonnumeric_exclude   s   z*TestDataFramePlots.test_nonnumeric_excludec                 C   s>   t tjddg dd}|jddd}| |j d d S )Nr,   r%   abcrL   r   r   r&   )r   rZ   r[   randnrS   _check_text_labelsra   rc   r   r   r   r   test_implicit_label   s   z&TestDataFramePlots.test_implicit_labelc                 C   sD   t tjddddgd}d|j_|jddd |jjdks J d S )Nr    r   r   r   NAMELABEL)r(   label)r   rZ   r[   r   r.   namerS   rk   rl   r   r   r   test_donot_overwrite_index_name   s   z2TestDataFramePlots.test_donot_overwrite_index_namec                 C   sj  t  }| |jddd|dd   | |jdd|d  | |jdd|j  | |jddd|dj  | |jdd|d  | |jdd|j  tdt|j	d |_	| |jddd|dd   | |jdd|d  | |jdd|d   |jddd	d
d}| 
|jd	 | j|dddd d S )Nr   r   r&   r}   r~   r'   r   r    Test)   rJ   )r'   r(   r8   figsizerN   )g      0@g       @)r   r   r   )rQ   rR   _check_datarS   	set_indexr~   rZ   arangeri   rL   r   r8   rT   r   r   r   r   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   r4   r-   logyyaxis)logxra   loglog)ra   r   )r   rZ   r   rS   _check_ax_scales
get_yscale
get_xscale)rk   	input_logexpected_logrl   rP   r   r   r   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   r4   r-   z9Boolean, None and 'sym' are valid options, 'sm' is given.r)   smr   )r   rZ   r   rV   rW   
ValueErrorrS   )rk   r   rl   rm   r   r   r   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   )rQ   rR   rS   r   
isinstance	get_xdatar   rU   closeplottingplot_paramsuse)rk   rl   rP   linesr   r   r   test_xcompat  s<   

zTestDataFramePlots.test_xcompatc                 C   sT   t tjddttdddtdddddgd}|  | jjd	d
 t	
  d S )N   r      r      r   r   r.   rL   r   r   )r   rZ   r[   r\   r	   r   rS   rh   axhlinerQ   r   r   r   r   r   test_period_compat(  s   z%TestDataFramePlots.test_period_compatc                 C   s   t dtditdddtjd}| }| d }| }t|d d df |d d df tjdd}tj	||j
d	d
 t  tjtdddtjd|_| }| d }| }t|d d df |d d df tjdd}t	||j
 d S )Nr(   r4   c   r   )r.   rx   r   r   )rx   r   F)check_index_typerw   )r   rZ   r   int64rS   r   
get_xydatar   rQ   assert_series_equalr(   r   r   Indexfloat64r.   )rk   rl   rP   r   rsr   r   r   test_unsorted_index5  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   rS   get_xlimr   rZ   nanminget_datananmaxr   )rk   rl   rP   xminxmaxr   r   r   r   test_unsorted_index_limsG  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 )
NrB   r   r'   r(   r   fourr   z+Log-y scales are not supported in area plotr)   Tr   r   )r   rZ   r[   r\   r]   r^   r_   rV   rW   r   rS   areark   rl   rm   r   r   r   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   )rZ   zerosri   r   rd   rQ   assert_numpy_array_equal)rk   normal_linesstacked_linesbasenlslsyr   r   r   _compare_stacked_y_coodl  s   z*TestDataFramePlots._compare_stacked_y_coodkindrY   r   c           
   	   C   s  t d ttjddg dd}| }ttjdtjdtjd tjd d}ttjddttj	d d g dd}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 W d    d S 1 sw   Y  d S )N*   rB   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   )rQ   
RNGContextr   rZ   r[   r\   r   r]   r^   r_   r   rS   r   r   rV   rW   r   r   r.   )
rk   r   rl   neg_dfsep_dfmixed_dfax1ax2rm   df2r   r   r   test_line_area_stackeds  sD   

	  "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   rw   )r%   r    r   )FFTF)FTFF)r   r    r   r%   )r%   r   r    r   Tr   F)rZ   r   r   rQ   makeDateIndexr   rS   r   	get_ydatar   r   r   deletedatamaskr   )rk   values1values2rl   tdfdrP   masked1masked2exp	expected1	expected2r   r   r   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 )NrB   r%   r   r   r   r   T)secondary_y)r  r   r9   r   left_axright_ax)
r   rZ   r[   r\   rS   r   r   r   rT   hasattr)rk   rl   rP   r   r   r   rj   r   r   r   test_line_lim  s*   z TestDataFramePlots.test_line_limFzX2020-12-01 this has been failing periodically on the ymin==0 assertion for a week or so.)strictr   r   Tc           
      C   s   t tjdd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 )NrB   r   r   r   r   r   r   )r   rZ   r[   r\   r   rS   r   r   get_ylimr   r   )
rk   r   rl   r   rP   r   r   yminymaxr   r   r   r   test_area_lim  s   z TestDataFramePlots.test_area_limc                 C   s   t tjddddgd}| jjdddd\}\}}|j|d	d
 |j|d	d
 | |||s3J | |||s>J d S )Nr   r    r'   r(   r   r   T)shareyr   )rP   r   )	r   rZ   r[   r\   rh   r   rS   
get_y_axisjoined)rk   rl   ro   r  r  r   r   r   test_area_sharey_dont_overwrite  s   z2TestDataFramePlots.test_area_sharey_dont_overwritec                 C   s   t tjdd}|jjdd}|jD ]
}| dksJ q|jjddd}|jD ]
}| dks3J q)|jjddd}| j|ddd |D ]}|jD ]
}| dksUJ qKqFd S )	Nr1   r    )	linewidthT)r   r%  )r%  r   )r1   r   r   )	r   rZ   r[   r   rS   rG   patchesget_linewidthrT   )rk   rl   rP   rrj   r   r   r   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 )Nr1   g?)widthT)r   r*  )r*  r   )r   rZ   r[   r   rS   rG   r&  	get_widthri   rL   barh
get_height)rk   rl   r*  rP   r(  rj   r   r   r   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 )Nr1   Fr   )r   bottomc                 S      g | ]}|  qS r   get_y.0pr   r   r   
<listcomp>@      z;TestDataFramePlots.test_bar_bottom_left.<locals>.<listcomp>   T)r   c                 S   r0  r   r1  r3  r   r   r   r6  D  r7  )r   r   r   r   r   )r   leftc                 S   r0  r   get_xr3  r   r   r   r6  H  r7  rv   c                 S   r0  r   r>  r3  r   r   r   r6  L  r7  r   )r   r/  c                 S   r0  r   r1  r3  r   r   r   r6  Q  r7  )r   r=  c                 S   r0  r   r>  r3  r   r   r   r6  V  r7  )	r   rZ   r[   r\   rS   rG   r&  r,  r   )rk   rl   rP   rp   rj   r   r   r   test_bar_bottom_left=  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,      )r1   r,   rA  r   r}   r~   r   )	r,   r   rA  r1   r,   rA  r   r    r%   c                 S   r0  r   r-  r3  r   r   r   r6  ]  r7  z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>Tr   c                 S   r0  r   rC  r3  r   r   r   r6  a  r7  c                 S   r0  r   r1  r3  r   r   r   r6  d  r7  )	r   r   r         $@r   g      4@g      .@rD  g      D@)r   rZ   r   rS   rG   r&  )rk   rl   rP   expectedrp   r   r   r   test_bar_nanY  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 )NrB   r1   ABCDEFabcder   )r   r   r    r%   r   r1   )g      g      @r   g      пr   g@Tr   g      @)r   rZ   r[   r   r   r   r]   CategoricalIndexrS   rG   ra   get_ticklocsrQ   r   r   r   r&  r?  )rk   df1r  rl   rP   ticksr   r   r   test_bar_categoricalh  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 )NrB   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   rN   r   )r   rZ   r[   r   r]   r^   r_   r   rS   r   reescaperV   rW   	TypeErrorrT   )rk   rl   rm   rj   r   r   r   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   rZ   r[   r   r
   timerV   rW   rP  rS   r   r   r   r   &test_raise_error_on_datetime_time_data  s   "z9TestDataFramePlots.test_raise_error_on_datetime_time_datac                 C   s`   t tdddddd}tjddt|}t||d}t|jj	dd	d
 t|jj	ddd
 d S )Ni  r      W)rS  rU  rT  r   )r   valsr   r[  r&   )
r
   r   rZ   r[   normalri   r   r   rS   r   )rk   r   r[  rl   r   r   r   test_scatterplot_datetime_data  s
   z1TestDataFramePlots.test_scatterplot_datetime_datac                 C   sx   t g dg dd}t|jjddd t|jjddd t g dg d	d}t|jjddd t|jjddd d S )
NrB  r    r%   r   r  r   r   r&   r   r   r   )r   r   rS   r   r   r   r   r   test_scatterplot_object_data  s   z/TestDataFramePlots.test_scatterplot_object_dataordered
categories)setosa
versicolor	virginica)rc  rd  rb  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   )rb  rb  rd  rd  rc  )r`  ra  speciesr   r   r'   r(   r   )      ?g      ?g      @r   c                 S   r0  r   get_text)r4  ir   r   r   r6    r7  zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s    | ]	\}}||kV  qd S Nr   )r4  rk  jr   r   r   	<genexpr>  s    zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   r   CategoricalrS   r   collectionscolorbarrZ   r   	get_ticksrQ   r   _boundariesrP   get_ymajorticklabelsallrd   )rk   r`  ra  rl   rP   colorbar_collectionrq  expected_ticksresult_ticksexpected_boundariesresult_boundariesexpected_yticklabelsresult_yticklabelsr   r   r   %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   ro  r   rS   r   rk   r'   r(   rl   r   r   r   'test_plot_scatter_with_categorical_data  s   z:TestDataFramePlots.test_plot_scatter_with_categorical_datac           
      C   s  ddl m} ttjjddddttjd d g dd}|j	j
d	d
dd|j	j
ddddg}|D ])}|jd jjdks>J | rO|jd jj dksNJ q1|jd jjdksZJ q1d}|j	j
d	d
d|d}|jd jj|ksrJ |j	j
d	d
ddd}|jd jd u sJ |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   )mpl_ge_3_4_0r4   )rB   r   )lowhighsizerB   r   r   r'   r(   r   rg  r   r    Greys	cubehelix)r'   r(   r   colormapF)r'   r(   r   rq  redr(  
facecolorsr%   r   r   )r   r   r   r   )r   r   r   r   r}   r~   r   r   spring)r'   r(   r   cmap)"pandas.plotting._matplotlib.compatr  r   rZ   r[   rg   r]   r^   r_   rS   r   rp  r  r   rq  rP   
get_ylabel_label_check_colorsr   rQ   r   get_facecolor)
rk   r  rl   rj   rP   cmred_rgba
green_rgba
rgba_arrayfloat_arrayr   r   r   test_plot_scatter_with_c  s8   $z+TestDataFramePlots.test_plot_scatter_with_cc                 C   sP   t tjdd g dd}|jjdddd}tj|d j|jd	 	 d
 d S )Nr,   r%   r4   r   r   r   r   r   )r'   r(   r   r   )right)
r   rZ   r[   rS   r   rQ   r   valuesrp  	get_sizesr   r   r   r   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  r4   r   r   r   r   r   )r'   r(   r   norm)

matplotlibr   rZ   r[   colorsLogNormrS   r   rp  r  )rk   mplrl   r  rP   r   r   r   test_plot_scatter_with_norm  s
   
z.TestDataFramePlots.test_plot_scatter_with_normc                 C   s   dd l }ttjdd 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  r4   r   r   r   r   r   rg  )r  r   rZ   r[   rS   r   rp  r  r   minmaxr  	Normalize)rk   r  rl   rP   	plot_normcolor_min_maxdefault_normvaluer   r   r   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 )NrB   r   onetwothreer   r   FlegendTr   r   r,      r   r   r  Z   r#   #   )rotfontsizer$   
xlabelsize
ylabelsize)yrot7      )r  r  r  )r   rZ   r[   r   r]   r^   r_   r   rS   rG   re   rU   r,  r   r   r   r   test_plot_bar0  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 r   r   r4  r   r   r   r   r6  U  r7  z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>r   rC   (   r  r   r$   r  )r   rB   rC   )	positionsc                 S   r  r   r   r  r   r   r   r6  h  r7  )_get_numeric_datarL   r   rS   boxr   rb   rQ   r   ra   rJ  rZ   r   ri   r   r   rU   r   )	rk   hist_dfrl   seriesnumeric_colslabelsrP   rj   r  r   r   r   test_boxplotQ  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  r   r   r  r   r   r   r6  p  r7  z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>2   rJ   F)r  r  vertr   r$   r  r  rC   T)r   r   r  r   r%   )r   r%   r   r   r   )r%   r    rJ   )r  r  )r  rL   rS   r  rU   r   get_yticklabelsri   r   r   rT   r   rd   rZ   r   rQ   r   r   rJ  )	rk   r  rl   r  r  rP   rj   r   r  r   r   r   test_boxplot_verticalm  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 )NrB   r   r  r   z2return_type must be {None, 'axes', 'dict', 'both'}r)   
not_a_type)return_typedictrj   both)r   rZ   r[   r   r]   r^   r_   rV   rW   r   rS   r  _check_box_return_type)rk   rl   rm   rp   r   r   r   test_boxplot_return_type  s"   
z+TestDataFramePlots.test_boxplot_return_typec                 C   s   t tjdd}t|jdd}dd |jD }| j||d | j|dd	 |jdd
dd}| j|d
ddd t|jdddd}| j	|ddd |jdddd}| j
|dd d S )Nr4   r   kder   c                 S   r  r   r   r  r   r   r   r6    r7  z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>r  r   r#   rA  r1   )r   r  r  r  T)r   r   r   r   r   )r   r   r   r   r   )r   rZ   r[   r   r   rS   rL   _check_legend_labelsrU   rT   r   )rk   rl   rP   rE  rj   r   r   r   test_kde_df  s    zTestDataFramePlots.test_kde_dfc                 C   s0   t tjjdd}tj|jd< t|jdd d S )N)r4   r   r  r   r   r  r  )r   rZ   r[   uniformr   locr   rS   r   r   r   r   test_kde_missing_vals  s   z(TestDataFramePlots.test_kde_missing_valsc                    sV  ddl m  ttjdd}|d }t|jj}dd |j	D }| j
||d t|jjdddd	}| j|dd
d | j|dd |jjdd}| j|ddd t  |jjdddd} fdd| D }t|d  d t  |jjddd} fdd| D }t|d  d t  |jjdddd}| j|dddd d S )Nr   	Rectangler4   r   c                 S   r  r   r   r  r   r   r   r6    r7  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 r   r   r4  r'   r  r   r   r6        r   r   )r  r  c                    r  r   r  r  r  r   r   r6    r  r9  g      Y@r  rJ   
horizontal)r  r  orientationr  )matplotlib.patchesr  r   rZ   r[   r   r   rS   r   rL   r  rT   r   rU   rQ   r   get_childrenassert_almost_equalr-  )rk   rl   r  rP   rE  rj   rectsr   r  r   test_hist_df  s6   zTestDataFramePlots.test_hist_dfweights皙?r4   )shape)r4   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   r}   r~   r    r4   r   )r   r  r  c                 S   r0  r   rC  r4  patchr   r   r   r6    r7  z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |   qS )r  rC  r  r   r   r   r6    s    )rZ   r[   seedr   r  rd   r   r   rS   r&  rQ   r  )rk   r  rl   r  r  patch_height_with_weightsexpected_patch_heightr   r   r   test_hist_weights  s    z$TestDataFramePlots.test_hist_weightsNc           
      C   s   t dd |D }t dd |D }t dd |D }t dd |D }	|d u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   r0  r   r1  r3  r   r   r   r6    r7  z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   r0  r   rC  r3  r   r   r   r6     r7  c                 S   r0  r   r>  r3  r   r   r   r6    r7  c                 S   r0  r   )r+  r3  r   r   r   r6    r7  F)check_dtype)rZ   r   rQ   r   )
rk   r&  
expected_y
expected_h
expected_x
expected_wresult_yresult_heightresult_xresult_widthr   r   r   _check_box_coord  s   z#TestDataFramePlots._check_box_coordc                 C   s  t ttg dtg dttg dtg dttg dtg ddg dd}t tttjddd	d
dgtg dttdtjdd	d
dgtg dttddd	tjd
dgtg ddg dd}||fD ]}|jjdd}| j|jd d tg dtg dd | j|jdd tg dtg dd | j|jdd  tg dtg dd |jjddd}| j|jd d tg dtg dd | j|jdd tg dtg dd | j|jdd  tg dtg dd |jjdddd}| j|d jtg dtg dd | j|d jtg dtg dd | j|d jtg dtg dd |jjddd}| j|jd d tg dtg dd | j|jdd tg dtg dd | j|jdd  tg dtg dd |jjdddd}| j|jd d tg dtg dd | j|jdd tg dtg dd | j|jdd  tg dtg dd |jjddddd}| j|d jtg dtg dd | j|d jtg dtg dd | j|d jtg dtg dd qd S )Nrv   )r,   	   rJ   rC   rB   )rJ   rJ   rJ   rJ   rJ   )rB   rC   rJ   r  r,   rB  r   r   r    r%   r   r1   )r%   r,   r  rJ   rC   rB   )rJ   r%   rJ   rJ   rJ   rJ   )rB   rC   rJ   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   rZ   repeatr   r   rS   r   r  r&  )rk   	normal_dfnan_dfrl   rP   rj   r   r   r   test_hist_df_coord  s   	"""z%TestDataFramePlots.test_hist_df_coordc                 C   s(   t tjdd }t|jdd d S )Nr4   r   Tr  )r   rZ   r[   r   cumsumr   rS   r   r   r   r   test_plot_int_columns  s   z(TestDataFramePlots.test_plot_int_columnsc                 C   s   dd l m} | }ttjdd}dddddddg d	ddgfD ],}|  |d
 |j	|d}t
| d t| D ]\}}| || ksOJ qAq$d S )Nr   r4   r%   ^+o)r   r   r    r   r   )r  r  r  o   )style)matplotlib.pyplotpyplotgcfr   rZ   r[   r   clfadd_subplotrS   	enumerater   ri   
get_marker)rk   rh   ro   rl   markersrP   idxrY   r   r   r   test_style_by_column  s   

 z'TestDataFramePlots.test_style_by_columnc                 C   sP   t ddg}| }| d u sJ |jdd}|  d  dks&J d S )Nr   r    Tr  r    )r   rS   
get_legend	get_textsrj  )rk   r   rP   r   r   r   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  )rZ   r[   )r4  r  r   r   r   
<dictcomp>  r  zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ABCcolorC1r  r  r   r   )r   rS   r  	get_color)rk   propsrE  rl   kwdrp   r   r   r   !test_specified_props_kwd_plot_box  s   z4TestDataFramePlots.test_specified_props_kwd_plot_boxc                 C   s   t tg dtdddtdddtdddgdgd}| }|jd	  }|d	 |d k s1J |jd	  }t	|tg d
 d S )N)r   r   r     r,   r   r  rJ   testr   r   )r   r   r   )
r   rZ   r   r   rS   r   r   r	  rQ   r   )rk   rl   rP   r3   ydatar   r   r   test_unordered_ts  s    z$TestDataFramePlots.test_unordered_tsc                 C   sh   t dg di}tjjD ]}|j|d t|j|  qdD ]}|jdd|d t|j|dd qd S )Nr'   r   r  )r   r   )r   r   PlotAccessor_common_kindsrS   getattr)rk   rl   r   r   r   r   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   r]   r   r5  r6  rV   rW   rP  rS   rk   rl   r   rm   r   r   r   test_all_invalid_plot_data  s   z-TestDataFramePlots.test_all_invalid_plot_datac              
   C   sP  t dF ttjddtd}d|tj|jd dk< t	j
jD ]!}d}tjt|d	 |j|d
 W d    n1 s>w   Y  q"W d    n1 sNw   Y  t dF ttjddtd}d|tj|jd dk< tjtdd	 |jdd
 W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r,   r    rw   r   r   rh  r:  r)   r  r   )rQ   r   r   rZ   r[   r   r   r\   r  r   r5  r6  rV   rW   rP  rS   r;  r   r   r    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   rZ   r[   r   rV   rW   r   rS   r   r   r   r   test_invalid_kind  s
   "z$TestDataFramePlots.test_invalid_kindzx,y,lblr~   r   r}   r   r   r   c                 C   s`   t ddgddgddgd}tjtdd	 |j|||d
 W d    d S 1 s)w   Y  d S )Nr   r    r%   r   r1   rB   rB  x must be a label or positionr)   r'   r(   r   r   rV   rW   r   rS   )rk   r'   r(   lblrl   r   r   r   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   r1   rB   rB  z.label should be list-like and same length as yr)   r}   r~   r   	bad_labelrA  rB  r   r   r   r   test_bad_label  s
   "z!TestDataFramePlots.test_bad_labelzx,yr   c                 C   s^   t g dg dgtdd}tjtdd |j||d W d    d S 1 s(w   Y  d S )N)r   r%   r1   )r    r   rB   AABr   r@  r)   r&   )r   r]   rV   rW   r   rS   r~  r   r   r   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   r1   rB   rB  r}   rA  )r'   r(   r   r+  
linecolors)r   r   rS   ri   r   r  r   )rk   r'   r(   rC  r  rl   rP   r   r   r   test_y_listlike  s
   
z"TestDataFramePlots.test_y_listlikezx,y,colnamesc                 C   s0   t ddgddgd}||_t|j||d d S )Nr   r    r%   r   r   r&   )r   rL   r   rS   )rk   r'   r(   colnamesrl   r   r   r   test_xy_args_integer   s   z'TestDataFramePlots.test_xy_args_integerc                 C   s   t tjjddtjjddtdtjjdd d}|jjdddd}t|jdks.J |jjddd	d
}t|d j	j
dksCJ | j|ddd d S )NrA  r  rB  r}   r~   r,   )r'   r(   gridsizer   T)r'   r(   r   r   r    rN   r   )r   rZ   r[   r  r   rS   r   ri   rp  figurerj   rT   )rk   rl   rP   rj   r   r   r   test_hexbin_basic'  s   z$TestDataFramePlots.test_hexbin_basicc                 C   s   t tjjddtjjddtdtjjdd d}|jjdddd}t|jdks.J |jjdddtj	d	}t|jdksBJ d S )
NrA  r  rB  r}   r~   r   )r'   r(   r   r   )r'   r(   r   reduce_C_function)
r   rZ   r[   r  r   rS   r   ri   rp  stdr   r   r   r   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 )	NrA  r  rB  r}   r~   r&   r   r   )
r   rZ   r[   r  r   rS   r   rp  r  r   )rk   kwargsrE  rl   rP   r   r   r   test_hexbin_cmapK  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 )Nr1   r%   )XYZr   r   r   r  erK   z/pie requires either y column or 'subplots=True'r)   r^  r   r    Tr   r|   )r(  gr   r   m)r   r   r  r  r  )r   rZ   r[   r\   rV   rW   r   rS   r   r   r   textsr.   ri   rL   rd   r  r  r&  )rk   rl   rm   rP   rj   ylabelr  
color_argsr   r   r   test_pie_df^  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   rP   r  )0123r  c                 S   r0  r   ri  r  r   r   r   r6    r7  z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   r0  r   ri  r  r   r   r   r6    r7  r   r   )r  r   rZ   r[   r\   re   r   ilocrh   r   __version__rQ   assert_produces_warningrS   r   r  r]   rd  r  r  )rk   r  rl   rk  ro   rj   r[  base_expectedrP   rE  rp   result_labelsexpected_labelsr   r   r   test_pie_df_nan  s*   
z"TestDataFramePlots.test_pie_df_nanc                 C   s   t dt dddd}t|}t dd t dd d}t|}t|j|dd}| j|dd	d
 t|j|ddd}| j|dd	d
 t|j|dd}| j|dd	d
 t|d j||ddd}| j|d	d	d
 t|d jt dd d}| j|ddd
 t|jt dd d}| j|dd	d
 dD ]/}| }t dd ||< t|j|d}| j|dd	d
 t|jdd|d}| j|ddd
 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 )NrY  r   r   r&   皙?皙?T)yerrr   r    xerrrw  )rw  r   r   )rw  r   r   rG   )rw  ry  r   r   r(   rw  )r    rY  )rw  u   誤差r'   )r(   r'   rw  r  zzz)rZ   r   r   onesr   rS   _check_has_errorbarscopyrQ   external_error_raisedr   r[   r   rP  )rk   r  rl   d_errdf_errrP   rw  s_dfr   r   r   test_errorbar_plot  s@   $z%TestDataFramePlots.test_errorbar_plot)rY   rG   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 )NrY  r   r   r&   ru  rv  r'   rw  r   r    rx  )rw  ry  r   )ry  rw  r   T)r   rw  ry  r   r   r   )rZ   r   r   r|  r   rS   r}  )rk   r   r  rl   r  r  rP   rj   r   r   r   "test_errorbar_plot_different_kinds  s.   z5TestDataFramePlots.test_errorbar_plot_different_kindszIterator is consumed)r   rW   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 )	NrY  r   r   r&   r  rz  r    rx  )warningscatch_warningsrZ   r   r   r   rS   	itertoolsr  ri   r}  )rk   r  rl   rP   r   r   r   test_errorbar_plot_iterator  s   
"z.TestDataFramePlots.test_errorbar_plot_iteratorc                 C   sr   t ttjdd}t ttjdd}t|j|d}| j|ddd t|jddd}| j|ddd d S )Nr,   r    rz  r   rx  r   )r(   rw  )r   rZ   absr[   r   r   rS   r}  )rk   rl   r  rP   r   r   r   'test_errorbar_with_integer_column_names   s   z:TestDataFramePlots.test_errorbar_with_integer_column_namesc           
      C   s,  t ttjdd}t ttjddddgd}ddg}|D ]}t|j||d}| j|ddd	 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   rY   rG   r  rx  1/1/2000M)rU  rT  T)inplacerY  r   r&   ru  rv  )r'   r   rz  r   )r   rZ   r  r[   r   r   rS   r}  r
   r   r   r|  )
rk   rl   r  kindsr   rP   ixr  r  errr   r   r   "test_errorbar_with_partial_columns	  s&    z5TestDataFramePlots.test_errorbar_with_partial_columnsc           	      C   s.  t dt dddd}t dd t dd d}tddd	d
}t||d}t||d}t|j||d}| j|ddd t|j||d}| j|ddd t|jd|d |d}| j|ddd t|jdd|d}| j|ddd t|j||d}| j|ddd t|jd||dd}| j|ddd d S )NrY  r   r   r&   ru  rv  r  z1/1/2001r  )rT  r-   r  r    rx  r(   r'   )r(   rw  r   r   T)r   r   rw  r   )rZ   r   r|  r
   r   r   rS   r}  )	rk   r   r  r  r  r  tdf_errrP   rj   r   r   r   test_errorbar_timeseries   s.   z+TestDataFramePlots.test_errorbar_timeseriesc                 C   s   t jd t jddd}tt dddj}|j||d d}|j	d 
 d jd d df }|dd d df t ddg }t|| td	}tjt|d
 |j|jd W d    n1 sgw   Y  t  d S )Nr   r%   r    r1   r  )rw  ry  r   r   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)r)   rz  )rZ   r[   r  r\   r   r   reshapeTrS   rp  	get_pathsverticesr   rQ   r  rN  rO  rV   rW   r   r   )rk   r  rl   rP   yerr_0_0expected_0_0rm   r   r   r   test_errorbar_asymmetricalB  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   rZ   r[   r\   r]   r^   r_   r   rS   rQ   rp  ri   tablesr   r  r  r   r   r   r   
test_tableW  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 )Nr1   r    r'   r(   r   r&   r   rx  )r'   r(   ry  r   )r'   r(   rw  )r'   r(   ry  rw  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)r7  r   r  has_errr   r   r6  w  s    z[TestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_color.<locals>.<listcomp>r   c                    s   g | ]	}| j v r|qS r   )rp  r  rP   r   r   r6  }  r  rN  )
containersr   extendappendr  rZ   r   ri   )r  rE  r  r   errsel	err_linesrP   rk   r  r   _check_errorbar_coloru  s   
zGTestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_colorr,   r`  r   r   r   r  ra  r  )r'   r(   ry  rw  r   r  has_yerrrL  )r'   r(   rw  r+  )r  )r   rZ   r  r[   r   re   r   rS   r   r}  r  )rk   rl   r  r  r   r  r   test_errorbar_scatterc  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   rV   rW   r   KeyErrorrS   r   r   r   r   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   ru  r   r    r%   r   r1   rB   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   Tr:   r   r    Fr<   r%   )ri   r   r`   r  rb   rj   rP   rk   r   r   _check  s   z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr   r   r8   T)r'   r(   r8   rP   sharex)r   rP   r  r'   r(   r8   rP   r   r:   r<   )r  r  r   _generate_4_axes_via_gridspecr   rS   tight_layoutr  rQ   rp  UserWarningri   r   r`   r  rb   rk   rh   gsrj   rl   r  rP   r   r  r   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   Tr:   r<   r   r    r%   F)ri   r   r`   rb   r  r  r  r   r   r    s   z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr   r   r8   T)r'   r(   r8   rP   r!  )r   rP   r!  r  r   r:   r<   )r  r  r  r   rS   r  r  rQ   r   rp  r  ri   r   r`   r  rb   r  r   r  r   test_sharey_and_ax  s@   
	


z%TestDataFramePlots.test_sharey_and_axc           	   	   C   s  ddl }ddl}i }tjjD ]H}i }|dv r8ttjjddtjjddt	dtjjdd d}ddd	}n|d
krCt
  }nt
 }||jdd|i|||< qt
  |  d}|D ]}tjt|d || j W d   n1 s|w   Y  qcdS )z3Check that every plot type gets properly collected.r   N)r   r   r   rA  r  rB  r}   r~   r&   r   r   z)weakly-referenced object no longer existsr)   r   )gcweakrefr   r5  
_all_kindsr   rZ   r[   r  r   rQ   rR   r  proxyrS   r   collectrV   rW   ReferenceErrorr   )	rk   r  r  resultsr   argsrl   rm   keyr   r   r   test_memory_leak   s4    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   r,   r  )rU  r-   r    ABr   c                     sL     dd}  }|| d dd d f }|| dd d f }||fS )Nr%   r   r    GridSpecrT  r  r  ro   r  r  gridspecrh   r   r   _get_vertical_grid0  
   zHTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_vertical_gridc                     sL     dd}  }|| d d d df }|| d d df }||fS )Nr   r%   r    r  r  r  r   r   _get_horizontal_grid7  r  zJTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_horizontal_gridr  r   Tr:   r<   rO   )r   rP   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  ro   r  r  ax3ax4r  r   r   _get_boxed_gridt  s   zETestDataFramePlots.test_df_gridspec_patterns.<locals>._get_boxed_gridr   ABCDr%   )matplotlib.gridspecr  r  r  r   rZ   r[   r   r
   r   r.   r]   rS   ri   r   r`   r  rb   rQ   r   rp  r  )
rk   tsrl   r  r  r  r  rP   rj   r  r   r  r   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   r5  _dataframe_kindsr  r   r   r   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)ru  ru  ru  ru  r,   r  rJ   r  )r   r   r   r   r   r   r   hsv)r   rP   r'   r(   r   r  r   )make_axes_locatabler  z5%g?)r  pad)
inset_axesz30%r   r%   )r*  r  r  )rh   r   add_axesr   rZ   r[   r\   rS   r   r   rT  mpl_toolkits.axes_grid1r  append_axes%mpl_toolkits.axes_grid1.inset_locatorr  )	rk   ro   rP   rl   r  dividercaxr  iaxr   r   r   test_plain_axes  s$   

z"TestDataFramePlots.test_plain_axesmethod)rY   r,  rG   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 rl  )r~   r  rl   r   r   r   r        
 zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>r   c                 S   s
   | j d S )Ng?r  r  r   r   r   r     r  )r   rA  r   r   T)r  r  
mark_right)rj   r  r   )
r   rZ   r[   r   r]   assignr7  rS   rU   r  )rk   r  rl   r  r   r[  rP   r   r   r   test_secondary_axis_font_size  s   z0TestDataFramePlots.test_secondary_axis_font_sizec                 C   s   t g dg dg dd}|jjdd}|dd d	d
 | D }tt|| }|d dks5J |d dks=J |d dksEJ d S )N)r%   r    r%   )rA  r      )MondayTuesday	Wednesday)salesvisitsdayr  r   r   r%   c                 S   r0  r   ri  r4  tr   r   r   r6    r7  zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>r  r   r  r   r  r   )r   rS   r   set_xlimrb   r  rd   
get_xticks)rk   rl   rP   xticklabelslabels_positionr   r   r   test_x_string_values_ticks  s   z-TestDataFramePlots.test_x_string_values_ticksc                 C   s   t ddgddgg}ttjddddg|d}| }|d	d d
d | D }t	t
|| }|d dks=J |d dksEJ |d dksMJ |d dksUJ d S )Nr1  i  r   r    r   r}   r~   rK   r   c                 S   r0  r   ri  r  r   r   r   r6    r7  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   rZ   r[   r   rS   r  rb   r  rd   r  )rk   r.   rl   rP   r  r  r   r   r   test_x_multiindex_values_ticks  s   z1TestDataFramePlots.test_x_multiindex_values_ticksc                 C   sL   t ddgddgd}|j|d}| }|d dk sJ |d dks$J d S )Nr    r   r   r-   r  r   )r   rS   r   )rk   r   rl   rP   xlimsr   r   r   test_xlim_plot_line  s
   z&TestDataFramePlots.test_xlim_plot_linec                 C   s   | j  \}}g d}tg dg dg dg dd|d}|g d jj|d	d
 |dg j|dd | }|d dk s@J |d dk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)rP   r   r  T)rP   r  r   r   r%   c                 S   r0  r   ri  r  r   r   r   r6    r7  zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)rh   r   r   rS   rG   r   rb   )rk   ro   rP   indexesrl   r  r  r   r   r   0test_xlim_plot_line_correctly_in_mixed_plot_type  s"   	zCTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_typec                 C   sl   t dgtd}|jsJ | }t| dksJ | d }t| dks*J t| dks4J d S )Nfoo)rL   rx   r   r   )r   intemptyrS   ri   r   r   r	  )rk   rl   rP   rY   r   r   r   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   r:  r)   )r   rV   rW   rP  rS   r   r   r   r   test_plot_no_numeric_data!  s   
"z,TestDataFramePlots.test_plot_no_numeric_data)rY   rG   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   r`  )r   ra  )r   r  r   r   r%   r   ra  r   r  r   r   r  rY   )rZ   r   r   rS   ri   rd   r  r   )rk   r   r  rl   rj   rs  rP   r  r   r   r   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   rM   )r   re   rV   rW   NotImplementedErrorrS   )rk   serrm   r   r   r   (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)   rM   )	r   rZ   eyer   rf   rV   rW   r  rS   r   r   r   r   ,test_group_subplot_multiindex_notimplementedD  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  rM   )r   rZ   r  rV   rW   r  rS   r   r   r   r   0test_group_subplot_nonunique_cols_notimplementedJ  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)   rM   rZ   r   r   rV   rW   r   rS   )rk   r   expected_msgr  rl   r   r   r   test_group_subplot_bad_inputP  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_namerM   r  rk   r  rl   r   r   r   &test_group_subplot_invalid_column_namec  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   rM   r  r  r   r   r   $test_group_subplot_duplicated_columnj  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  )rk   r   r  rl   r   r   r   test_group_subplot_invalid_kindq  s   "z2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr  new)oldr$  r#  )Nr  r  )Nr  r   r  )rY   r   rG   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    r1   Type AType Br   r  r  )r   re  xlabel)r   r.   r   rS   
get_xlabelr  str)rk   r   
index_name	old_label	new_labelrl   rP   r   r   r   (test_xlabel_ylabel_dataframe_single_plotz  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    r1   r   )r   r'   r(   r'  re  )r   rS   r(  r  )rk   r   r'  re  xcolycolrl   rP   r   r   r   'test_xlabel_ylabel_dataframe_plane_plot  s    z:TestDataFramePlots.test_xlabel_ylabel_dataframe_plane_plotr  )FTc                 C   sj   t dgj|dddgd}|jjD ]!}|j r2| dks J | dks(J | d dks2J qd S )Nr   r^  )r   r4   r   )r  re  r5   r2   )	r   rS   rT  rj   r   get_visibler  r  
get_yticks)rk   r  ax_dfrP   r   r   r   test_secondary_y  s   


z#TestDataFramePlots.test_secondary_yc                 C   s   t ddgddgd}tt |jjddd W d    n1 s#w   Y  tt |jjd	d W d    n1 s?w   Y  td	 |jd W d    d S 1 s[w   Y  d S )
Nr   r    r%   r   r  r   Tr/   F)r   rQ   rp  FutureWarningrS   r  r   r   r   r   test_sort_columns_deprecated  s   "z/TestDataFramePlots.test_sort_columns_deprecated)NNNN)q__name__
__module____qualname__rV   markxfailr   slowrq   r   r   r   r   r   r   parametrizer   r   r   r   r   r   r   r   r  r  r  r   r$  r)  r.  r@  rF  rM  rQ  rX  r]  r_  r}  r  r  r  r  r  r  r  r  r  tdskip_if_no_scipyr  r  r  rZ   r|  r  r  r
  r  r  r   r0  r4  r8  r<  r=  r?  rD  rF  rH  rP  rR  rU  rX  r\  rg  rt  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-  r2  r6  r8  r   r   r   r   r   *   s~   g


&
/'%		
6	
 

' 
 
	




$	



*
.
		

!,65
&s

	

	


	
r   c                  C   sr   dd l } dd l}dd lm} | jdd}||d }||d }||d }||d }|||||gfS )Nr   r    r  )r   r   r  rN   )r  r  r  r  r  r  subplot)r  r  rh   r  ax_tlax_llax_trax_lrr   r   r   r    s   r  )(__doc__r   r   r  rN  r^   r  numpyrZ   rV   pandas.util._test_decoratorsutil_test_decoratorsr@  pandas.core.dtypes.apir   pandasr   r   r   r   r   r	   r
   pandas._testing_testingrQ   pandas.tests.plotting.commonr   r   pandas.io.formats.printingr   pandas.plottingr   r  r   ImportErrorskip_if_no_mplr   r  r   r   r   r   <module>   sR                      *