o
    Ehqb                     @   s`  d Z ddlZddlZddlZddlm  mZ ddl	m
Z
mZ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mZmZmZ edZedZedZej de
fd	d
Z!e"ddd Z#dd Z$ej%&dej'j(ej%&de
e)d*ddee+dgej%&dee+dedddedddgdd Z,G dd dZ-G dd dZ.dS )z$ Test cases for misc plot functions     N)		DataFrameIndexSeries	Timestamp
date_rangeinterval_rangeperiod_rangeplottingread_csv)_check_colors_check_legend_labels_check_plot_works_check_text_labels_check_ticks_props
matplotlibzmatplotlib.pyplotzmatplotlib.cmreturnc                 C   s   t | ddddS )z*
    The iris dataset as a DataFrame.
    iodataZcsvziris.csv)r
   )datapath r   ?lib/python3.10/site-packages/pandas/tests/plotting/test_misc.pyiris"   s   r   c                  C   sL   t dddgi} tjtdd |   W d    d S 1 sw   Y  d S )NA      z#matplotlib is required for plottingmatch)r   pytestraisesImportErrorplot)dfr   r   r   test_import_error_message*   s   
"r"   c                  C   sF  t jjj} d}tjt|d | dg g i d W d    n1 s!w   Y  d}tjt|d | dttddd gi d W d    n1 sGw   Y  | dt	 dgd	d
ddd\}}}}|dksdJ |d	ksjJ |d
kspJ |ddiksxJ | dttdg i d\}}}}|d u sJ |d u sJ |dksJ t
|dksJ d S )Nz@Called plot accessor for type list, expected Series or DataFramer    )Zbackend_namer   argskwargsz.should not be called with positional argumentsZdtypelinexybarF)r)   kindgridr,   zpandas.plotting._matplotlib   )r	   Z_corePlotAccessorZ_get_call_argsr   r   	TypeErrorr   objectr   len)funcmsgr(   r)   r+   r%   r   r   r   test_get_accessor_args3   s:   

r4   r+   r            index
2020-01-01Zperiodsc                 C   sh   t  \}}||_i }| dv r!t|trt|  d ddd}|jd| |d| |t	j
 d S )N)ZhexbinZscatterZpiez not supported with Seriesr   r   )r(   r)   )r+   axr   )pltsubplotsr8   
isinstancer   r   skipr    Zsavefigosdevnull)r+   r   r8   figr;   r%   r   r   r   test_savefigU   s   

rC   c                   @   s:   e Zd Zdd Zejdi ddigdd Zdd	 Zd
S )TestSeriesPlotsc                 C   s   ddl m} ttjdtjdtddddd}td  t	||d	 t	||j
d	 ||d
d}W d    n1 s:w   Y  t|d
gd d S )Nr   )autocorrelation_plot
   r&   r9   r:   tsr8   name)seriesZTest)Zlabel)labels)pandas.plottingrE   r   nparangefloat64r   tmassert_produces_warningr   valuesr   )selfrE   serr;   r   r   r   test_autocorrelation_plotn   s   
z)TestSeriesPlots.test_autocorrelation_plotr%   Zlagr6   c                 C   sF   ddl m} ttjdtjdtddddd}t|fd	|i| d S )
Nr   )lag_plotrF   r&   r9   r:   rG   rH   rJ   )rL   rV   r   rM   rN   rO   r   r   )rS   r%   rV   rT   r   r   r   test_lag_plot~   s   
zTestSeriesPlots.test_lag_plotc                 C   s@   ddl m} ttjdtjdtddddd}t||dd	 d S )
Nr   )bootstrap_plotrF   r&   r9   r:   rG   rH   )rJ   size)rL   rX   r   rM   rN   rO   r   r   )rS   rX   rT   r   r   r   test_bootstrap_plot   s   
z#TestSeriesPlots.test_bootstrap_plotN)	__name__
__module____qualname__rU   r   markparametrizerW   rZ   r   r   r   r   rD   m   s
    

rD   c                   @   s  e Zd Zejdddgdd Zejdddgdd Zejjdd	 Z	ejjejd
dg dgejdde
ejddejddejdddgd dgdd Zejjejdde
ejddejddejdddgd dgdd Zejjdd Zejjejddg dgdd Zejjdd Zejjdd Zejjd d! Zejd"d#d$ Zd%d& Zejddg dgd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Z d7d8 Z!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%ejdAdBdCgdDdE Z&dFdG Z'dHdI Z(dJdK Z)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVS )WTestDataFramePlots	pass_axisFTc           	      C   s   t d tj}d }|rtjdd\}}ttj	
dd}tjtdd t||d|d}W d    n1 s:w   Y  |d	 d	 j }g d
}t|| t|dddd	d d S )Nscipyr7   r   d   r7   FZcheck_stacklevel皙?frameZrange_paddingr;   r   )z-202   Z   Z
xlabelsizeZxrotZ
ylabelsizeZyrotr   importorskipr	   scatter_matrixmplpyplotr=   r   rM   randomdefault_rngstandard_normalrP   rQ   UserWarningr   ZyaxisZget_majorticklabelsr   r   	rS   ra   rp   r;   _r!   ZaxesZaxes0_labelsexpectedr   r   r   test_scatter_matrix_axis   s$   

z+TestDataFramePlots.test_scatter_matrix_axisc           	      C   s   t d tj}d }|rtjdd\}}ttj	
dd}|d d d |d< tjtdd t||d	|d
}W d    n1 sDw   Y  |d d j }g d}t|| t|ddddd d S )Nrb   r7      rc   r   r   Fre   rf   rg   )z-1.0z-0.5z0.0rk   rl   rm   rn   rw   r   r   r    test_scatter_matrix_axis_smaller   s&   

z3TestDataFramePlots.test_scatter_matrix_axis_smallerc                 C   N   ddl m} |}td  t||dd W d    d S 1 s w   Y  d S )Nr   andrews_curvesNamerh   class_column)rL   r   rP   rQ   r   )rS   r   r   r!   r   r   r   test_andrews_curves_no_warning   s
   "z1TestDataFramePlots.test_andrews_curves_no_warning
linecolors)z#556270z#4ECDC4z#C7F464)Z
dodgerblueZ
aquamarineZseagreenr!   r   r   rF   r   r   BCr   c                 C   sZ   ddl m} t|tr||}t||d|d}t| d d ||d d d d d S )Nr   r~   r   rh   r   colorrF   r   mapping)rL   r   r>   strgetfixturevaluer   r   	get_lines)rS   requestr!   r   r   r;   r   r   r   test_andrews_curves_linecolors   s   


z1TestDataFramePlots.test_andrews_curves_linecolorsc                 C   sz   ddl m} t|tr||}dd tdd|d  D }t||d|d}t	|
 d d ||d d d d	 d S )
Nr   r~   c                 S   s   g | ]}t |qS r   )cmjet.0nr   r   r   
<listcomp>      z?TestDataFramePlots.test_andrews_curves_cmap.<locals>.<listcomp>r   r   r   rF   r   )rL   r   r>   r   r   rM   linspacenuniquer   r   r   )rS   r   r!   r   cmapsr;   r   r   r   test_andrews_curves_cmap   s   

 *z+TestDataFramePlots.test_andrews_curves_cmapc                 C   s\   ddl m} g d}tg dg dg d|d}||d|d}| \}}t||d d S )	Nr   r~   bgrr   r   r7   r   r   r   r   )rL   r   r   get_legend_handles_labelsr   )rS   r   colorsr!   r;   handlesrx   r   r   r   test_andrews_curves_handle  s   z-TestDataFramePlots.test_andrews_curves_handler   c                 C   sJ   ddl m} |}t||d|d}t| d d ||d d d d d S )Nr   parallel_coordinatesr   r   rF   r   )rL   r   r   r   r   )rS   r   r   r   r!   r;   r   r   r    test_parallel_coordinates_colors  s   *z3TestDataFramePlots.test_parallel_coordinates_colorsc                    s|   ddl m  ddlm} |}t||d jd} fddtdd|d  D }t	|
 d d	 ||d d d	 d
 d S )Nr   r   r   r   rh   r   Zcolormapc                       g | ]}  |qS r   r   r   r   r   r   r   0  r   zETestDataFramePlots.test_parallel_coordinates_cmap.<locals>.<listcomp>r   rF   r   )r   r   rL   r   r   r   rM   r   r   r   r   )rS   r   r   r!   r;   r   r   r   r   test_parallel_coordinates_cmap%  s   
$*z1TestDataFramePlots.test_parallel_coordinates_cmapc                 C   sd   ddl m} |}t||dd}t| }t|j }t||ddd}t| || ks0J d S )Nr   r   r   r   F)rh   r   Zaxvlines)rL   r   r   r1   r   xaxisZget_ticklabels)rS   r   r   r!   r;   ZnlinesZnxticksr   r   r   #test_parallel_coordinates_line_diff3  s   z6TestDataFramePlots.test_parallel_coordinates_line_diffc                 C   s`   ddl m} |}g d}tg dg dg d|d}||d|d}| \}}t||d d S )	Nr   r   r   r   r   r   r   r   )rL   r   r   r   r   )rS   r   r   r!   r   r;   r   rx   r   r   r   !test_parallel_coordinates_handlesB  s   z4TestDataFramePlots.test_parallel_coordinates_handlesz$ignore:Attempting to set:UserWarningc                 C   s   ddl m} tttddd tdD dd tdD  dd tdD  d	}||d
dd}| \}}tdd |D |}t|dd d}tt|dd t|dd }|D ]\}	}
|	d |
d k rp|	d |
d k srJ q\dS )z
For #15908r   r      c                 S      g | ]}d qS )r   r   r   rx   r   r   r   r   V      zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>rF   c                 S   r   )r7   r   r   r   r   r   r   W  r   c                 S   r   )r   r   r   r   r   r   r   X  r   )Zfeatclassr   T)Zsort_labelsc                 S      g | ]}|  qS r   Z	get_color)r   Zpolyliner   r   r   r   ^      c                 S   s   | d S )Nr   r   )r(   r   r   r   <lambda>`  s    zQTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<lambda>)keyr   N)rL   r   r   listranger   zipsorted)rS   r   r!   r;   Z	polylinesrK   Zcolor_label_tuplesZordered_color_label_tuplesZprev_next_tupelsprevZnxtr   r   r   ,test_parallel_coordinates_with_sorted_labelsN  s,   
&z?TestDataFramePlots.test_parallel_coordinates_with_sorted_labelsc                 C   r}   )Nr   radvizr   r   )rL   r   rP   rQ   r   )rS   r   r   r!   r   r   r   test_radviz_no_warningh  s
   "z)TestDataFramePlots.test_radviz_no_warningc                 C   s^   ddl m} |}t||d|d}dd |jd d D }t|d d ||d d d d	 d S )
