o
    dn                     @   sl   d Z ddlZddlZddlm  mZ ddlm	Z	m
Z
mZ ddlmZ ddlmZ ejG dd deZdS )z Test cases for GroupBy.plot     N)	DataFrameIndexSeries)TestPlotBasec                   @   sx   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dddgdd Zej	
dddgdd Zdd Zdd ZdS )TestDataFrameGroupByPlotsc                 C   s   d}t tjjdd|d}t tjjdd|d}tjdjddg|d}||  t	  ||
  t	  ||jd	d
 t	  d S )N
         )size<   *   ZmaleZfemaleg      ?)alpha)r   nprandomnormalZRandomStatechoicegroupbyplottmclosehist)selfnweightheightZgender r   V/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/plotting/test_groupby.py,test_series_groupby_plotting_nominally_works   s   zFTestDataFrameGroupByPlots.test_series_groupby_plotting_nominally_worksc                 C   s`   t g dtjddg dd}|dd   t  |dd dd	  t  d S )
N)	   r   r      r   r      r    r    	   )defval)	      ?       @      @r$   r%   r&   r$   r%   r&   )indexr"   r#   c                 S   s   |   S )N)r   )xr   r   r   <lambda>+   s    zPTestDataFrameGroupByPlots.test_plotting_with_float_index_works.<locals>.<lambda>)	r   r   r   randnr   r   r   r   applyr   dfr   r   r   $test_plotting_with_float_index_works"   s   z>TestDataFrameGroupByPlots.test_plotting_with_float_index_worksc                 C   sp   t ddd}tddgddgddgd	}|d
 j|d |d tdgdgdgd	}|d
 j|d |d d S )NP   f   r   ZAAAZBBBr   U   Y   )NameByColMarkr5   r4   )Zbybins)r   Zaranger   r   )r   r6   r-   r   r   r   test_hist_single_row.   s
   z.TestDataFrameGroupByPlots.test_hist_single_rowc                 C   sX   t g dg dtdd}|djdd t  |dd j  t  d S )Nr   r   r          r   r   r    r   r   ababar(   yzr?   r(   r>   )r   listr   r   scatterr   r   liner,   r   r   r   test_plot_submethod_works6   s
   z3TestDataFrameGroupByPlots.test_plot_submethod_worksc                 C   sx   t g dg dtdd}|djdddd	}t|d
 jdks$J |djjddd}t|d
 jdks:J d S )Nr8   r;   r<   r=   r?   rA   r(   r>   )kindr(   r>   ar   )r(   r>   )r   r@   r   r   lencollectionsrA   )r   r-   resr   r   r   test_plot_kwargs=   s
   z*TestDataFrameGroupByPlots.test_plot_kwargszcolumn, expected_axes_num)Nr   )br   c                 C   s   d|f}|pdgdgg}t ddg ddg  dd}ttjd	d
|ddgd}|d}|jd|dD ]}| j|||d t|d |D ]
\}	}
| 	|	|
 qEq4d S )Nr   rE   rJ      12cname   r   r'   columnsT)legendcolumnZaxes_numZlayoutr   )
r   r   r   r   r*   r   r   _check_axes_shapezip_check_legend_labels)r   rU   Zexpected_axes_numZexpected_layoutZexpected_labelsr'   r-   gZaxesaxZexpected_labelr   r   r   #test_groupby_hist_frame_with_legendH   s   
z=TestDataFrameGroupByPlots.test_groupby_hist_frame_with_legendrU   NrJ   c                 C   s   t ddg ddg  dd}ttjdd|dd	gd
}|d}tjtdd |j	d|dd W d    d S 1 s<w   Y  d S )NrK   rL   rM   rN   rO   rQ   r   rE   rJ   rR    Cannot use both legend and labelmatchTd)rT   rU   label
r   r   r   r   r*   r   pytestZraises
ValueErrorr   )r   rU   r'   r-   rZ   r   r   r   *test_groupby_hist_frame_with_legend_raisesY   s   
"zDTestDataFrameGroupByPlots.test_groupby_hist_frame_with_legend_raisesc                 C   s|   t ddg ddg  dd}ttjdd|dd	gd
}|d}|d jddD ]}| j|ddd | |ddg q)d S )NrK   rL   rM   rN   rO   rQ   r   rE   rJ   rR   T)rT   r   )r   r   rV   )	r   r   r   r   r*   r   r   rW   rY   )r   r'   r-   rZ   r[   r   r   r   $test_groupby_hist_series_with_legendc   s   
z>TestDataFrameGroupByPlots.test_groupby_hist_series_with_legendc                 C   s   t ddg ddg  dd}ttjdd|dd	gd
}|d}tjtdd |j	ddd W d    d S 1 s;w   Y  d S )NrK   rL   rM   rN   rO   rQ   r   rE   rJ   rR   r]   r^   Tr`   )rT   ra   rb   )r   r'   r-   rZ   r   r   r   +test_groupby_hist_series_with_legend_raisesm   s   
"zETestDataFrameGroupByPlots.test_groupby_hist_series_with_legend_raises)__name__
__module____qualname__r   r.   r7   rC   rI   rc   markZparametrizer\   re   rf   rg   r   r   r   r   r      s    

	
r   )__doc__numpyr   rc   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   r   Zpandas._testingZ_testingr   Zpandas.tests.plotting.commonr   Zskip_if_no_mplr   r   r   r   r   <module>   s    