o
    TiE]                     @   s   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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jdd Z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interval_rangeplotting)_check_colors_check_legend_labels_check_plot_works_check_text_labels_check_ticks_props
matplotlibzmatplotlib.cmc                  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)df r   _/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/pandas/tests/plotting/test_misc.py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    )backend_namedataargskwargsz.should not be called with positional arguments)ZdtypelinexybarF)r"   kindgridr%   zpandas.plotting._matplotlib   )r   Z_coreZPlotAccessorZ_get_call_argsr   r   	TypeErrorr   objectr   len)funcmsgr!   r"   r$   r   r   r   r   test_get_accessor_args&   s:   

r,   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   sz   ddl m} tj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tsname)seriesZTest)label)labels)pandas.plottingr.   tmmakeTimeSeriesassert_produces_warningr
   valuesr	   )selfr.   seraxr   r   r   test_autocorrelation_plotI   s   z)TestSeriesPlots.test_autocorrelation_plotr   Zlag   c                 C   s0   ddl m} tjdd}t|fd|i| d S )Nr   )lag_plotr/   r0   r2   )r5   r?   r6   r7   r
   )r:   r   r?   r;   r   r   r   test_lag_plotU   s   zTestSeriesPlots.test_lag_plotc                 C   s*   ddl m} tjdd}t||dd d S )Nr   )bootstrap_plotr/   r0   
   )r2   size)r5   rA   r6   r7   r
   )r:   rA   r;   r   r   r   test_bootstrap_plot\   s   z#TestSeriesPlots.test_bootstrap_plotN)	__name__
__module____qualname__r=   r   markparametrizer@   rD   r   r   r   r   r-   H   s
    
r-   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scipy   r   d   rM   FZcheck_stacklevel皙?frameZrange_paddingr<   r   )z-202   Z   Z
xlabelsizeZxrotZ
ylabelsizeZyrotr   importorskipr   scatter_matrixmplpyplotsubplotsr   nprandomdefault_rngstandard_normalr6   r8   UserWarningr
   ZyaxisZget_majorticklabelsr   r   	r:   rK   r[   r<   _r   ZaxesZaxes0_labelsexpectedr   r   r   test_scatter_matrix_axisd   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 )NrL   rM      rN   r   r   FrP   rQ   rR   )z-1.0z-0.5z0.0rV   rW   rX   rY   rd   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rS   class_column)r5   rl   r6   r8   r
   )r:   irisrl   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   rp   r   rB   r   r   BCrm   c                 C   sZ   ddl m} t|tr||}t||d|d}t| d d ||d d d d d S )Nr   rk   rm   rS   ro   colorrB   rr   mapping)r5   rl   
isinstancestrgetfixturevaluer
   r   	get_lines)r:   requestr   rr   rl   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   rk   c                 S   s   g | ]}t |qS r   )cmjet.0nr   r   r   
<listcomp>       z?TestDataFramePlots.test_andrews_curves_cmap.<locals>.<listcomp>r   rm   rv   rB   rx   )r5   rl   rz   r{   r|   r_   linspacenuniquer
   r   r}   )r:   r~   r   rl   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   rk   bgrr   r   rM   rs   rm   rw   rr   )r5   rl   r   get_legend_handles_labelsr   )r:   rl   colorsr   r<   handlesre   r   r   r   test_andrews_curves_handle   s   z-TestDataFramePlots.test_andrews_curves_handlerw   c                 C   sJ   ddl m} |}t||d|d}t| d d ||d d d d d S )Nr   parallel_coordinatesrm   rv   rB   rx   )r5   r   r
   r   r}   )r:   rp   rw   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   rm   rS   ro   Zcolormapc                       g | ]}  |qS r   r   r   r   r   r   r      r   zETestDataFramePlots.test_parallel_coordinates_cmap.<locals>.<listcomp>r   rB   rx   )r   r   r5   r   r
   r   r_   r   r   r   r}   )r:   rp   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   rm   rn   F)rS   ro   Zaxvlines)r5   r   r
   r)   r}   xaxisZget_ticklabels)r:   rp   r   r   r<   nlinesZnxticksr   r   r   #test_parallel_coordinates_line_diff  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   rs   rm   r   r   )r5   r   r   r   r   )r:   rp   r   r   r   r<   r   re   r   r   r   !test_parallel_coordinates_handles  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   re   r   r   r   r   %      zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>rB   c                 S   r   )rM   r   r   r   r   r   r   &  r   c                 S   r   )r   r   r   r   r   r   r   '  r   )Zfeatclassr   T)Zsort_labelsc                 S      g | ]}|  qS r   	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)r5   r   r   listranger   zipsorted)r:   r   r   r<   Z	polylinesr4   Zcolor_label_tuplesZordered_color_label_tuplesZprev_next_tupelsprevZnxtr   r   r   ,test_parallel_coordinates_with_sorted_labels  s,   