Nr   r   r   r   c                 S      g | ]
}|  d kr|qS r#   	get_labelr   pr   r   r   r   z      z8TestDataFramePlots.test_radviz_color.<locals>.<listcomp>   rF   
facecolorsr   )rL   r   r   patchesr   )rS   r   r   r   r!   r;   r   r   r   r   test_radviz_colorp  s
   &z$TestDataFramePlots.test_radviz_colorc                    s   ddl m  ddlm} |}t||d jd} fddtdd|d  D }d	d |j	d d
 D }t
|||d d d d d S )Nr   r   r   r   r   c                    r   r   r   r   r   r   r   r     r   z=TestDataFramePlots.test_radviz_color_cmap.<locals>.<listcomp>r   c                 S   r   r   r   r   r   r   r   r     r   r   rF   r   )r   r   rL   r   r   r   rM   r   r   r   r   )rS   r   r   r!   r;   r   r   r   r   r   test_radviz_color_cmap}  s   $z)TestDataFramePlots.test_radviz_color_cmapc                 C   sn   ddl m} g dg dg dg}tg dg dg dg d	d
}||d|d}| \}}t||d d S )Nr   r   )        r         ?r   )r         ?r   r   )r   r   r   r   r   )r   r   r7   )r7   r   r   r   r   r   r   )r   )rL   r   r   r   r   )rS   r   r   r!   r;   r   rx   r   r   r   test_radviz_colors_handles  s   z-TestDataFramePlots.test_radviz_colors_handlesc                 C   sD   |j ddd }t|j}|jd|d}dd |D |ks J d S )Nr   r   ZaxisTr=   titlec                 S   r   r   Z	get_titler   r   r   r   r     r   z:TestDataFramePlots.test_subplot_titles.<locals>.<listcomp>dropheadr   columnsr    )rS   r   r!   r   r    r   r   r   test_subplot_titles  s   
z&TestDataFramePlots.test_subplot_titlesc                 C   sh   |j ddd }t|j}d}tjt|d |jd|dg d W d    d S 1 s-w   Y  d S )	Nr   r   r   jThe length of `title` must equal the number of columns if using `title` of type `list` and `subplots=True`r   Tzkittens > puppiesr   r   r   r   r   r   r   
ValueErrorr    rS   r   r!   r   r3   r   r   r   test_subplot_titles_too_much  s   
"z/TestDataFramePlots.test_subplot_titles_too_muchc                 C   sj   |j ddd }t|j}d}tjt|d |jd|d d d W d    d S 1 s.w   Y  d S )	Nr   r   r   r   r   Tr   r   r   r   r   r   r   test_subplot_titles_too_little  s   
"z1TestDataFramePlots.test_subplot_titles_too_littlec                 C   sb   |j ddd }t|j}d}tjt|d |jd|d W d    d S 1 s*w   Y  d S )Nr   r   r   zNUsing `title` of type `list` is not supported unless `subplots=True` is passedr   Fr   r   r   r   r   r   "test_subplot_titles_subplots_false  s   
"z5TestDataFramePlots.test_subplot_titles_subplots_falsec                 C   sj   |j ddd }t|j}|j dddjdd|d d d}d	d
 |D }||d d dg ks3J d S )Nr   r   r   Z
