o
    ¡:´a€  ã                   @   s   d dl Z d dlmZ d dlmZmZmZ d dlmZ	 d dl
mZmZ d dlZd dlmZ d dlZd dlZeƒ dd„ ƒZdd„ Zed	gd
ddd„ ƒZdd„ Zdd„ Zedgd
ddd„ ƒZdd„ Zdd„ Zdd„ Zedgd
ddddd „ ƒZd!d"„ Zed#gd
dd$d%d&„ ƒZd'd(„ Zd)d*„ Z dS )+é    N)ÚLogTransformÚInvertedLogTransformÚSymmetricalLogTransform)Úcheck_figures_equalÚimage_comparison)Úassert_allclosec                 C   sz   | j dddd}| d¡ | d¡ | ¡ }| ¡ }|j dddd}|j||d | ddg|d¡ | |ddgd¡ d S )Néz   ÚlogÚsymlog)ÚyscaleZxscalegš™™™™8@)ÚxlimÚylimÚb)Zadd_subplotZaxvlineZaxhlineÚget_xlimÚget_ylimÚsetÚplot)Zfig_testZfig_refZax_testr   r   Zax_ref© r   ú=/usr/lib/python3/dist-packages/matplotlib/tests/test_scale.pyÚtest_log_scales   s   

r   c                  C   s   t dddƒ} |  ¡ }t ddd¡}| |  |¡¡}t||ƒ t|ƒt|ƒks(J ‚tj|d< | |  |¡¡}t||ƒ t|ƒt|ƒksDJ ‚tj 	|¡}| |  |¡¡}t||ƒ t|ƒt|ƒksaJ ‚tjj
|d< | |  |¡¡}t||ƒ t|ƒt|ƒks~J ‚d S )	Né
   é   é   g      ø¿é   ç      à?é   é   )r   ÚinvertedÚnpÚarangeZtransform_non_affiner   ÚtypeÚnanZmaÚarrayZmasked)ZsltZsltiÚxÚoutr   r   r   Útest_symlog_mask_nan   s$   




r%   zlogit_scales.pngT)Úremove_textc                  C   sv   t  ¡ \} }t g d¢¡}d| }| ||¡ | d¡ | d¡ | | j 	¡ ¡}t 
|j¡s1J ‚t 
|j¡s9J ‚d S )N)gü©ñÒMbP?gú~j¼t“h?ç{®Gáz„?g¸…ëQ¸ž?gš™™™™™¹?çš™™™™™É?g333333Ó?gš™™™™™Ù?r   g333333ã?gffffffæ?gš™™™™™é?gÍÌÌÌÌÌì?g
×£p=
ï?g®Gáz®ï?g•C‹lçï?g+‡ÙÎ÷ï?g      ð?ZlogitT)ÚpltÚsubplotsr   r"   r   Ú
set_xscaleZgridZget_tightbboxÚcanvasZget_rendererZisfiniteZx0Zy0)ÚfigÚaxr#   ÚyZbboxr   r   r   Útest_logit_scales8   s   

r0   c                  C   sx   t  d¡\} }t d¡}t d¡d }| ||¡ t ¡ }| j|dd t ¡ }| j|dd t ¡ }| j|dd dS )zIssue #1799r   r   Zpdf)ÚformatZepsZsvgN)r)   r*   r   r   ÚscatterÚioÚBytesIOZsavefig)r-   r.   r#   r/   Úbufr   r   r   Útest_log_scatterI   s   
r6   c                  C   s2   t  ¡ \} }|jdt g d¢¡d | j ¡  d S )Nr	   )r   r   r   )Zsubs)r)   r*   Ú
set_yscaler   r"   r,   Údraw©r-   r.   r   r   r   Útest_logscale_subs\   s   r:   zlogscale_mask.pngc                  C   sJ   t  ddd¡} t ¡ \}}| t  | d  ¡¡ |j ¡  |jdd d S )Nr   é2   ié  r   r	   )r   )	r   Zlinspacer)   r*   r   Úexpr,   r8   r   )Úxsr-   r.   r   r   r   Útest_logscale_maskc   s
   
r>   c               	   C   sR   t  ¡ \} }dD ]}t t¡ |j|dd W d   ƒ n1 s!w   Y  qd S )N)Zlinearr	   r
   Úmask)Zfoo)r)   r*   ÚpytestZraisesÚ	TypeErrorr7   ©r-   r.   Úscaler   r   r   Útest_extra_kwargs_raiseo   s   ÿ€ÿrD   c                  C   sX   t  ¡ \} }| d¡ |j|j ¡   ¡ }tdd ¡ }t|tƒs#J ‚|j	dks*J ‚d S )Nr	   r   )Úbase)
