
    %Whc                     l   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 Zd Z e	dgddd	g
      d        Z e	dgddd      d        Z e	dgddd      d        Z e	dgdd      d        Z e	dgddd      d        Z e	dgddd      d        Z e	dgddd      d        Zd Zd Zd  Zy)!    N)assert_array_almost_equal)image_comparisonc                  v    t         j                  ddddddf   \  } }d|dz  z
  | z   }d|z   | dz  z
  }|| ||fS )N   y              Y@y              i@      )npmgrid)YXUVs       Z/var/www/html/jupyter_env/lib/python3.12/site-packages/matplotlib/tests/test_streamplot.pyvelocity_fieldr   	   sU    88BqIr!Dy()DAq
QT	AA	A1AaA:    c                  h   t        j                  ddd      } t        j                  ddd      }t        j                  | |      \  }}d}t        j                  |      | z  t        j                  |      |z  z
  }t        j                  |      | z  t        j                  |      |z  z   }| |||fS )Ng      g      @   d   g?)r   linspacemeshgridcossin)xyr   r   ar   r   s          r   swirl_velocity_fieldr      s    
CS!A
CS!A;;q!DAqA
q	aR266!9q=(A
q	aR266!9q=(AaA:r   streamplot_startpointsTmpl20png)remove_textstyle
extensionsc                     t               \  } }}}t        j                  t        j                  | j	                         | j                         d      t        j                  |j	                         |j                         d            \  }}t        j                  |j                         |j                         g      }t        j                  | ||||       t        j                  ||d       y )N   )start_pointsok)r   r   r   r   minmaxcolumn_stackravelplt
streamplotplot)r   r   r   r   start_xstart_yr'   s          r   test_startpointsr2      s      !JAq!Q{{2;;quuw#C#%;;quuw#CEGW??GMMOW]]_#EFLNN1aAL9HHWgt$r   zstreamplot_colormap.pnggI+?)r"   r#   tolc            
          t               \  } }}}t        j                  | ||||ddt        j                  j                         t        j
                          y )Ng333333?r	   )colordensity	linewidthcmap)r   r-   r.   cmautumncolorbar)r   r   r   r   s       r   test_colormapr<   %   sB      !JAq!QNN1aAQq'LLNr   streamplot_linewidthgMbp?c            	          t               \  } }}}t        j                  ||      }d|z  |j                         z  }t	        j
                         j                         }|j                  | |||ddgd|       y )Nr&   g      ?r
   k)r6   r5   r7   )r   r   hypotr*   r-   figuresubplotsr.   )r   r   r   r   speedlwaxs          r   test_linewidthrF   .   si      !JAq!QHHQNE	
UUYY[	 B				 BMM!Q1sAhcRMHr   zstreamplot_masks_and_nans.png)r"   r#   c            	         t               \  } }}}t        j                  |j                  t              }d|ddddf<   t        j
                  |d dd df<   t        j                  j                  ||      }t        j                         j                         }t        j                  d	
      5  |j                  | ||||t        j                  j                         d d d        y # 1 sw Y   y xY w)N)dtyper
   (   <   P   x      )maskignore)invalid)r5   r8   )r   r   zerosshapeboolnanmaarrayr-   rA   rB   errstater.   r9   Blues)r   r   r   r   rN   rE   s         r   test_masks_and_nansrY   8   s      !JAq!Q88AGG4(DDB3&&Acrc3B3hK
AD!A				 B	X	& >
aAq=> > >s   20C++C4zstreamplot_maxlength.pnggS?c            
      (   t               \  } }}}t        j                         j                         }|j	                  | |||dddggdd       |j                         d   |j                         d   cxk(  rdk(  sJ  J |j                  dd	
       y )N      $@              ?r	   )	maxlengthr'   r7   r6   r   r   Ng\bw