SepalWidthTr   r   r   )r=   Zlayoutr   c                 S   s   g | ]}|D ]}|  qqS r   r   )r   Zsublistr;   r   r   r   r     s    zPTestDataFramePlots.test_subplot_titles_numeric_square_layout.<locals>.<listcomp>r7   r#   r   )rS   r   r!   r   r    Z
title_listr   r   r   )test_subplot_titles_numeric_square_layout  s   
z<TestDataFramePlots.test_subplot_titles_numeric_square_layoutc                 C   sV   t td}t|d tjd  }t|d tjd  }||ks)J d S )N)rF   rF   r   )r   rM   Zzerosr	   r   rs   rt   )rS   r!   Zrand1Zrand2r   r   r   $test_get_standard_colors_random_seed  s   z7TestDataFramePlots.test_get_standard_colors_random_seedc                 C   s4   ddl m} |ddd}|ddd}||ksJ d S )Nr   get_standard_colorsr   rs   Z
color_type)!pandas.plotting._matplotlib.styler   )rS   r   color1color2r   r   r   $test_get_standard_colors_consistency  s   z7TestDataFramePlots.test_get_standard_colors_consistencyc                 C   sd   ddl m} |ddd}|ddd}|ddd}t|dks J t|dks(J t|dks0J d S )Nr   r   r   defaultr   	   r   )r   r   r1   )rS   r   r   r   Zcolor3r   r   r   +test_get_standard_colors_default_num_colors  s   z>TestDataFramePlots.test_get_standard_colors_default_num_colorsc                    sv   t g dg dg dg dg dg dd}|j j }dd	 | d
d D  t fdd D s9J d S )N)z
2017-02-03z
2017-03-03z
2017-01-01)zAlice Andersz	Bob BakerzCharlie Chaplin)gzGag\($@g     L@)i  ix	     )  i  i	  )4   r       )zaccount-startclientZbalancezdb-idzproxy-idZrankc                 S   r   r   get_facecolorr   Zrectr   r   r   r     r   z=TestDataFramePlots.test_plot_single_color.<locals>.<listcomp>r   r7   c                 3   s    | ]	}| d  kV  qdS )r   Nr   )r   r   r   r   r   	<genexpr>  s    z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>)r   r   Zvalue_countsr    r*   get_childrenall)rS   r!   r;   r   r   r   test_plot_single_color  s   
z)TestDataFramePlots.test_plot_single_colorc                 C   s   ddl m} ddlm} |td}|d|d}t|t|ks#J ttj	
ddtd	d
}|tddd}|jjjd|d}|jd  |jd  ksUJ d S )Nr   r   r   r6   r   r   r   )0      ZABCDr      )r     )Zfigsizer      )r   r   r   r   Zgnuplotr   r1   r   rM   rs   rt   ru   r   r   r   r    r*   r   r   )rS   r   r   Zcolor_beforeZcolor_afterr!   Z
color_listr   r   r   r   %test_get_standard_colors_no_appending  s   $z8TestDataFramePlots.test_get_standard_colors_no_appendingr+   r*   r'   c                    s   ddg}ddg t tjdd|d}ddd}|j||d	}|d
kr4dd | ddd D }ndd | dd D }t fddt|D sPJ d S )Nar   )r   gQ?g333333?)g333333?ffffff?r	  r   r   r  )r   r  )r+   r   r*   c                 S   s   g | ]
}|  d d qS )r   r   r   r   r   r   r   r     r   z<TestDataFramePlots.test_dictionary_color.<locals>.<listcomp>r   r7   c                 S   r   r   r   r   r   r   r   r     r   c                 3   s     | ]\}}| | kV  qd S Nr   )r   r8   r   ry   r   r   r     s    z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>)	r   rM   rs   rt   r    r   r   r   	enumerate)rS   r+   Z
data_filesZdf1Z	dic_colorr;   r   r   r  r   test_dictionary_color  s   
"z(TestDataFramePlots.test_dictionary_colorc                 C   sn   ddl m} |ddd|dddg}tdddgitddgd}|j }td	d
 t| |D s5J d S )Nr   Textri   r   ZTotalr  r   r8   c                 s   $    | ]\}}|  |  kV  qd S r
  Zget_textr   r  r   r   r   r   r   /  
    
