
    g[                     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       ]/var/www/dash_apps/app1/venv/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   streamplot_colormapgI+?)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)r7   r6   r8   )r   r   hypotr*   r-   figuresubplotsr.   )r   r   r   r   speedlwaxs          r   test_linewidthrG   .   si      !JAq!QHHQNE	
UUYY[	 B				 BMM!Q1sAhcRMHr   streamplot_masks_and_nans)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)r6   r9   )r   r   zerosshapeboolnanmaarrayr-   rB   rC   errstater.   r:   Blues)r   r   r   r   rP   rF   s         r   test_masks_and_nansr[   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'   r8   r7   r   r   Ng\bw
@Ngi@xlimylimr   r-   rB   rC   r.   get_xlimget_ylimsetr   r   r   r   rF   s        r   test_maxlengthrk   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'   r8   r7   broken_streamlinesr   r   ra   rb   rc   rf   rj   s        r   test_maxlength_no_brokenrn   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'   r8   r7   )r   r-   r.   )r   r   r   r   s       r   test_directionrr   ]   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
   rO             )	transform)rO            r
   )decimal)r-   axesr   r   r   mtransformsAffine2D	translate	transDatabarbsr   r   r   dataLimbounds)rF   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	   ru   rO   r{   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   ru   rO   )r   ru   r{   z!'y' values must be equally spaced)r   rO   rK   )r   rO   ru   z'y' must be strictly increasing)	r   onesrS   rX   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   )r6   )	r-   r.   r   arangefullrV   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=   rG   r[   rk   rn   rr   r   r   r   r   r   r   <module>r      sA    3   : + +,$g#W&%&% ()t7 )*GII ./"'3>3> -."'u>L>L 78"'u>L>L -."'u>+>+)+#\?r   