r)   r*   r7   Z	transAxesÚ	transDatar   r   Ú
isinstancer   rE   )r-   r.   ZtformZinverted_transformr   r   r   Útest_logscale_invert_transformw   s   
rH   c                  C   s4   t  ¡ \} }| d¡ t|jƒ ttdddƒ d S )Nr	   r   Zclip©Únonpositive)r)   r*   r7   ÚreprrF   r   r9   r   r   r   Útest_logscale_transform_reprƒ   s   

rL   zlogscale_nonpos_values.pngg{®Gáz”?Zmpl20)r&   ZtolÚstylec                  C   s  t j d¡ t jjtdƒd} t dd¡\}\\}}\}}|j| ddd | d¡ |j| ddd |jdd	d
 t  	ddd¡}t  
| ¡}dd|  t  d| ¡ t  
| ¡ }| ||| || ¡ | d¡ t  dd¡}	|	d }
|	d }|j|	|
|d | d¡ | d¡ d S )Ni!N,g     @@)Úsizer   )éûÿÿÿr   r   )ÚrangeZbinsr	   r?   rI   r   r'   r(   r   éÿÿÿÿr   r   )Úyerr)r   ZrandomZseedZnormalÚintr)   r*   Zhistr7   r   r<   ZcosZfill_betweenZlogspaceZerrorbarr+   )r=   r-   Zax1Zax2Zax3Zax4ZxdataZydataZedatar#   r/   rR   r   r   r   Útest_logscale_nonpos_valuesŠ   s$   
&

rT   c                  C   sd  t  ¡ \} }| tddƒtddƒ¡ | d¡ | ¡ }t t¡ |j	dd W d   ƒ n1 s1w   Y  | ¡ |ks>J ‚t t¡ |j	dd W d   ƒ n1 sTw   Y  | ¡ |ksaJ ‚| 
d¡ | ¡ }t t¡ |jdd W d   ƒ n1 s€w   Y  | ¡ |ksJ ‚t t¡ |jdd W d   ƒ n1 s£w   Y  | ¡ |ks°J ‚d S )	Nr   r   r	   )ÚleftrQ   )Úright)Zbottom)Útop)r)   r*   r2   rP   r+   r   r@   ZwarnsÚUserWarningÚset_xlimr7   r   Zset_ylim)r-   r.   Zoriginal_xlimZoriginal_ylimr   r   r   Útest_invalid_log_lims¥   s,   
ÿÿ
ÿÿrZ   zfunction_scales.png)r&   rM   c                  C   sV   dd„ } dd„ }t  ¡ \}}t dd¡}| ||¡ |jd|| fd | dd¡ d S )	Nc                 S   ó   | d S )Nr   r   ©r#   r   r   r   Úinverse¿   ó   z$test_function_scale.<locals>.inversec                 S   r[   )Nr   r   r\   r   r   r   ÚforwardÂ   r^   z$test_function_scale.<locals>.forwardr   iè  Úfunction)Z	functions)r)   r*   r   r   r   r+   rY   )r]   r_   r-   r.   r#   r   r   r   Útest_function_scale½   s   ra   c                  C   s`   t  ¡ \} }tjd d}| |¡ tjd d}| |¡ |j ¡ dks%J ‚|j ¡ dks.J ‚d S )N)Úaxisr	   )	r)   r*   ÚmscaleÚLogScaler+   r7   ZxaxisZ	get_scaleZyaxisrB   r   r   r   Útest_pass_scaleÎ   s   

re   c                  C   sH   t jddd} t | ¡}t|  ¡ ƒt| ¡ ƒksJ ‚| j|jus"J ‚d S )Nr#   r   )rb   rE   )rc   rd   ÚcopyZdeepcopyÚstrZget_transformZ
_transform)ZscZsc2r   r   r   Útest_scale_deepcopyÙ   s   
rh   )!rf   Zmatplotlib.pyplotZpyplotr)   Zmatplotlib.scaler   r   r   rC   rc   Zmatplotlib.testing.decoratorsr   r   Znumpyr   Znumpy.testingr   r3   r@   r   r%   r0   r6   r:   r>   rD   rH   rL   rT   rZ   ra   re   rh   r   r   r   r   Ú<module>   s<    


ÿ

