a
    ëÝEbÅ*  ã                   @   sª  d dl Z d dlZd dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZ d dlmZ dJdd„Ze	d	gd
d�dd„ ƒZe	dgƒdd„ ƒZe	dgƒdd„ ƒZe	dgddd�dd„ ƒZe	dgƒdd„ ƒZe	dgƒdd„ ƒZe	d gd
d�d!d"„ ƒZe	d#gƒd$d%„ ƒZe	d&gƒd'd(„ ƒZd)d*„ ZdKd.d/„Ze	d0d1gƒd2d3„ ƒZd4d5„ Zej  !d6d7d8g¡d9d:„ ƒZ"d;d<„ Z#d=d>„ Z$d?d@„ Z%dAdB„ Z&dCdD„ Z'ej  (dE¡dFdG„ ƒZ)dHdI„ Z*dS )Lé    N)Úassert_array_equal)Úimage_comparison)ÚAnchoredOffsetboxÚDrawingArea)Ú	Rectangleé   c                 C   sH   |   ddg¡ | jdd� | jd|d� | jd|d� | jd|d� d S )	Né   é   é   ©Znbinsúx-label©Úfontsizeúy-labelZTitle)ÚplotÚlocator_paramsÚ
set_xlabelÚ
set_ylabelÚ	set_title)Úaxr   © r   úa/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/matplotlib/tests/test_tightlayout.pyÚexample_plot   s
    r   Ztight_layout1gffffffþ?)Útolc                  C   s$   t  ¡ \} }t|dd� t  ¡  dS )z'Test tight_layout for a single subplot.é   r   N©ÚpltÚsubplotsr   Útight_layout©Úfigr   r   r   r   Útest_tight_layout1   s    r!   Ztight_layout2c                  C   sJ   t jddd�\} \\}}\}}t|ƒ t|ƒ t|ƒ t|ƒ t  ¡  dS )ú(Test tight_layout for multiple subplots.r	   )ZnrowsZncolsNr   )r    Úax1Úax2Úax3Úax4r   r   r   Útest_tight_layout2   s    r'   Ztight_layout3c                  C   sB   t  d¡} t  d¡}t  d¡}t| ƒ t|ƒ t|ƒ t  ¡  dS )r"   éÝ   éß   éz   N)r   Úsubplotr   r   )r#   r$   r%   r   r   r   Útest_tight_layout3)   s    


r,   Ztight_layout4)z2.5.5z2.6.1ç¸…ëQ¸Ž?)Zfreetype_versionr   c                  C   sj   t  dd¡} t jdddd�}t jddddd�}t jdddd	�}t| ƒ t|ƒ t|ƒ t|ƒ t  ¡  d
S )z#Test tight_layout for subplot2grid.)r
   r
   ©r   r   )r   r   r	   )Úcolspan)r   r   ©r/   Úrowspan)r   r	   )r1   N)r   Úsubplot2gridr   r   )r#   r$   r%   r&   r   r   r   Útest_tight_layout45   s    r3   Ztight_layout5c                  C   s2   t  ¡ } t d¡ d¡}| j|dd� t  ¡  dS )zTest tight_layout for image.éd   )é
   r5   Únone)ÚinterpolationN)r   r+   ÚnpZarangeZreshapeZimshowr   )r   Zarrr   r   r   Útest_tight_layout5D   s    r9   Ztight_layout6c            	   	   C   sb  t  ¡ ��B t  dt¡ t ¡ } tj dd¡}|  	|d ¡}|  	|d ¡}t
|ƒ t
|ƒ |j| g d¢d� tj dd¡}|D ]*}|  	|¡}t
|ƒ | d¡ | d¡ q~|jd	d
d� |j| g d¢dd� t|j|jƒ}t|j|jƒ}|j| dd||j  dd|j|  gd� |j| dd||j  dd|j|  gdd� W d  ƒ n1 �sT0    Y  dS )zTest tight_layout for gridspec.Úignorer	   r   r   )r   r   ç      à?r   ©Úrectr
   Ú r   r   r   )r;   r   r   r   gÍÌÌÌÌÌÜ?)r=   Zh_padNr;   )ÚwarningsÚcatch_warningsÚsimplefilterÚUserWarningr   ÚfigureÚmplZgridspecZGridSpecÚadd_subplotr   r   r   r   ÚminÚtopÚmaxÚbottom)	r    Zgs1r#   r$   Zgs2Ússr   rG   rI   r   r   r   Útest_tight_layout6M   s6    

