B
    ·ôJd€  ã               @   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   úM/var/www/html/venv/lib/python3.7/site-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sPt‚tj|d< | |  |¡¡}t||ƒ t|ƒt|ƒksˆt‚tj	 
|¡}| |  |¡¡}t||ƒ t|ƒt|ƒksÂt‚tj	j|d< | |  |¡¡}t||ƒ t|ƒt|ƒksüt‚d S )	Né
   é   é   g      ø¿é   g      à?é   é   )r   ÚinvertedÚnpÚarangeZtransform_non_affiner   ÚtypeÚAssertionErrorÚnanÚmaÚarrayZmasked)ZsltZsltiÚxÚoutr   r   r   Útest_symlog_mask_nan   s$    




r&   zlogit_scales.pngT)Úremove_textc              C   s”   t  ¡ \} }t ddddddddd	d
dddddddg¡}d| }| ||¡ | d¡ | d¡ | | j 	¡ ¡}t 
|j¡s€t‚t 
|j¡st‚d S )Ngü©ñÒMbP?gú~j¼t“h?g{®Gáz„?g¸…ëQ¸ž?gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?g      à?g333333ã?gffffffæ?gš™™™™™é?gÍÌÌÌÌÌì?g
×£p=
ï?g®Gáz®ï?g•C‹lçï?g+‡ÙÎ÷ï?g      ð?ZlogitT)ÚpltÚsubplotsr   r#   r   Ú
set_xscaleÚgridZget_tightbboxÚcanvasZget_rendererÚisfiniteZx0r    Zy0)ÚfigÚaxr$   ÚyZbboxr   r   r   Útest_logit_scales8   s    

r1   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epsÚsvgN)r(   r)   r   r   ÚscatterÚioÚBytesIOZsavefig)r.   r/   r$   r0   Úbufr   r   r   Útest_log_scatterI   s    
r8   c              C   s4   t  ¡ \} }|jdt dddg¡d | j ¡  d S )Nr	   r   r   r   )Ú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,   r;   r   )Úxsr.   r/   r   r   r   Útest_logscale_maskc   s
    
r@   c           
   C   sB   t  ¡ \} }x0dD ](}t t¡ |j|dd W d Q R X qW d S )N)Zlinearr	   r
   Úmask)Zfoo)r(   r)   ÚpytestZraisesÚ	TypeErrorr:   )r.   r/   Úscaler   r   r   Útest_extra_kwargs_raiseo   s    
rE   c              C   sX   t  ¡ \} }| d¡ |j|j ¡   ¡ }tdd ¡ }t|tƒsFt	‚|j
dksTt	‚d S )Nr	   r   )Úbase)r(   r)   r:   Z	transAxesÚ	transDatar   r   Ú
isinstancer   r    rF   )r.   r/   ZtformZinverted_transformr   r   r   Útest_logscale_invert_transformw   s    
rI   c              C   s4   t  ¡ \} }| d¡ t|jƒ ttdddƒ d S )Nr	   r   Zclip)Únonpositive)r(   r)   r:   ÚreprrG   r   )r.   r/   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	   rA   )rJ   r   g{®Gáz„?gš™™™™™É?r   éÿÿÿÿr   r   )Úyerr)r   ÚrandomÚseedÚnormalÚintr(   r)   Úhistr:   r   r>   ÚcosZfill_betweenZlogspaceZerrorbarr*   )r?   r.   Zax1Zax2Zax3Zax4ZxdataZydataZedatar$   r0   rR   r   r   r   Útest_logscale_nonpos_valuesŠ   s$    
&

rY   c           	   C   s  t  ¡ \} }| tddƒtddƒ¡ | d¡ | ¡ }t t¡ |j	dd W d Q R X | ¡ |ksht
‚t t¡ |j	dd W d Q R X | ¡ |ksšt
‚| d¡ | ¡ }t t¡ |jdd W d Q R X | ¡ |ksÞt
‚t t¡ |jdd W d Q R X | ¡ |kst
‚d S )	Nr   r   r	   )ÚleftrQ   )Úright)Úbottom)Útop)r(   r)   r4   rP   r*   r   rB   ZwarnsÚUserWarningÚset_xlimr    r:   r   Zset_ylim)r.   r/   Zoriginal_xlimZoriginal_ylimr   r   r   Útest_invalid_log_lims¥   s$    

r`   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   s   | d S )Nr   r   )r$   r   r   r   Úinverse¿   s    z$test_function_scale.<locals>.inversec             S   s   | d S )Ng      à?r   )r$   r   r   r   ÚforwardÂ   s    z$test_function_scale.<locals>.forwardr   iè  Úfunction)Z	functions)r(   r)   r   r   r   r*   r_   )ra   rb   r.   r/   r$   r   r   r   Útest_function_scale½   s    rd   c              C   s`   t  ¡ \} }tjd d}| |¡ tjd d}| |¡ |j ¡ dksJt‚|j	 ¡ dks\t‚d S )N)Úaxisr	   )
r(   r)   ÚmscaleÚLogScaler*   r:   ZxaxisZ	get_scaler    Zyaxis)r.   r/   rD   r   r   r   Útest_pass_scaleÎ   s    

rh   c              C   sH   t jddd} t | ¡}t|  ¡ ƒt| ¡ ƒks4t‚| j|jk	sDt‚d S )Nr$   r   )re   rF   )rf   rg   ÚcopyÚdeepcopyÚstrZget_transformr    Z
_transform)ÚscZsc2r   r   r   Útest_scale_deepcopyÙ   s    
rm   )!ri   Zmatplotlib.pyplotZpyplotr(   Zmatplotlib.scaler   r   r   rD   rf   Zmatplotlib.testing.decoratorsr   r   Únumpyr   Znumpy.testingr   r5   rB   r   r&   r1   r8   r<   r@   rE   rI   rL   rY   r`   rd   rh   rm   r   r   r   r   Ú<module>   s.   