z3TestDataFramePlots.test_bar_plot.<locals>.<genexpr>)	matplotlib.textr  r   r   r    r*   r   r   get_xticklabels)rS   r  ry   r!   Zplot_barr   r   r   test_bar_plot!  s   

z TestDataFramePlots.test_bar_plotc                 C   sp   ddl m} tddddddg}|jjdd d}|ddd	|dddg}td
d t| |D s6J d S )Nr   r  r   )wordvalueZ	knowledger   r  )r(   Zlegend1c                 s   r  r
  r  )r   Zactualry   r   r   r   r   <  r  zPTestDataFramePlots.test_barh_plot_labels_mixed_integer_string.<locals>.<genexpr>)r  r  r   r    Zbarhr   r   Zget_yticklabels)rS   r  r!   Z	plot_barhZexpected_yticklabelsr   r   r   *test_barh_plot_labels_mixed_integer_string4  s   z=TestDataFramePlots.test_barh_plot_labels_mixed_integer_stringc                 C   s   t jjj}tj }|dd}|jd|d d d|d d< |jd|d d d|d d< |d d 	  |d d 	  ||d d dsIJ ||d d drTJ ||d d ds_J ||d d	 drjJ d S )
Nr   r     r   r   Zsharex   r(   r7   )
r	   _matplotlibtools_has_externally_shared_axisrq   rr   figurer=   add_subplottwinxrS   r2   rB   plotsr   r   r   &test_has_externally_shared_axis_x_axisC     