@Ngi@xlimylimr   r-   rA   rB   r.   get_xlimget_ylimsetr   r   r   r   rE   s        r   test_maxlengthri   E   s     &'JAq!Q				 BMM!Q1B9+q  *;;=b 16Q66666FF*1JFKr   z"streamplot_maxlength_no_broken.pngc                  *   t               \  } }}}t        j                         j                         }|j	                  | |||dddggddd	       |j                         d   |j                         d   cxk(  rdk(  sJ  J |j                  d	d
       y )Nr[   r\   r]   r	   F)r^   r'   r7   r6   broken_streamlinesr   r   r_   r`   ra   rd   rh   s        r   test_maxlength_no_brokenrl   Q   s     &'JAq!Q				 BMM!Q1B9+qU  D;;=b 16Q66666FF*1JFKr   zstreamplot_direction.pngg㥛 ?c                  d    t               \  } }}}t        j                  | |||ddddggdd	       y )Nbackwardr]   r\   r	   )integration_directionr^   r'   r7   r6   )r   r-   r.   )r   r   r   r   s       r   test_directionrp   ]   s:     &'JAq!QNN1aAZ b	{+r   c                     t        j                         } t        j                  ddd      }t        j                  ddd      }t        j                  ||      \  }}t        j                         j                  dd      | j                  z   }t        j                  ||t        j                  |      t        j                  |      |       t        | j                  j                  d	d
       y )N
   rM             )	transform)rM            r
   )decimal)r-   axesr   r   r   mtransformsAffine2D	translate	transDatabarbsr   r   r   dataLimbounds)rE   r   r   transs       r   test_streamplot_limitsr   f   s    	B
BBA
B2A;;q!DAq  ",,R4r||CEIIaBFF1IrvvayE: bjj//&')r   c                     t        j                  d      } t        j                  d      }t        j                  ddgddgg      }t        j                  ddgddgg      }t	        j
                  t        d      5  t        j                  ||| |       d d d        t        j                  ddgddgg      }t        j                  ddgddgg      }t	        j
                  t        d      5  t        j                  ||| |       d d d        t        j                  ddgddgg      }t        j                  ddgddgg      }t        j                  ||| |       t        j                  ddg      }t        j                  ddggg      }t	        j
                  t        d	      5  t        j                  ||| |       d d d        t        j                  d
      } t        j                  d
      }t        j                  g d      }t        j                  g d      }t	        j
                  t        d      5  t        j                  ||| |       d d d        t        j                  g d      }t        j                  g d      }t	        j
                  t        d      5  t        j                  ||| |       d d d        y # 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N)r	   r	   rs   rM   ry   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   )r   rs   rM   )r   rs   ry   z!'y' values must be equally spaced)r   rM   rI   )r   rM   rs   z'y' must be strictly increasing)	r   onesrQ   rV   pytestraises
ValueErrorr-   r.   )uvr   r   s       r   test_streamplot_gridr   t   sp   
A
A 	2r(RH%&A
2r(RH%&A	z)H	I #q!Q"# 	2r(RH%&A
2r(RH%&A	z)K	L #q!Q"# 	2r(RH%&A
2r(RH%&ANN1aA 	!RA
Ar7)A	z *8 
9 #q!Q"#
 	A
A
A
A	z)L	M #q!Q"# 	A
A	z)J	K #q!Q"# #E# ## ## ## ## #s<   <K.K(K"<K/&K;KK"K,/K8;Lc            
         t        j                  t        j                  d      t        j                  d      t        j                  dt        j
                        t        j                  dt        j
                        t        j                  j                  dd             t        j                  t        d      t        d      t        j                  j                  dd      t        j                  j                  dd             y )Nr   r   )r5   )	r-   r.   r   arangefullrT   randomrandrange r   r   test_streamplot_inputsr      s    NN299Q<1776266*BGGFBFF,C1-/ NN58U1X99>>!Q'1)=?r   )numpyr   numpy.testingr   r   matplotlib.pyplotpyplotr-   matplotlib.testing.decoratorsr   matplotlib.transforms
transformsr~   r   r   r2   r<   rF   rY   ri   rl   rp   r   r   r   r   r   r   <module>r      sA    3   : + +,$g#W&%&% ,-4w )*GII 23"'3>3> -."'u>L>L 78"'u>L>L -."'u>+>+)+#\?r   