ÿÿþrK   Ztight_layout7c                  C   sr   d} t  ¡ \}}| ddg¡ |jdd� |jd| d� |jd| d� |jd	d
| d� |jdd| d� t  ¡  d S )Nr   r   r	   r
   r   r   r   r   z
Left TitleÚleft)Úlocr   zRight TitleÚright)r   r   r   r   r   r   r   r   )r   r    r   r   r   r   Útest_tight_layout7w   s    rO   Ztight_layout8c                  C   s.   t  ¡ } |  ddi¡ |  ¡ }t|dd� dS )ú#Test automatic use of tight_layout.Úpadçš™™™™™¹?r   r   N)r   rC   Zset_tight_layoutrE   r   r   r   r   r   Útest_tight_layout8…   s    rS   Ztight_layout9c                  C   s.   t  dd¡\} }|d d  d¡ t  ¡  d S )Nr	   r   F)r   r   Úset_visibler   )ÚfZaxarrr   r   r   Útest_tight_layout9Ž   s    rV   c                  C   sŒ  t  ¡ } |  d¡}|jjdddd� |jjdddd� |jjdddddd	� |jjdddddd	� |jjd
gdd� |jjd
gdd� |  d¡}|jjdddd� |jjdddd� |  d¡}|jjdddd� |jjdddd� |  d¡}|jjdddd� |jjdddd� t  ¡  ddgddggddgddggddgddggddgddggg}t| j	ƒD ](\}}t
t | ¡  ¡ d¡|| ƒ �q^dS )rP   r(   Úouté   r
   )ÚtickdirÚlengthÚwidthé    TÚminor)rY   rZ   r[   Ztick1OnÚwhichr   )r]   éÞ   Úinr)   Zinoutéà   g²�ï§ÆK·?g�•C‹lã?gƒÀÊ¡E¶Û?gB`åÐ"Ûí?gºI+‡â?g/Ý$�í?gìQ¸…ëÁ?gmçû©ñÒÝ?N)r   rC   rE   ZxaxisZset_tick_paramsZyaxisZ	set_ticksr   Ú	enumerateÚaxesr   r8   ÚroundÚget_positionZ
get_points)r    r   ZansÚnnr   r   r   Útest_outward_ticks—   s>    

ÿ
ÿ


ýÿrg   r5   rR   Úblackc              
   C   s°   |d|  }}| | f| df| |f|dfd|f||fd| f|| fd| fg	}|D ]P}t ||ƒ}td|||dddd�}	| |	¡ td|d	d|| jd	d
�}
|  |
¡ qZ|
S )z&
    Surround ax with OffsetBoxes
    r   r;   r.   ÚNoner   F)r[   ÚheightZ	facecolorZ	edgecolorZ	linewidthZantialiasedÚcenterg        )rM   ÚchildrQ   ZframeonZbbox_to_anchorZbbox_transformZ	borderpad)r   r   Z
add_artistr   Z	transAxes)r   ÚsizeÚmarginÚcolorÚmÚmpZanchor_pointsÚpointÚdaÚ
backgroundZanchored_boxr   r   r   Úadd_offsetboxes¸   s4    þ
û
ùru   Ztight_layout_offsetboxes1Ztight_layout_offsetboxes2c                     sŠ   d ‰‰g d¢‰ ddg ‰‰‡ ‡‡‡‡fdd„} | ƒ }t  ¡  | ƒ }|ˆd d ˆ… D ]&}| ¡ D ]}t|tƒrb| d¡ qbqVt  ¡  d S )Nr	   )ÚredÚblueÚgreenÚyellowr   r   c                     sL   t  ˆˆ¡\} }|j}t|ˆ ƒD ]&\}}|jˆˆ|d� t|d|d� q |S )N)ro   é   )r   r   ZflatÚzipr   ru   )Ú_Úaxsr   ro   ©ÚcolorsÚcolsÚrowsÚxÚyr   r   Ú	_subplotsè   s    z0test_tight_layout_offsetboxes.<locals>._subplotsF)r   r   Zget_childrenÚ
isinstancer   rT   )r„   r}   r   rl   r   r~   r   Útest_tight_layout_offsetboxesÖ   s    	
r†   c                  C   s   t  ¡ } |  ¡  dS )zETest that tight layout doesn't cause an error when there are no axes.N)r   Zgcfr   )r    r   r   r   Útest_empty_layoutþ   s    r‡   ÚlabelZxlabelZylabelc                 C   s(   t jdd�\}}|jf i | di¤Ž dS )z8Test that no warning emitted when xlabel/ylabel too big.©r
   r	   ©ZfigsizeZdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaN)r   r   Úset)rˆ   r    r   r   r   r   Útest_verybig_decorators  s    rŒ   c                  C   s4   t jdddd�\} }|d  d¡ |d  d¡ dS )	z+Test that doesn't warn when xlabel too big.r   r	   r‰   rŠ   r   ZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbN)r   r   r   ©r    r}   r   r   r   Útest_big_decorators_horizontal  s    rŽ   c                  C   s4   t jdddd�\} }|d  d¡ |d  d¡ dS )	z+Test that doesn't warn when ylabel too big.r	   r   r‰   rŠ   r   ZaaaaaaaaaaaaaaaaaaaaZbbbbbbbbbbbbbbbbbbbbN)r   r   r   r�   r   r   r   Útest_big_decorators_vertical  s    r�   c                   C   sT   t  dd¡ t jddddd� t t¡� t  ¡  W d   ƒ n1 sF0    Y  d S )N)é   é   r.   )r‘   r‘   )r   r
   r
   r‘   r0   )r   r2   ÚpytestÚwarnsrB   r   r   r   r   r   Útest_badsubplotgrid  s    r”   c                  C   sÎ   t jdd�\} }| ddg¡ | ddg¡ |jddddd	� | ¡ }t t¡�0 t  	¡  | ¡ }|j
|j
ksrJ ‚W d   ƒ n1 s†0    Y  t t¡�  t j	g d
¢d� W d   ƒ n1 sÀ0    Y  d S )NT©r   r   r   zBIG LONG STRING)g      ô?r	   )g      %@g      ü?F)ZxyZxytextZannotation_clip)r   r   çš™™™™™é?r–   r<   )r   r   Zset_xlimZset_ylimZannotatere   r’   r“   rB   r   r[   )r    r   Úp1Úp2r   r   r   Útest_collapsed"  s    
ÿ.r™   c                  C   sJ   t jdd�\} }|  d¡}| d¡}| j ¡  | ¡ j| ¡ jksFJ ‚d S )NTr•   ZfooÚbar)	r   r   Zsuptitler   ZcanvasZdrawZget_window_extentÚy0Úy1)r    r   ÚstÚtr   r   r   Útest_suptitle7  s
    


rŸ   Zpdfc                    s@   t jjj‰ ‡ fdd„}|  t jjd|¡ t ¡ \}}| ¡  d S )Nc                    s.   t | tjjjƒsJ ‚ˆ | g|¢R i |¤Ž d S )N)r…   rD   ÚbackendsZbackend_pdfZRendererPdf)ÚselfÚargsÚkwargs©Zunpatched_initr   r   Ú__init__C  s    z'test_non_agg_renderer.<locals>.__init__r¥   )rD   Zbackend_basesZRendererBaser¥   Úsetattrr   r   r   )ZmonkeypatchZrecwarnr¥   r    r   r   r¤   r   Útest_non_agg_renderer?  s
    
r§   c                  C   s    t  dd¡\} }|d jddgddgddgd�}|d  ¡ }|  |jd |jd|jg¡}| j||d� t	j
td	d
�� |  ¡  W d   ƒ n1 s’0    Y  d S )Nr   r	   r   r‘   )Úcg{®Gázt?r-   )ÚcaxzThis figure includes Axes)Úmatch)r   r   Zscatterre   Zadd_axesÚx1r›   rj   Zcolorbarr’   r“   rB   r   )r    rc   ZptsZax_rectr©   r   r   r   Útest_manual_colorbarN  s     ÿr¬   )r   )r5   rR   rh   )+r?   Únumpyr8   Znumpy.testingr   r’   Z
matplotlibrD   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.offsetboxr   r   Zmatplotlib.patchesr   r   r!   r'   r,   r3   r9   rK   rO   rS   rV   rg   ru   r†   r‡   ÚmarkZparametrizerŒ   rŽ   r�   r”   r™   rŸ   Úbackendr§   r¬   r   r   r   r   Ú<module>   sX   




ÿ


)


!


'
	