z9TestDataFramePlots.test_has_externally_shared_axis_x_axisc                 C   s   t jjj}tj }|dd}|jd|d d d|d d< |jd|d d d|d d< |d d 	  |d d 	  ||d d dsIJ ||d d drTJ ||d d ds_J ||d	 d drjJ d S )
Nr  r   A  r   r   ZshareyiE  r)   r7   )
r	   r  r   r!  rq   rr   r"  r=   r#  Ztwinyr%  r   r   r   &test_has_externally_shared_axis_y_axis\  r(  z9TestDataFramePlots.test_has_externally_shared_axis_y_axisc                 C   s   t jjj}tj }|dd}|jd|d d d|d d< d}t	j
t|d ||d d d	 W d    d S 1 s=w   Y  d S )
Nr  r   r)  r   r   r*  z&needs 'x' or 'y' as a second parameterr   z)r	   r  r   r!  rq   rr   r"  r=   r#  r   r   r   )rS   r2   rB   r&  r3   r   r   r   4test_has_externally_shared_axis_invalid_compare_axisu  s   

"zGTestDataFramePlots.test_has_externally_shared_axis_invalid_compare_axisc                 C   s  t tjddtjddd}tj }|dd}|j	d|d d d|d d< |j	d	|d d d|d d< |d d 
 }|d d 
 }|d
 j|d d ddd |d
 j|d d d |d
 j|d d ddd |d
 j|d d d |d
 j|d d ddd |d
 j|d d d |d j|dd |d j|dd |d d j  rJ |d d j  sJ |d d j  rJ d S )Nr   i  )r  r   r7   r  r   r   r  r  r  zExternal share only)r;   r   z"this label should never be visible)r;   zInternal share (twin) onlyz#this label should always be visibleZBothr   Zgreen)r;   r   Zyellow)r   rM   rs   rt   ru   rq   rr   r"  r=   r#  r$  r    Z