&z?TestDataFramePlots.test_parallel_coordinates_with_sorted_labelsc                 C   rj   )Nr   radvizrm   rn   )r5   r   r6   r8   r
   )r:   rp   r   r   r   r   r   test_radviz_no_warning7  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   rm   rv   c                 S      g | ]
}|  d kr|qS r   	get_labelr   pr   r   r   r   I      z8TestDataFramePlots.test_radviz_color.<locals>.<listcomp>   rB   
facecolorsry   )r5   r   r
   patchesr   )r:   rp   rw   r   r   r<   r   r   r   r   test_radviz_color?  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   rm   r   c                    r   r   r   r   r   r   r   r   S  r   z=TestDataFramePlots.test_radviz_color_cmap.<locals>.<listcomp>r   c                 S   r   r   r   r   r   r   r   r   T  r   r   rB   r   )r   r   r5   r   r
   r   r_   r   r   r   r   )r:   rp   r   r   r<   r   r   r   r   r   test_radviz_color_cmapL  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   rM   )rM   r   r   r   rs   rm   r   )r   )r5   r   r   r   r   )r:   r   r   r   r<   r   re   r   r   r   test_radviz_colors_handlesW  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 )Nrm   r   ZaxisTr^   titlec                 S   r   r   Z	get_titler   r   r   r   r   i  r   z:TestDataFramePlots.test_subplot_titles.<locals>.<listcomp>dropheadr   columnsr   )r:   rp   r   r   r   r   r   r   test_subplot_titlesb  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 )	Nrm   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   r:   rp   r   r   r+   r   r   r   test_subplot_titles_too_muchk  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 )	Nrm   r   r   r   r   Tr   r   r   r   r   r   r   test_subplot_titles_too_littlew  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 )Nrm   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 )Nrm   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>rM   r   r   )r:   rp   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)rB   rB   r   )r   r_   Zzerosr   r   r`   ra   )r:   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   r`   
color_type)!pandas.plotting._matplotlib.styler   )r:   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   r)   )r:   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   rectr   r   r   r     r   z=TestDataFramePlots.test_plot_single_color.<locals>.<listcomp>r   rM   c                 3   s    | ]	}| d  kV  qdS )r   Nr   )r   rw   r   r   r   	<genexpr>  s    z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>)r   r   Zvalue_countsr   r#   get_childrenall)r:   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   r>   r   r   r   )0      ZABCDr      )r      )Zfigsizerw      )r   r   r   r   gnuplotr   r)   r   r_   r`   ra   rb   r   r   r   r   r#   r   r   )r:   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$   rw   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   rM   c                 S   r   r   r   r   r   r   r   r     r   c                 3   s     | ]\}}| | kV  qd S Nr   )r   indexrw   rf   r   r   r     s    z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>)	r   r_   r`   ra   r   r   r}   r   	enumerate)r:   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   TextrT   r   ZTotalr   r   r   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)r:   r  rf   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knowledgr   r  )r!   Zlegend1c                 s   r  r   r  )r   actualrf   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)r:   r  r   Z	plot_barhZexpected_yticklabelsr   r   r   *test_barh_plot_labels_mixed_integer_string  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!   rM   )
r   _matplotlibtools_has_externally_shared_axisr\   r]   figurer^   add_subplottwinxr:   r*   figplotsr   r   r   &test_has_externally_shared_axis_x_axis     

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"   rM   )
r   r  r  r  r\   r]   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  r\   r]   r  r^   r  r   r   r   )r:   r*   r  r  r+   r   r   r   4test_has_externally_shared_axis_invalid_compare_axisD  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   rM   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   green)r<   rw   yellow)r   r_   r`   ra   rb   r\   r]   r  r^   r  r  r   Z
set_xlabelr   r   Zget_visible)r:   r   r  r  Ztwin_ax1Ztwin_ax2r   r   r   test_externally_shared_axesU  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#   )r:   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  )r:   r  rf   r(  r   r   r    test_bar_plt_xaxis_intervalrange  s   z3TestDataFramePlots.test_bar_plt_xaxis_intervalrangeN)/rE   rF   rG   r   rH   rI   rg   ri   Zslowrq   r   r_   r`   ra   rb   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'  r)  r+  r   r   r   r   rJ   c   s    



	








			
0rJ   ) __doc__numpyr_   r   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   r   r   r   r   Zpandas._testingZ_testingr6   Zpandas.tests.plotting.commonr   r	   r
   r   r   rZ   r\   r   Zskip_if_mplr   r,   r-   rJ   r   r   r   r   <module>   s     


"