U
    Âmœd[  ã                   @   s"  d dl Zd dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZ dd„ Zdd„ Ze	dgd	d
dgd�dd„ ƒZe	dgd	d
dd�dd„ ƒZe	dgd	d
dd�dd„ ƒZe	dgd	d
d�dd„ ƒZe	dgd	d
dd�dd„ ƒZe	d gd	d
dd�d!d"„ ƒZe	d#gd	d
d$d�d%d&„ ƒZd'd(„ Zd)d*„ Zd+d,„ ZdS )-é    N)Úassert_array_almost_equal)Úimage_comparisonc                  C   sJ   t jddd…ddd…f \} }d|d  |  }d| | d  }|| ||fS )Néýÿÿÿé   y              Y@y              i@éÿÿÿÿé   é   )ÚnpZmgrid)ÚYÚXÚUÚV© r   úY/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_streamplot.pyÚvelocity_field	   s    r   c                  C   sx   t  ddd¡} t  ddd¡}t  | |¡\}}d}t  |¡|  t  |¡|  }t  |¡|  t  |¡|  }| |||fS )Ng      Àg      @éÈ   éd   gš™™™™™¹?)r	   ÚlinspaceÚmeshgridÚcosÚsin)ÚxÚyr   r
   Úar   r   r   r   r   Úswirl_velocity_field   s    r   Zstreamplot_startpointsTZmpl20Zpng)Úremove_textÚstyleÚ
extensionsc                  C   s~   t ƒ \} }}}t t |  ¡ |  ¡ d¡t | ¡ | ¡ d¡¡\}}t | ¡ | ¡ g¡}tj	| ||||d� t 
||d¡ d S )Né   )Ústart_pointsÚok)r   r	   r   r   ÚminÚmaxZcolumn_stackZravelÚpltÚ
streamplotZplot)r   r
   r   r   Zstart_xZstart_yr   r   r   r   Útest_startpoints   s    ÿr%   Zstreamplot_colormapgºI+‡–?)r   r   Ztolc               
   C   s8   t ƒ \} }}}tj| ||||ddtjjd� t ¡  d S )Ng333333ã?r   )ÚcolorÚdensityÚ	linewidthÚcmap)r   r#   r$   ÚcmÚautumnZcolorbar)r   r
   r   r   r   r   r   Útest_colormap%   s
    ÿr,   Zstreamplot_linewidthgü©ñÒMb`?c               	   C   sV   t ƒ \} }}}t ||¡}d| | ¡  }t ¡  ¡ }|j| |||ddgd|d� d S )Nr   g      à?r   Úk)r'   r&   r(   )r   r	   Úhypotr"   r#   ÚfigureÚsubplotsr$   )r   r
   r   r   ÚspeedZlwÚaxr   r   r   Útest_linewidth.   s
    r3   Zstreamplot_masks_and_nans)r   r   c               	   C   sš   t ƒ \} }}}tj|jtd�}d|dd…dd…f< tj|d d…d d…f< tjj||d�}t 	¡  
¡ }tjd	d
��  |j| ||||tjjd� W 5 Q R X d S )N)Zdtyper   é(   é<   éP   éx   é   )ÚmaskÚignore)Úinvalid)r&   r)   )r   r	   ÚzerosÚshapeÚboolÚnanÚmaÚarrayr#   r/   r0   Zerrstater$   r*   ZBlues)r   r
   r   r   r9   r2   r   r   r   Útest_masks_and_nans8   s    rB   zstreamplot_maxlength.pngg‡ÙÎ÷SÓ?c               
   C   sv   t ƒ \} }}}t ¡  ¡ }|j| |||dddggddd� | ¡ d | ¡ d   kr^dksdn t‚|jdd	d
� d S )Nç      $@ç        ç      ø?r   )Ú	maxlengthr   r(   r'   r   r   ©Ngž\‚bw
@©Ng‡ËÇi @©ZxlimZylim©	r   r#   r/   r0   r$   Zget_xlimZget_ylimÚAssertionErrorÚset©r   r   r   r   r2   r   r   r   Útest_maxlengthE   s     ÿ*rN   z"streamplot_maxlength_no_broken.pngc                  C   sx   t ƒ \} }}}t ¡  ¡ }|j| |||dddggdddd�	 | ¡ d | ¡ d   kr`dksfn t‚|jd	d
d� d S )NrC   rD   rE   r   F)rF   r   r(   r'   Zbroken_streamlinesr   r   rG   rH   rI   rJ   rM   r   r   r   Útest_maxlength_no_brokenQ   s      ÿ*rO   zstreamplot_direction.pnggã¥›Ä °²?c                  C   s4   t ƒ \} }}}tj| |||ddddggddd�	 d S )NZbackwardrE   rD   r   )Zintegration_directionrF   r   r(   r'   )r   r#   r$   )r   r   r   r   r   r   r   Útest_direction]   s      þrP   c                  C   s€   t  ¡ } t ddd¡}t ddd¡}t ||¡\}}t ¡  dd¡| j }t j	||t 
|¡t |¡|d� t| jjd	d
d� d S )Néûÿÿÿé
   r8   éþÿÿÿé   é   é    )Z	transform)r8   é   é   é   r   )Údecimal)r#   Zaxesr	   r   r   ÚmtransformsZAffine2DÚ	translateZ	transDataZbarbsr   r   r   ZdataLimZbounds)r2   r   r   Ztransr   r   r   Útest_streamplot_limitsf   s     
ÿr]   c               	   C   sò  t  d¡} t  d¡}t  ddgddgg¡}t  ddgddgg¡}tjtdd�� t ||| |¡ W 5 Q R X t  ddgddgg¡}t  ddgddgg¡}tjtdd�� t ||| |¡ W 5 Q R X t  ddgddgg¡}t  ddgddgg¡}t ||| |¡ t  ddg¡}t  ddggg¡}tjtd	d�� t ||| |¡ W 5 Q R X t  d
¡} t  d
¡}t  dddg¡}t  dddg¡}tjtdd�� t ||| |¡ W 5 Q R X t  dddg¡}t  dddg¡}tjtdd�� t ||| |¡ W 5 Q R X d S )N)r   r   rR   r8   rW   zThe rows of 'x' must be equal)Úmatchz The columns of 'y' must be equalr   z$'y' can have at maximum 2 dimensions©r   r   z!'y' values must be equally spacedr4   z'y' must be strictly increasing)	r	   Zonesr<   rA   ÚpytestZraisesÚ
ValueErrorr#   r$   )ÚuÚvr   r   r   r   r   Útest_streamplot_gridt   s6    



rd   c                	   C   sn   t jt d¡t d¡t dtj¡t dtj¡tj dd¡d� t  tdƒtdƒtj dd¡tj dd¡¡ d S )Nr   r_   )r&   )	r#   r$   r	   ZarangeÚfullr?   ÚrandomZrandÚranger   r   r   r   Útest_streamplot_inputs¢   s     þ ÿrh   )Únumpyr	   Znumpy.testingr   r`   Zmatplotlib.pyplotZpyplotr#   Zmatplotlib.testing.decoratorsr   Zmatplotlib.transformsZ
transformsr[   r   r   r%   r,   r3   rB   rN   rO   rP   r]   rd   rh   r   r   r   r   Ú<module>   sZ   

ÿ
	
ÿ

ÿ
 ÿ
  ÿ

  ÿ

  ÿ
.