set_xlabelr   r   Zget_visible)rS   r!   rB   r&  Ztwin_ax1Ztwin_ax2r   r   r   test_externally_shared_axes  s8   
z.TestDataFramePlots.test_externally_shared_axesc                 C   s:   t dgtdgd}t|j tddi}t|jj d S )Nr   z2022-02-22 22:22:22r  r   )r   r   r   r    r   r*   )rS   r!   sr   r   r   -test_plot_bar_axis_units_timestamp_conversion  s   
z@TestDataFramePlots.test_plot_bar_axis_units_timestamp_conversionc                 C   sv   ddl m} |ddd|dddg}tddgtddddgd	}t|jj td
d t|j 	 |D s9J d S )Nr   r  z	([0, 1],)r   z	([1, 2],)r   Zboth)closedr  c                 s   r  r
  r  r  r   r   r   r     r  zFTestDataFramePlots.test_bar_plt_xaxis_intervalrange.<locals>.<genexpr>)
r  r  r   r   r   r    r*   r   r   r  )rS   r  ry   r/  r   r   r    test_bar_plt_xaxis_intervalrange  s   z3TestDataFramePlots.test_bar_plt_xaxis_intervalrangeN)/r[   r\   r]   r   r^   r_   rz   r|   Zslowr   r   rM   rs   rt   ru   r   r   r   r   r   r   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r'  r+  r-  r.  r0  r2  r   r   r   r   r`      s    



	








			
0r`   )/__doc__r@   ZnumpyrM   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsZtdZpandasr   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingrP   Zpandas.tests.plotting.commonr   r   r   r   r   ro   rq   r<   r   Zfixturer   Zskip_if_installedr"   r4   r^   r_   r.   Z
_all_kindsrN   Zreshaper   rC   rD   r`   r   r   r   r   <module>   s<    ,



""


'