
    
3j&                       S SK r S SKrS SKrS SKrS SKJr  S SKrS SKJ	r	J
r
JrJr  S SKJr  S SKrS SKJrJrJr  S SKJr  S SKJrJr  S SKJrJr  S S	KJrJ r   S S
K!J"r"J#r#  S SK$J%r%  S SK&J'r'  S SKJ(r(  S SK)J*r+  S SK,r-\ R\                  " \SSS9r/S r0\" 5       S 5       r1\/" S/SS9S 5       r2\/" S/SS9S 5       r3\/" S/SSS9S 5       r4\/" S/SSS9S 5       r5\/" S/SSS9S 5       r6S  r7\/" S!/S\R                  S":X  a  S#OS S$9S% 5       r8\/" S&/SS9S' 5       r9S( r:\/" S)/SS9S* 5       r;\/" S+/S\" \-Rx                  Rx                  5      Rz                  S,:  a  S-OS S$9S. 5       r>S/ r?\/" S0/S\R                  " 5       S1:X  a  S OS2S$9S3 5       rA\/" S4/SS9S5 5       rB\/" S6/SS9S7 5       rC\/" S8/SS9S9 5       rD\R                  R                  S:S;/ S<Q/S=/ S>Q/S?/ S@Q//5      \" 5       SA 5       5       rG\/" SB/SCSSD9SE 5       rHSF rI\/" SG/SS9SH 5       rJ\" 5       SI 5       rKSJ rL\/" SK/SS9SL 5       rM\" 5       SM 5       rN\/" SN/SS9SO 5       rO\/" SP/SS9SQ 5       rP\/" SR/SS9SS 5       rQ\" 5       ST 5       rR\" 5       SU 5       rS\" 5       SV 5       rT\" 5       SW 5       rU\R                  R                  SXSYSZ/5      \" 5       S[ 5       5       rV\" 5       S\ 5       rW\/" S]/S^SSD9S_ 5       rX\/" S`/SS9Sa 5       rY\/" Sb/SS9Sc 5       rZ\/" Sd/SS9Se 5       r[\" Sf/SS9Sg 5       r\\/" Sh/SS9Si 5       r]\/" Sj/SS9Sk 5       r^\" 5       Sl 5       r_\" 5       Sm 5       r`\/" Sn/SS9So 5       ra\/" Sp/SSS9Sq 5       rb\" 5       Sr 5       rc\/" Ss/StSSD9Su 5       rd\/" Sv/SwSSD9Sx 5       re\/" Sy/SS9Sz 5       rf\/" S{/SS9S| 5       rg\/" S}/SS9S~ 5       rh\/" S/SS9S 5       riS rjS rk\/" S/SSS$9S 5       rl\" 5       S 5       rm\/" S/SS9S 5       rn\/" S/SS9S 5       roS rp\" 5       S 5       rqS rr\/" S/SS9S 5       rsS rt\/" S/SS9S 5       ru\/" S/SS9S 5       rv\/" S/SS9S 5       rwS rxS ry\/" S/SSS9S 5       rz\/" S/SSS9S 5       r{\/" S/SSS9S 5       r|S r}S r~S rSS jr\/" S/SS9S 5       r\/" S/SS9S 5       rS rS r\R                  R                  SS5      \R                  R                  SS5      S 5       5       r\" 5       S 5       rS r\/" S/SSS9S 5       r\/" S/SSS9S 5       r\/" S/SS9S 5       r\" 5       S 5       r\R                  R                  S\-GR                  \-GR                  /5      \R                  R                  S/ SQ5      S 5       5       r " S S5      rS r\" 5       S 5       rS rS r\" 5       S 5       r\" 5       S 5       r\" S/SS9S 5       r\/" S/SSS$9S 5       r\/" S/S\R                  S":X  a  SOS S$9S 5       r\" S/S\R                  " 5       S1:X  a  S OSS$9S 5       r\" S/SS9S 5       rS rS rS r\" 5       S 5       rS rS r\R                  R                  SS5      S 5       rS r\R                  R                  SS\GRF                  SS4S\GRF                  SS4S\GRF                  SS4S\GRH                  SS4S\GRF                  SS4S\GRF                  SS4S\GRF                  SS4/5      S 5       r\GRL                  GRO                  S5      \" 5       S 5       5       rS r\" S/SSS9S 5       rS rS rS rS r\R                  R                  S\S0 S4\S0 S4\S0 S4\\" 5       SS0S4\\" 5       SS0S4\\" 5       SS0S4\SSS0S4\SSSSS.S4\SSSS.S4\S0 S44
5      S 5       r\" 5       S 5       rS r\" 5       S 5       r\" S/SSGS 9GS 5       rGS rGS rGS r\R                  R                  GSS/ GSQ/ GSQ/ GSQ/ GS	Q/GS
GS/GSGS/4GSGS/GSGS/4GSGS/GSGS/4// GSQ4S/ GSQ/ GSQ/ GSQ/ GSQ/GSGS/GSGS/4GSGS/GSGS/4GSGS/GSGS/4// GSQ4S/ GSQ/ GSQ/ GSQ/ GSQ/GSGS/GSGS/4GSGS
/GSGS/4GSGS/GSGS/4// GSQ4/5      GS 5       r\R                  R                  GS/ SQ5      GS\GSS4GS j5       r\R                  R                  GSS/ GS Q4S/ GS!Q4S/ GS"Q4/5      GS# 5       r\" GS$/SSGS 9GS% 5       r\" GS&/SSGS 9GS' 5       r\" 5       GS( 5       rGS) r\/" GS*/SS9GS+ 5       rGS, rGS- rGS. rGS/ rGS0 rGS1 rGS2 rGS3 rGS4 r\/" GS5/SSGS6GS79GS8 5       r\/" GS9/SSGS:9GS; 5       r\R                  R                  GS</ GS=Q5      \GRL                  GRO                  S5      GS> 5       5       r\" 5       \R                  GR                  GS?5      GS@ 5       5       r\/" GSA/SSGS:9GSB 5       r\/" GSC/SSGS:9GSD 5       r\R                  R                  GSEGSFGSGGSH04GSFGSGS,04GSFGSIS,GSJ/04GSFGSKGSL04GSMGSGS,04GSMGSNS04GSMGSOGSP04GSMGSIS,GSJ/04GSQGSRGSP04GSQGSGS,04GSSGSKGST04/5      GSU 5       r\R                  R                  S/ SQ5      GSV 5       rGSW r\R                  R                  GSX/ GSYQ5      GSZ 5       rGS[ rGS\ rGS] rGS^ rGS_ rg(`      N)parse)Axes3Daxes3dproj3dart3d)_Quaternion)MouseButton
MouseEventNavigationToolbar2)cm)colorspatches)image_comparisoncheck_figures_equal)LineCollectionPolyCollection)Circle	PathPatch)Path)Text)_apiTdefault)remove_textstylec                    SS/n[         R                  " [        R                  " [	        [         R
                  " X"U5      5      5      S5      nU H  u  pE[        R                  " [        R                  " XE-
  5      5      US   US   -
  :X  d  M@  U R                  " [        U[        R                  " U5      -  U[        R                  " U5      -  5      6   M     g )Nr         )
	itertoolscombinationsnparraylistproductsumabsplot3Dzip)axscalerptsstartends         `/home/wildlama/miniconda3/lib/python3.13/site-packages/mpl_toolkits/mplot3d/tests/test_axes3d.pyplot_cuboidr/      s    	
AA

 
 $y/@/@q/I*J!KQ
OC
66"&&%&!A$1+5IIs5%0#bhhuo2EFG     c                 R    U R                  [        SS9S9nUR                  S5        g )N3d
projection
subplot_kwF)subplotsdictset_visiblefig_testfig_refr(   s      r.   test_invisible_axesr=   (   s&    			dd&;		<BNN5r0   zgrid_off.pngmpl20r   c                  n    [         R                  " 5       n U R                  SS9nUR                  S5        g Nr2   r3   F)pltfigureadd_subplotgridfigr(   s     r.   test_grid_offrH   .   s(    
**,C	D	)BGGENr0   zinvisible_ticks_axis.pngc                  <   [         R                  " 5       n U R                  SS9nUR                  / 5        UR	                  / 5        UR                  / 5        UR                  UR                  UR                  4 H  nUR                  R                  S5        M      g rA   )rB   rC   rD   
set_xticks
set_yticks
set_zticksxaxisyaxiszaxisliner9   )rG   r(   axiss      r.   test_invisible_ticks_axisrR   5   sp    
**,C	D	)BMM"MM"MM"288RXX.		e$ /r0   zaxis_positions.pngFc                  H   / SQn [         R                  " SSSS0S9u  p[        UR                  5       U 5       Hf  u  p4UR                  UR
                  UR                  4 H%  nUR                  U5        UR                  U5        M'     U nUR                  SSSUS	9  Mh     g )
N)upperlowerbothnoner   r4   r2   r5   xyz)xlabelylabelzlabeltitle)
rB   r7   r'   flattenrM   rN   rO   set_label_positionset_ticks_positionset)	positionsrG   axsr(   posrQ   r^   s          r.   test_axis_positionsrf   @   s    2I||AqlD-ABHCs{{}i0HHbhh0D##C(##C( 1 %
c#c? 1r0   zaspects.pngc                     Sn [         R                  " SSSS0S9u  pUR                  5       SS  H  n[        U/ S	QS
9  M     [        US   S   / SQS
9  [	        UR                  5       5       H;  u  pCUR                  X   5        UR                  S5        UR                  X   SS9  M=     US   S   R                  S5        g )N)autoequalequalxyequalyzequalxzri   r      r4   r2   r5   r   )r   r      r)   r   r   r   r   rm      ro   datalim
adjustablezequal (cube))rB   r7   r_   r/   	enumerate	set_titleset_box_aspect
set_aspect)aspects_rd   r(   is        r.   test_aspectsr~   L   s    IG\\!QL$+?@FAkkmAb!Bi( " Aq	+3;;=)
WZ 
)$
gjY7 * F1I'r0   zaspects_adjust_box.pngc                      Sn [         R                  " S[        U 5      SS0SS9u  p[        U5       H6  u  p4[	        U/ SQS9  UR                  X   5        UR                  X   S	S
9  M8     g )N)rh   ri   rj   rk   rl   r   r4   r2   )   rm   r6   figsize)rs   rm   ro   rp   boxru   )rB   r7   lenrw   r/   rx   rz   )r{   rG   rd   r}   r(   s        r.   test_aspects_adjust_boxr   ]   sh     AG||As7|t8L$+-HC 3Bi(
WZ 
gjU3  r0   c                     [         R                  " 5       n U R                  SS9nUR                  S5        UR	                  S5        UR                  S5        UR                  S5        UR                  S5        [        U5      S:X  d   eg )	Nr2   r3   labelr^   rX   rY   rZ   zV<Axes3D: label='label', title={'center': 'title'}, xlabel='x', ylabel='y', zlabel='z'>)	rB   rC   rD   	set_labelrx   
set_xlabel
set_ylabel
set_zlabelreprrF   s     r.   test_axes3d_reprr   j   sx    
**,C	D	)BLLLLMM#MM#MM#8	IJ J Jr0   zaxes3d_primary_views.pngdarwing
ףp=
?)r   tolc                  n   / SQn [         R                  " SSSS0S9u  p[        UR                  5       Hi  u  p4UR	                  S5        UR                  S5        UR                  S	5        UR                  S
5        UR                  X   S   X   S   X   S   S9  Mk     [         R                  " 5         g )N))Z   r   r   r   r   r   r   r   )r   r   r   r   r   r   r      r   r   rm   r4   r2   r5   rX   rY   rZ   orthor   r   elevazimroll)
rB   r7   rw   flatr   r   r   set_proj_type	view_inittight_layout)viewsrG   rd   r}   r(   s        r.   test_axes3d_primary_viewsr   w   s    E ||AqlD-ABHC388$
c
c
c
!
%(1+EHQKehqkJ % r0   z	bar3d.pngc                  &   [         R                  " 5       n U R                  SS9n[        / SQ/ SQ5       HY  u  p#[        R
                  " S5      n[        R
                  " S5      nU/[        U5      -  nSUS'   UR                  XEUSS	US
S9  M[     g )Nr2   r3   )r*   gbrY   )      
   r   r   cr   rY   edge皙?)zszdiraligncoloralpha)rB   rC   rD   r'   r    aranger   bar)rG   r(   r   rZ   xsyscss          r.   
test_bar3dr      s{    
**,C	D	)B(/:YYr]YYr]S3r7]1
r!#V2SI ;r0   c                     [         R                  " 5       n U R                  SS9nS Hb  n[        R                  " [        U5      5      n[        R                  " U5      n[        R                  " U5      nUR                  X4USSSUS9  Md     g )Nr2   r3   )redgreenblueyellowr   r   )rB   rC   rD   r    r   r   
zeros_likebar3d)rG   r(   r   r   r   r   s         r.   test_bar3d_colorsr      so    
**,C	D	)B/YYs1v]]2]]2 	Q1A. 0r0   zbar3d_shaded.pngc                  <   [         R                  " S5      n [         R                  " S5      n[         R                  " X5      u  p#UR                  5       UR                  5       p2X#-   S-   n/ SQn[        R
                  " [        R                  " S[        U5      -  5      S9nUR                  S[        U5      [        SS9S9n[        Xu5       H0  u  nu  pnUR                  X#US	-  SSUS
S9  UR                  XUS9  M2     UR                  R                  5         g )Nrs   ro   r   ))r   r   )r   r   r   )r   r   ),  r   r   r   r2   r3   r5   r   Tshader   )r    r   meshgridravelrB   rC   	figaspectr   r7   r8   r'   r   r   canvasdraw)rX   rY   x2dy2drZ   r   rG   rd   r(   r   r   r   s               r.   test_bar3d_shadedr      s    
		!A
		!A{{1 HCyy{CIIK	AAGE
**S]]1s5z>:
;C
,,	3u:4(  C #&c/T
37Aq!48
$5 #2 JJOOr0   zbar3d_notshaded.pngr   {Gz?c            
      |   [         R                  " 5       n U R                  SS9n[        R                  " S5      n[        R                  " S5      n[        R
                  " X#5      u  pEUR                  5       UR                  5       pTXE-   nUR                  XEUS-  SSUSS9  U R                  R                  5         g )	Nr2   r3   rs   ro   r   r   Fr   )
rB   rC   rD   r    r   r   r   r   r   r   )rG   r(   rX   rY   r   r   rZ   s          r.   test_bar3d_notshadedr      s     **,C	D	)B
		!A
		!A{{1 HCyy{CIIK	AHHSsQw1auH5JJOOr0   c                  N   [         R                  " 5       n U R                  SSSSS9n[        R                  " SSS9nSu  p4X4-  n[
        R                  " [
        R                  " U5      [
        R                  " U5      5      u  pgUR                  5       nUR                  5       nXg-   n[        U5       V	s/ s H  n	[        R                  " X-  5      PM     n
n	UR                  XgSSSUU
SUS	9	n[
        R                  R                  XR                  SS S
2   S5        g s  sn	f )Nr   r2   r3   r   r   )azdegaltdeg)rm   rs   T)	rX   rY   rZ   dxdydzr   r   lightsource   rs   )rB   rC   rD   mcolorsLightSourcer    r   r   r   ranger   coolwarmr   testingassert_array_max_ulp_facecolor3d)rG   r(   lslengthwidtharearX   rY   r   r}   r   
collections               r.   test_bar3d_lightsourcer      s    
**,C	AqT	2B			1R	0BMF>D;;ryy("))E*:;DA		A		A	
B*/+6+QR[[ +E6Aa1 %Tr  CJ JJ##E+B+B14a4+H!L 7s   7"D"zcontour3d.pngx86_64Mb`?c            	      >   S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " S5      u  p#nUR                  X#USSSS	9  UR                  X#US
SSS	9  UR                  X#USSSS	9  UR                  SSSSSSS9  g )NTaxes3d.automarginr2   r3   皙?rZ   r   r   offsetcmaprX   rY   (   d   )xminxmaxyminymaxzminzmax)rB   rcParamsrC   rD   r   get_test_datacontourrQ   rG   r(   XYZs        r.   test_contour3dr      s     )-CLL$%
**,C	D	)B""4(GA!JJqQSJJ?JJqQS:J>JJqQS*J=GG2Cbt#GFr0   zcontour3d_extend3d.pngc            
      8   S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " S5      u  p#nUR                  X#USSSSS	9  UR                  S
S5        UR                  SS5        UR                  SS5        g )NTr   r2   r3   r   rZ   r   r   )r   r   r   extend3dr   r   r   P   )
rB   r   rC   rD   r   r   r   set_xlimset_ylimset_zlimr   s        r.   test_contour3d_extend3dr	     s    (,CLL$%
**,C	D	)B""4(GA!JJqQSJJNKKRKKRKKRr0   zcontourf3d.pngc            	         S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " S5      u  p#nUR                  X#USSSS	9  UR                  X#US
SSS	9  UR                  X#USSSS	9  UR                  SS5        UR                  SS5        UR                  SS5        g )NTr   r2   r3   r   rZ   r   r   r   rX   r   rY   r   r   )
rB   r   rC   rD   r   r   contourfr  r  r  r   s        r.   test_contourf3dr     s    (,CLL$%
**,C	D	)B""4(GA!KKac$ZK@KKac#JK?KKac":K>KKRKKRKKcr0   zcontourf3d_fill.pngc            	         S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " [        R                  " SSS5      [        R                  " SSS5      5      u  p#UR                  SS5      nS	US S S
2S S S
24'   UR                  X#USSS/SS9  UR                  SS5        UR                  SS5        UR                  SS5        g )NTr   r2   r3   r         ?r   皙?ro   皙r   )r   levelsr   rn   r   )rB   r   rC   rD   r    r   r   clipr  r  r  r  r   s        r.   test_contourf3d_fillr  	  s    (,CLL$%
**,C	D	)B;;ryyQ-ryyQ/EFDA	q!A Acc3Q3hKKKa4)*KEKKAKKAKKAr0   zextend, levelsrV   )r   rs   r   min)r   rs   r      max)r   r   rs   r   c           
         [         R                  " [         R                  " SSS5      [         R                  " SSS5      5      u  pEUS-  US-  -   nUR                  SS9nUR	                  XEU/ SQSSS	9  U R                  SS9nUR	                  XEXcUSSS
9  Xx4 H9  n	U	R                  SS5        U	R                  SS5        U	R                  SS5        M;     g )Nr  r   r  r2   r3   )r   r   rs   r   r  r      )r  vminvmax)extendr  r  r   )r    r   r   rD   r  r  r  r  )
r;   r<   r  r  r   r   r   ax_refax_testr(   s
             r.   test_contourf3d_extendr     s    
 ;;ryyQ-ryyQ/EFDA	1q!tA  D 1F
OOA!O!!OD""d"3GQ1V!!D
B
B
C  r0   ztricontour.png{Gz?)r   r   c                     S[         R                  S'   [         R                  " 5       n [        R                  R                  S5        [        R                  R                  S5      S-
  n[        R                  R                  S5      S-
  nUS-  US-  -   * nU R                  SSSSS	9nUR                  XU5        U R                  SSSSS	9nUR                  XU5        g )
NTr   i!N,        ?r   r   r2   r3   )
rB   r   rC   r    randomseedrandrD   
tricontourtricontourf)rG   rX   rY   rZ   r(   s        r.   test_tricontourr*  .  s    (,CLL$%
**,CIINN8
		ts"A
		ts"A
Q$A+A	AqT	2BMM!	AqT	2BNN1r0   c                      [         R                  " 5       n U R                  SS9nSu  p#[        R                  " SSU5      n[        R                  " SSU5      n[        R
                  R                  SSX2/5      nUR                  XEUS/5        g )	Nr2   r3   )r   r   r  r   r   r   r$  )rB   rC   rD   r    linspacer%  randintr   )rG   r(   nxnyrX   rY   rZ   s          r.   test_contour3d_1d_inputr0  >  st    
**,C	D	)BFB
CR A
CR A
		!Q)AJJqQr0   zlines3d.pngc                     [         R                  " 5       n U R                  SS9n[        R                  " S[        R
                  -  S[        R
                  -  S5      n[        R                  " SSS5      nUS-  S-   nU[        R                  " U5      -  nU[        R                  " U5      -  nUR                  XVU5        g )	Nr2   r3   rs   r   r  r   r   )	rB   rC   rD   r    r,  pisincosplot)rG   r(   thetarZ   r*   rX   rY   s          r.   test_lines3dr8  I  s    
**,C	D	)BKKRUU
AIs3E
B3A	Q
A	BFF5MA	BFF5MAGGA!r0   c                     U R                  SS9nUR                  S/S/S5        UR                  SS9nUR                  SSS5        g )Nr2   r3   r   orD   r6  r;   r<   ax1ax2s       r.   test_plot_scalarr?  U  sL    


$

/CHHaS1#s




.CHHQ3r0   c                     [         R                  " [        SS9   [        R                  " S/ / 5        S S S 5        [         R                  " [        SS9   [        R                  " / S/ 5        S S S 5        [         R                  " [        SS9   [        R                  " / / S5        S S S 5        [        R                  " / / / 5      n [         R                  " [        SS9   U R                  S/ / 5        S S S 5        [         R                  " [        SS9   U R                  / S/ 5        S S S 5        [         R                  " [        SS9   U R                  / / S5        S S S 5        g ! , (       d  f       GN;= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz	x must bematchr   z	y must bez	z must be)pytestraisesRuntimeErrorr   Line3Dset_data_3d)rP   s    r.   test_invalid_line_datarH  ]  s   	|;	7QB 
8	|;	7RB 
8	|;	7RQ 
8 <<B#D	|;	7B# 
8	|;	7Q# 
8	|;	7R# 
8	7 
8	7	7	7	7	7 
8	7	7	7	7	7sG   E'E9F FF-
F>'
E69
F
F
F*-
F;>
Gzmixedsubplot.pngc            
         S n [         R                  " SSS5      n[         R                  " SSS5      nS[        R                  S'   [        R                  " [        R
                  " S5      S	9nUR                  S
SS5      nUR                  X" U5      SX " U5      SSS9  UR                  S5        UR                  S
SS
SS9n[         R                  " [         R                  " SSS5      [         R                  " SSS5      5      u  pV[         R                  " XV5      n[         R                  " U5      nUR                  XVUSSSSS9  UR                  SS5        g )Nc                     [         R                  " S[         R                  -  U -  5      [         R                  " U * 5      -  $ Nr   )r    r5  r3  exp)ts    r.   ftest_mixedsubplots.<locals>.fp  s,    vvagai 2661":--r0                 @r  r!  Tr          @r   r   r   bozk--r   )markerfacecolorr2   r3   ro   r  r   r   F)rcountccount	linewidthantialiasedrn   )r    r   rB   r   rC   r   rD   r6  rE   r   hypotr4  plot_surface
set_zlim3d)	rN  t1t2rG   r(   r   r   Rr   s	            r.   test_mixedsubplotsr`  n  s   . 
3S	!B	3T	"B(,CLL$%
**S]]2.
/C	Aq	!BGGB"tR2wGGGGDM	AqT	2B;;ryyQ-ryyQ/EFDA
A
q	AOOA!BrU  4 MM"ar0   c                     U R                  SS9nUR                  SSSSS9  U R                  5         UR                  SS9nUR                  5         UR                  SSSSS9  g )Nr2   r3   r$  zsome strings)rD   textr   r<  s       r.   test_tight_layout_textre    sj     

$

/CHHRR=H)




.CHHRR=H)r0   zscatter3d.pngc                  r   [         R                  " 5       n U R                  SS9nUR                  [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      SSS9  [        R
                  " SS5      =n=p4UR                  X#USS	S9  S
US'   UR                  / / / SSS9  g )Nr2   r3   r   r*   r:  )r   markerr   r   ^r   rn   r   rB   rC   rD   scatterr    r   rG   r(   rX   rY   rZ   s        r.   test_scatter3drl    s    
**,C	D	)BJJryy}biimRYYr]S  "		"b!!A!JJqQ#cJ*AbEJJr2rSJ-r0   zscatter3d_color.pngc            	      0   [         R                  " 5       n U R                  SS9nUR                  [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      SSSS9  UR                  [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      SSSS9  UR                  [        R
                  " SS5      [        R
                  " SS5      [        R
                  " SS5      S	S
S9  g )Nr2   r3   r   r*   rW   r:  )	facecolor	edgecolorrg  r   r   rc  )r   rg  ri  rF   s     r.   test_scatter3d_colorrp    s    
**,C	D	)B JJryy}biimRYYr]s  <JJryy}biimRYYr]3s  < JJryyR "))B"3RYYr25F  &r0   zscatter3d_linewidth.pngc            	         [         R                  " 5       n U R                  SS9nUR                  [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      S[        R
                  " S5      S9  g )Nr2   r3   r   r:  )rg  rX  ri  rF   s     r.   test_scatter3d_linewidthrr    s[    
**,C	D	)B JJryy}biimRYYr]RYYr]  4r0   c                 V   [         R                  " S5      [         R                  " S5      [         R                  " S5      pCn[         R                  " SS[         R                  SS/5      nUR                  SS9nUR                  X#XES9  U R                  SS9nUR                  X#XESS	9  g )
Nro   r   r   rm   rs   r2   r3   r   )r   r   )r    r   zerosr!   nanrD   rj  )r<   r;   rX   rY   rZ   r   r  r  s           r.   test_scatter3d_cmap_alpharw    s     iilBHHQK1!A
!Q1%&A""d"3GOOA!O!  D 1F
NN1qN)r0   c           	         UR                  SS9nUR                  [        R                  " S5      [        R                  " S5      [        R                  " S5      SS9nUR	                  [        R                  " S5      5        U R                  SS9nUR                  [        R                  " S5      [        R                  " S5      [        R                  " S5      S[        R                  " S5      S9  g )Nr2   r3   r   r:  )rg  )rg  
linewidths)rD   rj  r    r   set_linewidthsr<   r;   r  r   r  s        r.   %test_scatter3d_linewidth_modificationr|    s     ""d"3G		"ryy}biim" 	 	$ARYYr]#  D 1F
NN299R="))B-2s iim  -r0   c                    UR                  SS9nUR                  [        R                  " S5      [        R                  " S5      [        R                  " S5      SSS9nUR	                  S5        UR                  S5        UR                  S	S
/S-  5        UR                  5       (       d   eUR                  S5        UR                  5       (       a   eUR                  [        R                  " SS5      5        UR                  S5        U R                  SS9nUR                  [        R                  " S5      [        R                  " S5      [        R                  " S5      SSSS	S
/S-  SSSS9
  g )Nr2   r3   r   r:  T)rg  
depthshadeC1C2333333?ffffff?ro   FK   rm   )rg  rn  ro  r   r~  rc  ry  )rD   rj  r    r   set_facecolorset_edgecolor	set_alphaget_depthshadeset_depthshade	set_sizesfullrz  r{  s        r.   test_scatter3d_modificationr    s/    ""d"3G		"ryy}biim"t 	 	5AOODOODKKc
QU!!!!KKB Q  D 1F
NN299R="))B-2s!T#sa#ra  9r0   c                 f   [         R                  SS2SS24   u  p#[         R                  " UR                  5      R	                  UR
                  5      nSn[         R                  " UR
                  S5      nSUSSS2SSS24'   SUSSS2SSS24'   [         R                  " UR
                  S	5      nS
USS2SS24'   SUSS2SS24'   SUSS2SS24'   [         R                  " UR
                  S5      nSUSS2SS24'   SUSS2SS24'   SUSS2SS24'   [         R                  " UR
                  S5      n	SU	SSS2SSS24'   SU	SSS2SSS24'   S X2XFXxU	4 5       u  p2pFpxn	U R                  SS9n
S XgX4 5       n[        R                  " U6  H{  u  ppXl:g  X}:g  -  X:g  -  X:g  -  n[         R                  R                  UU[        S9n[         R                  " U[        UR                  ) 5      5      nU
R!                  X2UXXSUS9	  M}     UR                  SS9nUR!                  X2XFXxU	SUS9	  g)z1Test that marker properties are correctly sorted.Nr   F   r   r   r   r   C0r  ro   r  r   rs   C3C4C5C6	   C7c              3   B   #    U  H  nUR                  5       v   M     g 7fN)r_   .0as     r.   	<genexpr>)test_scatter3d_sorting.<locals>.<genexpr>  s      :EA 	
		Es   r2   r3   c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr  )r    uniquer  s     r.   r  r    s     N"MQBIIaLL"Ms   #%dtype)rc  fceclwr   r~  )r    mgridr   sizereshapeshaper  rD   r   r#   mamasked_arrayfloatrepeatr$   maskrj  )r<   r;   rY   rX   rZ   r~  sizes
facecolors
edgecolorsry  r  setsrc  r  r  r  subsetr  s                     r.   test_scatter3d_sortingr    s    88CRC"HDA
		!&&!!!''*AJGGAGGR EE!$Q$1*E!$Q$1*$'JJrr2A2vJqr2A2vJqr12v$'JJqsAaCxJqsAaCxJqsAaCx!$JJqt!tQTTzJqt!tQTTz:**E:6A!JJ
   D 1FN5j"MND"**D1rZ  	 ##AvU#; YYr3|,-qVqBQ", 	 	. 2$ ""d"3GOOA!!z  Cr0   r      c           
         SS/nSS/nSS/nSS/nU R                  SS9nUR                  X4USUS	9  UR                  SUSS
9  UR                  SS9nUR                  USSS2   USSS2   USSS2   SUSSS2   S	9  UR                  SUSS
9  g)z
Test that the draw order does not depend on the data point order.

For the given viewing angle at azim=-50, the yellow marker should be in
front. For azim=130, the blue marker should be in front.
rn   r   r   r   rY   r2   r3     rc  r   r   N)rD   rj  r   r;   r<   r   rX   rY   rZ   r   r(   s           r.   $test_marker_draw_order_data_reversedr  #  s     
QA	
BA	
AA#JE					.BJJqQ$%J(LLadL+					-BJJq2w$B$4R4DE$B$KJ@LLadL+r0   c           
      B   SnSS/nSS/nSS/nSS/nU R                  SS9nUR                  5         UR                  X4US	US
9  UR                  SUSS9  UR                  SS9nUR                  5         UR                  X4US	USSS2   S
9  UR                  SUS-
  SS9  g)z
Test that the draw order changes with the direction.

If we rotate *azim* by 180 degrees and exchange the colors, the plot
plot should look the same again.
r  rn   r   r   r   rY   r2   r3   r  r  r   Nr   )rD   set_axis_offrj  r   r  s           r.   #test_marker_draw_order_view_rotatedr  8  s     D	QA	
BA	
AA#JE					.BOOJJqQ$%J(LLadL+					-BOOJJqQ$%"+J.LLadSjqL1r0   zplot_3d_from_2d.pngg~jt?c                      [         R                  " 5       n U R                  SS9n[        R                  " SS5      n[        R                  " SS5      nUR                  X#SSS9  UR                  X#SSS9  g )	Nr2   r3   r   ro   r   rX   r   r   rY   )rB   rC   rD   r    r   r6  )rG   r(   r   r   s       r.   test_plot_3d_from_2dr  P  s`    
**,C	D	)B	1aB	1b	BGGBqsG#GGBqsG#r0   zfill_between_quad.pngc                      [         R                  " 5       n U R                  SS9n[        R                  " SS[        R
                  -  S5      n[        R                  " U5      n[        R                  " U5      nS[        R                  " SU-  5      -  nS[        R                  " U5      -  nS[        R                  " U5      -  nSnU[        R
                  S-  :  US	[        R
                  -  S-  :  -  n	UR                  X4XVXxU	S
SSS9
  g )Nr2   r3   r   r   2   r  r   333333?rm   rh   r$  k)wheremoder   ro  )	rB   rC   rD   r    r,  r3  r5  r4  fill_between)
rG   r(   r7  x1y1z1x2y2z2r  s
             r.   test_fill_between_quadr  Z  s    
**,C	D	)BKK1RUU7B'E	B	B	rvva%i 	 B	rvve}	B	rvve}	B	
BRUU1W_255!23E OOBBBfC3  Hr0   zfill_between_polygon.pngc                  h   [         R                  " 5       n U R                  SS9n[        R                  " SS[        R
                  -  S5      nU=p4S=pV[        R                  " U5      nUS-   nU[        R
                  S-  :  US[        R
                  -  S-  :  -  n	UR                  X5XtXhU	SS	S
9	  g )Nr2   r3   r   r   r  r   rm   rh   r  )r  r  ro  )rB   rC   rD   r    r,  r3  r5  r  )
rG   r(   r7  r  r  r  r  r  r  r  s
             r.   test_fill_between_polygonr  q  s    
**,C	D	)BKK1RUU7B'EOBKB	B	aBRUU1W_255!23E OOBBBf  =r0   zsurface3d.pngc                     S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " SSS5      n[        R
                  " SSS5      n[        R                  " X#5      u  p#[        R                  " X#5      n[        R                  " U5      nUR                  X#USSS	S
SS9nS[         R                  S'   UR                  SS5        U R                  USSS9  g )NFzpcolormesh.snapr2   r3   rU  ro   r  r   r   r   )rV  rW  r   r  rY  Tr   )\()\(?r$  )shrinkaspect)rB   r   rC   rD   r    r   r   rZ  r4  r[  r  colorbar)rG   r(   r   r   r_  r   surfs          r.   test_surface3dr    s     ',CLL"#
**,C	D	)B
		"aA
		"aA;;qDA
A
q	A??12bzU  4D(,CLL$%KKtLLc!L,r0   z(surface3d_label_offset_tick_position.pngc            	         [         R                  " 5       R                  SS9n [        R                  SS[        R
                  -  S2SS[        R
                  -  S24   u  p[        R                  " [        R                  " [        R                  " U5      [        R                  " U5      -   5      5      nU R                  US-  US-  US	-  S
SSS9  U R                  S5        U R                  S5        U R                  S5        g )Nr2   r3   r   r   r  rs   g     j@g    .Ag    חAautumnr   )r   cstriderstridezX labelzY labelzZ label)rB   rC   rD   r    r  r3  sqrtr%   r5  r[  r   r   r   )r(   rX   rY   rZ   s       r.   )test_surface3d_label_offset_tick_positionr    s    		!	!T	!	2B88Aa"%%i$aBEE	$&667DA
rvvay266!9,-.AOOAGQWa#gHaQROSMM)MM)MM)r0   zsurface3d_shaded.pngc                     [         R                  " 5       n U R                  SS9n[        R                  " SSS5      n[        R                  " SSS5      n[        R
                  " X#5      u  p#[        R                  " US-  US-  -   5      n[        R                  " U5      nUR                  X#USS/ SQSS	S
9  S[         R                  S'   UR                  SS5        g )Nr2   r3   rU  ro   r  r   )r  r   r  r   F)r  r  r   r  rY  Tr   r  r  )rB   rC   rD   r    r   r   r  r4  r[  r   r  )rG   r(   r   r   r_  r   s         r.   test_surface3d_shadedr    s    
**,C	D	)B
		"aA
		"aA;;qDA
Qa A
q	AOOA!Q)aU  D(,CLL$%KKtr0   zsurface3d_masked.pngc                     [         R                  " 5       n U R                  SS9n/ SQn/ SQn[        R                  " X#5      u  p#[        R
                  " / SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/5      n[        R                  R                  US5      n[        R                  " UR                  5       UR                  5       S9n[        R                  S   " U" U5      5      nUR                  X#XWS9  UR                  SSS5        g )Nr2   r3   )r   r   rm   rs   ro   r   r  r  r  r   r   )r   r   rm   rs   ro   r   r  r  )rn   r   r   r   r   r   r   r   r   r   r   )rn   r   r   rm   rs   rs   rs   rm   r   r   r   )rn         rs   ro   r   r  r   ro   rs   rm   r  )rn   r  r  r  r      r   r  r  r  r  )rn   r  r  r  r      r   r  r   r  r  )rn   r  r  r  r  r   r  r  r   r  r  )rn   r  r  r        r  r      r  r  )rn   r  r  r  r        r  r  r  r  r   )r  r  plasmar  r   r  )rB   rC   rD   r    r   r!   r  masked_lessr   	Normalizer  r  mpl	colormapsr[  r   )rG   r(   rX   rY   matrixrZ   normr   s           r.   test_surface3d_maskedr    s    
**,C	D	)B+A A;;qDAXX..276<=?		
F 	&!$A!%%'8D]]8$T!W-FOOA!O/LLS!r0   c                    [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " U5      [         R                  " U5      -  nUS:  n[         R                  R                  XES9nU R                  SS9nUR                  X#U5        UR                  X#U5        [         R                  =X%'   =X5'   XE'   UR                  SS9nUR                  X#U5        UR                  X#U5        g )Nr   r   r   )r  r2   r3   )
r    r,  r4  r5  r  r!   rD   rj  r6  rv  )	r;   r<   rX   rY   rZ   r  z_maskedr  r  s	            r.   test_plot_scatter_masksr    s    
Ar3A
Ar3A
q	BFF1IAq5Duu{{1{(H""d"3GOOA(#LLx "$&&(AG(ag  D 1F
NN1
KKar0   c                    [         R                  " [         R                  " S5      [         R                  " S5      5      u  p#X#-   nU R                  SS9nUR	                  X#US S9  UR                  SS9nUR	                  X#U5        g )Nro   r2   r3   r  )r    r   r   rD   r[  )r;   r<   rX   rY   rZ   r  r  s          r.   test_plot_surface_None_argr    sv    ;;ryy|RYYq\2DA	A""d"3GqT2  D 1F
a r0   zsurface3d_masked_strides.pngc                     [         R                  " 5       n U R                  SS9n[        R                  SSS2SSS24   u  p#[        R
                  R                  X#-  S5      nUR                  X#USSS9  UR                  S	S
S5        g )Nr2   r3   gffffff@r   r   rs   r  r  <   r   )	rB   rC   rD   r    r  r  r  r[  r   rk  s        r.   test_surface3d_masked_stridesr    sz    
**,C	D	)B88Bs1HbQh&'DA
!%#AOOA!QO2LLS!r0   z
text3d.pngc                     [         R                  " 5       n U R                  SS9nSnSnSnSn[        X#XE5       H   u  pgpSXxX4-  n
UR	                  XxXU5        M"     UR	                  SSSS	S	S
9  UR                  SSSUR                  S9  S[         R                  S'   UR                  SS5        UR                  SS5        UR                  SS5        UR                  S5        UR                  S5        UR                  S5        g )Nr2   r3   NrX   rY   rZ   r   r   r   rq   r   r   rs   r  r  r   r   rs   r  r  r   r   rs   r   ro   r   r   r  z(%d, %d, %d), dir=%sr   r   r   r   gffffff?z2D Text)	transformTr   r   r   zX axiszY axiszZ axis)rB   rC   rD   r'   rd  text2D	transAxesr   
set_xlim3d
set_ylim3dr\  r   r   r   )rG   r(   zdirsr   r   r   r   rX   rY   rZ   r   s              r.   test_text3dr    s    
**,C	D	)B7E	B	B	BU/&!8
a% 0 GGAq!U%G(IIdD)r||I<(,CLL$%MM!RMM!RMM!RMM(MM(MM(r0   c                     SnSnSnSnUR                  SS9nUR                  SS5        UR                  SS5        UR                  SS5        [	        X#XE5       H8  u  pxpUR                  SSSS	U S
U	 S
U
 SU 35      nUR                  XU
4US9  M:     U R                  SS9nUR                  SS5        UR                  SS5        UR                  SS5        [	        X#XE5       H$  u  pxpUR                  XU
S	U S
U	 S
U
 SU 3US9  M&     g )Nr  r  r   r  r2   r3   r   r   (z, z), dir=)r   )rD   r  r  r\  r'   rd  set_position_3d)r<   r;   r  r   r   r   r  r   rX   rY   rZ   rM  r  s                r.   test_text3d_modificationr    s;    8E	B	B	B""d"3Gq"q"q"U/LLAqAaS1#Rs'$"@A	1)$/ 0   D 1F
a
a
aU/A!q2aS1#WTF;$G 0r0   ztrisurf3d.pnggZd;?c                     Sn Sn[         R                  " SSU5      n[         R                  " SS[         R                  -  U SS9n[         R                  " US	[         R                  4   US
S9nUS S 2S
S S24==   [         R                  U -  -  ss'   [         R
                  " SU[         R                  " U5      -  R                  5       5      n[         R
                  " SU[         R                  " U5      -  R                  5       5      n[         R                  " U* U-  5      n[        R                  " 5       nUR                  SS9nUR                  XEUSSS9  g )N$   r        ?      ?r   r   Fendpoint.r   rQ   r2   r3   jet皙?)r   rX  r    r,  r3  r  newaxisappendr5  r_   r4  rB   rC   rD   plot_trisurf	n_anglesn_radiiradiianglesrX   rY   rZ   rG   r(   s	            r.   test_trisurf3dr  (  s   HGKKsG,E[[AbeeGX>FYYvc2::o.a@F
1add7OruuX~%O
		!eBFF6N*3356A
		!eBFF6N*3356A
r!tA
**,C	D	)BOOA!%3O7r0   ztrisurf3d_shaded.pngQ?c                     Sn Sn[         R                  " SSU5      n[         R                  " SS[         R                  -  U SS9n[         R                  " US	[         R                  4   US
S9nUS S 2S
S S24==   [         R                  U -  -  ss'   [         R
                  " SU[         R                  " U5      -  R                  5       5      n[         R
                  " SU[         R                  " U5      -  R                  5       5      n[         R                  " U* U-  5      n[        R                  " 5       nUR                  SS9nUR                  XEU/ SQSS9  g )Nr  r  r  r  r   r   Fr  .r   r  r2   r3   )r   r$  r   r  )r   rX  r  r  s	            r.   test_trisurf3d_shadedr"  :  s   HGKKsG,E[[AbeeGX>FYYvc2::o.a@F
1add7OruuX~%O
		!eBFF6N*3356A
		!eBFF6N*3356A
r!tA
**,C	D	)BOOA!;#O>r0   zwireframe3d.pngc                      [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#nUR                  X#USSS9  g )Nr2   r3   r      rV  rW  rB   rC   rD   r   r   plot_wireframer   s        r.   test_wireframe3dr(  L  sH    
**,C	D	)B""4(GA!aAb4r0   zwireframe3dasymmetric.pngc                      [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#nUS S US S US S pCnUR                  X#USSS9  g )Nr2   r3   r   rn   rm   r$  r%  r&  r   s        r.   test_wireframe3dasymmetricr*  T  se    
**,C	D	)B""4(GA!fafaf!AaAa3r0   zwireframe3dzerocstride.pngc                      [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#nUR                  X#USSS9  g )Nr2   r3   r   r$  r   r%  r&  r   s        r.   test_wireframe3dzerocstrider,  ]  sH    
**,C	D	)B""4(GA!aAb3r0   zwireframe3dzerorstride.pngc                      [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#nUR                  X#USSS9  g )Nr2   r3   r   r   r   r  r&  r   s        r.   test_wireframe3dzerorstrider.  e  sH    
**,C	D	)B""4(GA!aAq"5r0   c            	      
   [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#n[
        R                  " [        5         UR                  X#USSS9  S S S 5        g ! , (       d  f       g = f)Nr2   r3   r   r   r  )	rB   rC   rD   r   r   rC  rD  
ValueErrorr'  r   s        r.    test_wireframe3dzerostrideraisesr1  m  s`    
**,C	D	)B""4(GA!	z	"
!1a8 
#	"	"s   A44
Bc            	         [         R                  " 5       n U R                  SS9n[        R                  " S5      u  p#n[
        R                  " [        5         UR                  X#USSS9  S S S 5        [
        R                  " [        5         UR                  X#USSS9  S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr2   r3   r   r   r  )r  rW  )r  rV  )
rB   rC   rD   r   r   rC  rD  r0  r'  r[  r   s        r.   test_mixedsamplesraisesr3  u  s    
**,C	D	)B""4(GA!	z	"
!2b9 
#	z	"
aB7 
#	" 
#	"	"	"s   B)B:)
B7:
Czquiver3d.pngg~jth?c                     [         R                  " 5       n U R                  SS9n/ SQn/ SQn[        [	        X#5      5       H]  u  nu  pV[
        R                  " SS/SS/SS/5      u  pxn	U* n
U* nU	* nU	SU-  -  n	UR                  XxXXSXVS	9	  UR                  XxXS
9  M_     UR                  SS5        UR                  SS5        UR                  SS5        g )Nr2   r3   )tipmiddletail)ztab:bluez
tab:orangez	tab:green      r$  r   r   )r   pivotr   r   rm   rn   ro   )rB   rC   rD   rw   r'   r    r   quiverrj  r  r  r  )rG   r(   pivotsr   r}   r9  r   rX   rY   rZ   uvws                r.   test_quiver3dr@    s    
**,C	D	)B&F4F&s6':;>E++tSkD#;sDaBBB	QU

		!a1E	G


1
( < KKAKKAKKAr0   c                 ~    UR                  SS9  / =n=n=n=n=pgU R                  SS9nUR                  X#XEXgSSSS9	  g )Nr2   r3   r  r5  Tr   r9  	normalize)rD   r;  )	r;   r<   rX   rY   rZ   r=  r>  r?  r(   s	            r.   test_quiver3d_emptyrD    sZ    4(AAA					.BIIaA!s%4IHr0   zquiver3d_masked.pngc                  *   [         R                  " 5       n U R                  SS9n[        R                  SSS2SSS2SSS24   u  p#n[        R
                  " [        R                  U-  5      [        R                  " [        R                  U-  5      -  [        R                  " [        R                  U-  5      -  n[        R                  " [        R                  U-  5      * [        R
                  " [        R                  U-  5      -  [        R                  " [        R                  U-  5      -  nS[        R                  " [        R                  U-  5      -  [        R                  " [        R                  U-  5      -  [        R
                  " [        R                  U-  5      -  n[        R                  R                  S	U:  US
:  -  USS9n[        R                  R                  S
U:  US:  -  USS9nUR                  X#XEXgS
SSS9	  g )Nr2   r3   rn   r   y              $@r  y              @g>,p ?皙ٿr  F)copyr  r5  TrB  )rB   rC   rD   r    r  r4  r3  r5  r  masked_wherer;  )rG   r(   rX   rY   rZ   r=  r>  r?  s           r.   test_quiver3d_maskedrI    s   
**,C	D	)B hhr#cz2c#:r#by89GA!
ruuqyBFF25519--ruuqy0AAA			RVVBEEAI..	1BBARVVBEEAI&&	)::RVVBEEAI=NNA
D1HS115AA
C!GC0!%@AIIaA!s%4IHr0   zquiver3d_colorcoded.pngc            
      J   [         R                  " 5       n U R                  SS9n[        R                  " S5      =n=n=pE[        R
                  " S5      =pg[         R                  S   " XwR                  5       -  5      nUR                  X#XdXuUS9  UR                  SS5        g )Nr2   r3   r         $@Reds)r   r   )
rB   rC   rD   r    ru  r   r  r  r;  r  )	rG   r(   rX   rY   r   r   rZ   r   r   s	            r.   test_quiver3d_colorcodedrM    s    
**,C	D	)Bhhrl"A""BYYs^AMM&!"VVX+.EIIaA2%I0KK2r0   c                     [         R                  " 5       n U R                  SS9n[        S5      nUR	                  U5        [
        R                  " U5        UR                  S5        [        R                  " UR                  5       S5      (       d   eU R                  R                  5         [        R                  " UR                  5       S5      (       d   eg )Nr2   r3   r   r   )r  rP  rP  r   )r   r   r   r   )rB   rC   rD   r   	add_patchr   patch_2d_to_3dr  r   
same_colorget_facecolorr   r   )rG   r(   circles      r.   test_patch_modificationrU    s    
**,C	D	)BF^FLL	 
+,f224lCCCCJJOOf224lCCCCr0   c           	         [        SS5      n[        SS5      n[        R                  " / SQ/ SQ/5      n[        R                  " X#/SSS	9nU R                  S
S9nUR                  U5        UR                  S5        UR                  U5        UR                  S5        UR                  5       (       d   eUR                  S5        UR                  5       (       a   e[        SS5      n[        SS5      n[        R                  " / SQ/ SQ/5      n[        R                  " X#/SSUSSS9nUR                  S
S9nUR                  U5        g )NrO  r   )r  r  r   )rP  r$  rP  r  )r$  rP  rP  r$  rm   T)ry  r~  r2   r3   r  r  F)ry  ro  rn  r   r~  )r   r    r!   r   Patch3DCollectionrD   add_collection3dr  r  r  r  r  )r;   r<   patch1patch2r  r   r  r  s           r.   "test_patch_collection_modificationr[    s6    FD!FJ%F,.@ABJ 0Q4PA""d"3GQOODOOJKKU!!!!FD!FJ%F,.@ABJ 0Q*.*&)e	=A   D 1F
Ar0   c                  v   / SQ/ SQ/ SQ/ SQ/n [         R                  " [        SS9   [        R                  " U 5        S S S 5        [
        R                  " U [        S9n [         R                  " [        SS9   [        R                  " U 5        S S S 5        g ! , (       d  f       N`= f! , (       d  f       g = f)	Nr   r   r   r   r   r   r   r   r   r   zlist of \(N, 3\) array-likerA  r  zshape \(M, N, 3\))rC  rD  r0  r   Poly3DCollectionr    r!   r  )polys    r.   &test_poly3dcollection_verts_validationrb    s}    y)Y7D	z)G	Ht$ 
I 88D&D	z)=	>t$ 
?	>	 
I	H 
?	>s   B9B*
B'*
B8zpoly3dcollection_closed.pngc                     [         R                  " 5       n U R                  SS9n[        R                  " / SQ/ SQ/ SQ/[
        5      n[        R                  " / SQ/ SQ/ SQ/[
        5      n[        R                  " U/SS	S
SS9n[        R                  " U/SS	SSS9nUR                  USS9  UR                  USS9  g )Nr2   r3   r]  r^  r   rq   r  rm   r  )r$  r$  r   r$  Try  ro  rn  closed)r   r$  r$  r$  Fautolim)	rB   rC   rD   r    r!   r  r   r`  rX  rG   r(   poly1poly2c1c2s         r.   test_poly3dcollection_closedrm    s    
**,C	D	)BHHiI6>EHHiI6>E			A*<T
KB			A*<U
LBE*E*r0   c                     [        / 5      n [        R                  " U 5        [        U [        R                  5      (       d   eU R                  5       / :X  d   e[        R                  " [        SS9S9u  pUR                  U 5        U R                  5       n[        R                  " U5      (       d   eUR                  R                  5         g )Nr2   r3   r5   )r   r   poly_collection_2d_to_3d
isinstancer`  	get_pathsrB   r7   r8   
add_artistdo_3d_projectionr    isnanr   r   )ra  rG   r(   minzs       r.   #test_poly_collection_2d_to_3d_emptyrv    s    "D	""4(dE223333>>r!!!lldd&;<GCMM$  "D88D>>> JJOOr0   zpoly3dcollection_alpha.pngc                     [         R                  " 5       n U R                  SS9n[        R                  " / SQ/ SQ/ SQ/[
        5      n[        R                  " / SQ/ SQ/ SQ/[
        5      n[        R                  " U/SS	S
SS9nUR                  S5        [        R                  " U/SSS9nUR                  S5        UR                  S	5        UR                  S5        UR                  USS9  UR                  USS9  g )Nr2   r3   r]  r^  r   rq   r  rm   r  r$  r$  r   Trd  r$  F)ry  re  )r   r$  r$  rf  )rB   rC   rD   r    r!   r  r   r`  r  r  r  rX  rh  s         r.   test_poly3dcollection_alphary    s    
**,C	D	)BHHiI6>EHHiI6>E			A*7
FBLL			Ae	DB]#SLLE*E*r0   zadd_collection3d_zs_array.pngc                     [         R                  " S[         R                  -  S[         R                  -  S5      n [         R                  " SSS5      nUS-  S-   nU[         R                  " U 5      -  nU[         R                  " U 5      -  n[         R
                  " X4U/5      R                  SSS5      n[         R                  " US S USS  /SS	9n[        R                  " 5       nUR                  S
S9n[        R                  " SS[         R                  -  5      n	[        US S 2S S 2S S24   SU	S9n
U
R                  [         R                  " U S[         R                  -  5      5        UR                  XS S 2S S 2S4   S9nUc   eS[        R                   S'   UR#                  SS5        UR%                  SS5        UR'                  SS5        g )Nr2  rs   r   r  r   r   rn   rm   r  r2   r3   r   twilightr   r  r   Tr   rU  ro   r   )r    r,  r3  r4  r5  column_stackr  concatenaterB   rC   rD   r  r   	set_arraymodrX  r   r  r  r  r7  rZ   r*   rX   rY   pointssegmentsrG   r(   r  lcrP   s               r.   test_add_collection3d_zs_arrayr     s{   KKRUU
AIs3E
B3A	1qA	BFF5MA	BFF5MA__aAY'//Aq9F~~vcr{F12J7a@H
**,C	D	)B==AbeeG$D	Arr*$	GBLLqw'(rq!Qw&78D(,CLL$%KKAKKAKKAr0   zadd_collection3d_zs_scalar.pngc                     [         R                  " SS[         R                  -  S5      n SnUS-  S-   nU[         R                  " U 5      -  nU[         R                  " U 5      -  n[         R
                  " X4/5      R                  SSS5      n[         R                  " US S USS  /SS9n[        R                  " 5       nUR                  SS9n[        R                  " SS[         R                  -  5      n	[        US	U	S
9n
U
R                  U 5        UR                  XS9nUc   eS[        R                  S'   UR!                  SS5        UR#                  SS5        UR%                  SS5        g )Nr   r   r   r   rn   r  r2   r3   r{  r|  r}  Tr   rU  ro   r2  r   )r    r,  r3  r4  r5  r~  r  r  rB   rC   rD   r  r   r  rX  r   r  r  r  r  s               r.   test_add_collection3d_zs_scalarr  =  s7   KK1ruu9c*E	A	1qA	BFF5MA	BFF5MA__aV$,,RA6F~~vcr{F12J7a@H
**,C	D	)B==AbeeG$D	z	=BLLr(D(,CLL$%KKAKKAKK1r0   c                     [         R                  " 5       n U R                  SS9nSS/SS/SS//n[        R                  " U5      nUR                  U5        [        R                  " UR                  5       S	5      (       d   e[        R                  " UR                  5       S
5      (       d   e[        R                  " UR                  5       S5      (       d   eg )Nr2   r3   r   )r   rs   r   r   r   rm   )r   r   r   r   r   rs   )r   rs   ro   )gUUUUUUgUUUUUU @gUUUUUUUUUUUU@)ggj@)rB   rC   rD   r   Line3DCollectionrX  r    allclose
get_xlim3d
get_ylim3d
get_zlim3d)rG   r(   linesr  s       r.   !test_line3dCollection_autoscalingr  X  s    
**,C	D	)B###%E 
			&B;;r}}(STTTT;;r}}(QRRRR;;r}}(QRRRRr0   c                     [         R                  " 5       n U R                  SS9n[        R                  " / SQ/ SQ/ SQ/5      n[
        R                  " U/5      nUR                  U5        [        R                  " UR                  5       S5      (       d   e[        R                  " UR                  5       S5      (       d   e[        R                  " UR                  5       S5      (       d   eg )Nr2   r3   r   r  r  UUUUUUgUUUUUU?)gSUUUUUr  )rB   rC   rD   r    r!   r   r`  rX  r  r  r  r  )rG   r(   ra  cols       r.   !test_poly3dCollection_autoscalingr  g  s    
**,C	D	)B88Y	956D

 
 $
(C;;r}}(STTTT;;r}}(STTTT;;r}}(PQQQQr0   zaxes3d_labelpad.pngc                     [         R                  " 5       n U R                  [        U 5      5      nUR                  R
                  [        R                  S   :X  d   eUR                  SSS9  UR                  R
                  S:X  d   eUR                  S5        UR                  SSS9  UR                  R
                  S:X  d   eUR                  5       S:X  d   eSUR                  l        SUR                  l        [        UR                  R                  5       5       H-  u  p#UR!                  UR#                  5       S	-   US	-  -
  5        M/     g )
Nzaxes.labelpadzX LABELr   )labelpadzY LABELzZ LABELr   r   ro   )rB   rC   add_axesr   rM   r  r  r   r   r   r   rO   
get_zlabelrN   rw   get_major_ticksset_padget_pad)rG   r(   r}   ticks       r.   test_axes3d_labelpadr  r  s   
**,C	fSk	"B88_ ====MM)bM)88"""MM)MM)bM)88"""==?i'''BHHBHH RXX5578T\\^a'!a%/0 9r0   zaxes3d_cla.pngc                      [         R                  " 5       n U R                  SSSSS9nUR                  5         UR	                  5         g )Nr   r2   r3   )rB   rC   rD   r  clarF   s     r.   test_axes3d_clar    s8     **,C	AqT	2BOOFFHr0   zaxes3d_rotated.pngc                  x    [         R                  " 5       n U R                  SSSSS9nUR                  SSS5        g )Nr   r2   r3   r   -   r   )rB   rC   rD   r   rF   s     r.   test_axes3d_rotatedr    s5     **,C	AqT	2BLLRr0   c                     [         R                  " SSSS9n [         R                  " SSSS9n[         R                  " X5      u  p#[         R                  R	                  S5      n[
        R                  " SS9nUR                  SSSS	S
9n[        R                  " [        5         UR                  X#U5        S S S 5        g ! , (       d  f       g = f)Nr$  r   r   )num)   r   r   r   r   r2   r3   )r    r,  r   r%  randnrB   rC   rD   rC  rD  r0  r[  )rX   rY   r   r   rZ   rG   r(   s          r.   test_plotsurface_1d_raisesr    s    
C%A
C%A;;qDA
		A
**W
%C	AqT	2B	z	"
a  
#	"	"s   $C  
Cc                  X   [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " / SQ5      nSn[        R                  " XX#5      u  pEn[        R                  " XEX`5      n[        R
                  " SSS5      n[         R                  " X5      n	U	$ )N)r#  ii  )r   r   r   r]  r   r   r   r   )r    r!   r   
_view_axes_view_transformation_uvw_persp_transformationdot)
Er_  Vr   r=  r>  r?  viewMperspMMs
             r.   _test_proj_make_Mr    s    
$%A
!A
ADa.GA!++A!7E))#tQ7F
vAHr0   c                     [        5       n [        R                  R                  U 5      n[        R                  " / SQ5      S-  n[        R                  " / SQ5      S-  n[        R                  " / SQ5      S-  n[
        R                  " X#X@5      u  pVn[
        R                  " XVXq5      u  pn
[        R                  R                  X5        [        R                  R                  X5        [        R                  R                  X5        g )N
r   r   r   r   r   r   r   r   r   r        r@
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   )
r  r    linalginvr!   r   proj_transforminv_transformr   assert_almost_equal)r  invMr   r   r   txstystzsixsiysizss              r.   test_proj_transformr    s    A99==D	0	1E	9B	0	1E	9B	0	1E	9B))""8MCc((3=MCcJJ""3+JJ""3+JJ""3+r0   r   c                 J   SUSS/nSSUS/nSSSU/n[         R                  " XEX`5      u  pxn	[        Xx5      u  ppX4X4X4/n[        R                  " U0 UD6u  p[        U5      nUR                  USS9  [        Xx/ SQ5       H  u  nnnUR                  UUU5        M     X4$ )Nr   _datalim_onlyrf  )r:  rX   rY   rZ   )r   r  r'   rB   r7   r   add_collectionrd  )r  rc  argskwargsr   r   r   r  r  r  r:  r(   ayazr  rG   linecrX   rY   rM  s                       r.   _test_proj_draw_axesr    s    
Q1B
Q1B
Q1B))""8MCcMMA2Wqgw'EllD+F+GC5!Ee_5s!561a
1a 7 7Nr0   zproj3d_axes_cube.pngc                  $   [        5       n SR                  5       n[        R                  " / SQ5      S-  n[        R                  " / SQ5      S-  n[        R                  " / SQ5      S-  n[        R
                  " X#X@5      u  pVn[        U SS9u  pU	R                  XVUS9  U	R                  XVS	S9  [        XVU5       H  u  pnU	R                  XU5        M     S
[        R                  S'   U	R                  SS5        U	R                  SS5        g )N0 1 2 3 0 4 5 6 7 4r  r  r  r  i  rb  rt  r*   Tr   皙ɿr  )r  splitr    r!   r   r  r  rj  r6  r'   rd  rB   r   r  r  )r  tsr   r   r   r  r  r  rG   r(   rX   rY   rM  s                r.   test_proj_axes_cuber    s    A		$	$	&B	0	1E	9B	0	1E	9B	0	1E	9B))""8MCc"1,GCJJs3JGGCGs$a
a % )-CLL$%KKcKKcr0   zproj3d_axes_cube_ortho.pngc                  l   [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " / SQ5      nSn[        R                  " XX#5      u  pEn[        R                  " XEX`5      n[        R
                  " SS5      n[         R                  " X5      n	SR                  5       n
[         R                  " / SQ5      S	-  n[         R                  " / S
Q5      S	-  n[         R                  " / SQ5      S	-  n[        R                  " XX5      u  pn[        U	SS9u  nnUR                  XSU-
  S9  UR                  XSS9  [        XU
5       H  u  nnnUR                  UUU5        M     S[        R                  S'   UR!                  SS5        UR#                  SS5        g )N)   r   r   r   r]  r   rn   r   r  r  r   r  r     rb  r   r*   rt  Tr   i8r  )r    r!   r   r  r  _ortho_transformationr  r  r  r  rj  r6  r'   rd  rB   r   r  r  )r  r_  r  r   r=  r>  r?  r  orthoMr  r  r   r   r   r  r  r  rG   r(   rX   rY   rM  s                         r.   test_proj_axes_cube_orthor    sa   
!A
A
ADa.GA!++A!7E))"a0F
vA		$	$	&B	0	1C	7B	0	1C	7B	0	1C	7B))""8MCc"1,GCJJs3s7J#GGCGs$1a
1a % )-CLL$%KKcKKcr0   c                      Su  pSu  p#Su  pE[         R                  " XX#XE5      n[        R                  R	                  U/ SQ/ SQ/ SQ/ SQ/5        g )N)r   x   )r   r   )r  r  )r   r   r   rU  )r   g{Gzt?r   r$  )r   r   rK  rn   r   r   r   r   )r   world_transformationr    r   assert_allclose)r   r   r   r   r   r   r  s          r.   
test_worldr    sP    JDJDJD##DDGAJJq 0 2 / , ./r0   c                     [         R                  " SS0S9u  pUR                  5       S:X  d   eSUl        UR	                  SSSS9  UR                  SS	/SS	/SS	/5        UR                  5       S
:X  d   eUR                  S5        UR                  S5        UR                  SS/SS/SS/5        UR                  5       S:X  d   eUR                  SS9  UR                  SS/SS/SS/5        UR                  5       S:X  d   eg )Nr4   r2   r5   linearr   r  r  rX   rY   rZ   r   )r   r   r  皙?r  g333333?FTr   )r   r   r  r  rF  333333@rX   r  )r   r   r  r  rF  r  )	rB   r7   
get_zscale_view_marginmarginsr6  
get_w_lims	autoscaleset_autoscalez_onrF   s     r.   test_autoscaler    s    ll|T&:;GC==?h&&&BOJJbBJGGQFQFQF#==?8888LLGGQFQFQF#==?8888LLcLGGQFQFQF#==?8888r0   rQ   r  rh   )TFNc                    [         R                  " 5       nUR                  SS9n[        R                  " S5      n[        R
                  " SSS5      nUR                  XE5        [        USU  S35      n[        USU  S	35      n[        US
U  S	35      nUc  U" 5       OUn	U" SUS9  X" 5       :X  d   eUR                  R                  5         [        R                  R                  U" 5       S5        g )Nr2   r3   r   r  r  get_autoscale_onset_limget_)r8  r$  )rh   )rB   rC   rD   r    r   r,  rj  getattrr   r   r   assert_array_equal)
rQ   rh   rG   r(   rX   rY   get_autoscale_onset_limget_lim	post_autos
             r.   test_unautoscaler  $  s     **,C	D	)B
		#A
D#s#AJJqr]4&#<=bDc*+GbDc*+G&*l "IKd#(****JJOOJJ!!')[9r0   c                 b   Sn[        X4U5       H  u  p4UR                  SS9n[        U5      S-   n[        R                  " SXF5      n[        R
                  " U5      n[        R                  " U5      n	UR                  XxU	S5        UR                  SSSS9  UR                  S	S
S5        M     g )N)r   r  r2   r3   r   r   r  )rU  ro   xlimylimzlimro   r   )
r'   rD   r%   r    r,  onesru  r6  rb   r   )
r;   r<   xminsrG   r   r(   nr   r   r   s
             r.   test_cullingr  :  s    E(,e4	___-IM[[D$WWQZXXa[
C 
G'8
QQ 5r0   c                  \   [         R                  " 5       n U R                  SS9n[        R                  " [
        5         UR                  SSS9  S S S 5        [        R                  " [
        5         UR                  SSS9  S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Nr2   r3   perspr   focal_lengthr   r   )rB   rC   rD   rC  rD  r0  r   rF   s     r.   test_axes3d_focal_length_checksr  I  sx    
**,C	D	)B	z	"
q1 
#	z	"
q1 
#	" 
#	"	"	"s   B2B
B
B+zaxes3d_focal_length.pngc                      [         R                  " SSSS0S9u  pUS   R                  S[        R                  S9  US   R                  SS	S9  g )
Nr   r   r4   r2   r5   r   r	  r
  333333?)rB   r7   r   r    inf)rG   rd   s     r.   test_axes3d_focal_lengthr  R  sO     ||AqlD-ABHCFrvv6Ft4r0   zaxes3d_ortho.pngc                  n    [         R                  " 5       n U R                  SS9nUR                  S5        g )Nr2   r3   r   )rB   rC   rD   r   rF   s     r.   test_axes3d_orthor  Z  s+    
**,C	D	)BWr0   zaxes3d_isometric.pngc                     SSK Jn Jn  [        R                  " [        SSSS9S9u  p#SnU " [        R                  " [        U" XDU5      5      5      S	5       HJ  u  pV[        XV-
  5      R                  5       US
   US   -
  :X  d  M/  UR                  " [        XV5      SS06  ML     UR                  [        R                  " [        R                  " S[        R                   " S	5      -  5      5      SSS9  UR#                  S5        g )Nr   )r   r#   r2   r   )rs   rs   rs   )r4   	proj_type
box_aspectr5   )rn   r   r   r   r   r  r  r  r   T)r   r   r#   rB   r7   r8   r    r!   r"   r%   r$   r&   r'   r   degreesarctanr  rE   )r   r#   rG   r(   r*   rc  es          r.   test_axes3d_isometricr  a  s    /lld' GC
 	ARXXd71+;&<=qAqu:>>qtad{*IIs1y(C( B LLbjj2
?!;<3QLOGGDMr0   c                    U R                  SS9n[        R                  " SSS5      n[        R                  " SSS5      n[        R                  " X45      u  pVXV-   nUR	                  XVUSS SSSS	9  UR                  S
S
/SS/S
S/SSSSS9  UR                  UR                  5       UR                  5       UR                  5       S-   SS9  UR                  UR                  5       UR                  5       UR                  5       S-   SUR                  5       -  SUR                  5       -  SUR                  5       -  S-   SSS9  UR                  US   US   US   S-   SSS9  UR                  SS
SSSS9  UR                  SSSS9  UR                  SS9nUS
:*  nXX   R                  SS5      nXh   R                  SS5      nXx   R                  SS5      nUR	                  XVUSS SSSS	9  UR                  S
S
/SS/S
S/SSSSS9  UR                  UR                  5       UR                  5       UR                  5       S-   SS9  UR                  UR                  5       UR                  5       UR                  5       S-   SUR                  5       -  SUR                  5       -  SUR                  5       -  S-   SSS9  UR                  US   US   US   S-   SSS9  UR                  SSSS9  g )Nr2   r3   r   r   r   r  r  T)rn  r  rV  rW  
axlim_clipr$        ?r  rm   ro   )r   rX  zorderr  )r  r   )arrow_length_ratior  r  )r   r  r  rs   test)r   r$  r   r   )r   ro   r   r   F)rD   r    r,  r   r[  r6  rj  r   r;  rd  rb   r  )	r;   r<   r(   rX   rY   r   r   r   idxs	            r.   test_axlim_clipr"  q  s    
				.B
Aq"A
Aq"A;;qDA	AOOA!tbT  ; GGS#JAc
1  ?JJqwwy!'')QWWY]tJDIIaggiAGGIM	k1QWWY;!'')a!"t  5 GGAaD!A$!qG>GGCaDG1FFvFF3 
				-B8C	r1A	r1A	r1AOOA!tbU  <GGS#JAc
1  @JJqwwy!'')QWWY]uJEIIaggiAGGIM	k1QWWY;!'')a!"u  6 GGAaD!A$!qG?FFvFF3r0   value)setterside))r  left)r  right)r  bottom)r  top)r\  r(  )r\  r)  c                     X0n[         R                  " 5       nUR                  SS9n[        R                  " [
        5         [        XP5      " S0 UD6  S S S 5        g ! , (       d  f       g = f)Nr2   r3    )rB   rC   rD   rC  rD  r0  r  )r$  r%  r#  limitrG   objs         r.   test_invalid_axes_limitsr.    sN     ME
**,C
//T/
*C	z	"%u% 
#	"	"s   A
A+c                       \ rS rSr\" S/SS9S 5       r\" S/SS9S 5       r\" S/SS9S	 5       r\" S
/SS9S 5       r\" S/SS9S 5       r	\" S/SS\
R                  S:X  a  SOSS9S 5       rS rSrg)
TestVoxelsi  zvoxels-simple.pngr>   r?   c                     [         R                  " SS0S9u  p[        R                  " S5      u  p4nX4:H  XE:H  -  nUR	                  U5        g )Nr4   r2   r5   )ro   rs   rm   )rB   r7   r    indicesvoxels)selfrG   r(   rX   rY   rZ   r3  s          r.   test_simpleTestVoxels.test_simple  sC    ,,<*>?**Y'a&QV$
		&r0   zvoxels-edge-style.pngc                    [         R                  " SS0S9u  p[        R                  " S5      u  p4nUS-
  S-  US-
  S-  -   US-
  S-  -   S:  nUR	                  USS	S
9nU[        UR                  5       5         R                  S5        g )Nr4   r2   r5   )ro   ro   rs   r   r  g](\@rm   r  )ry  ro  r  )rB   r7   r    r2  r3  r  keysr  )r4  rG   r(   rX   rY   rZ   r3  r>  s           r.   test_edge_styleTestVoxels.test_edge_style  s    ,,<*>?**Y'aq51*Az)QsUQJ6&@IIfdI; 	
#affh-&&t,r0   zvoxels-named-colors.pngc                 (   [         R                  " SS0S9u  p[        R                  " S5      u  p4nX4:H  XE:H  -  nXcU-  U-  S:  ) -  n[        R                  " SS[        R
                  S9nSXsS	:  US	:  -  '   S
XsU-   S:  '   UR                  XgS9  g)z5Test with colors set to a 3D object array of strings.r4   r2   r5   r   r   r   r   r  r  z0.25ro   cyanr   r  N)rB   r7   r    r2  r  object_r3  r4  rG   r(   rX   rY   rZ   r3  r   s           r.   test_named_colorsTestVoxels.test_named_colors  s     ,,<*>?**\*a&QV$EAIM**t2::>$*A!a% !%A|
		&	,r0   zvoxels-rgb-data.pngc                     [         R                  " SS0S9u  p[        R                  " S5      u  p4nX4:H  XE:H  -  n[        R                  " S5      nUS-  US'   US-  US'   US-  US	'   UR                  XgS
9  g)z5Test with colors set to a 4d float array of rgb data.r4   r2   r5   r<  )r   r   r   rm   r  .r   .r   .r   r  N)rB   r7   r    r2  ru  r3  r?  s           r.   test_rgb_dataTestVoxels.test_rgb_data  s|     ,,<*>?**\*a&QV$/*QvQvQv
		&	,r0   zvoxels-alpha.pngc                    [         R                  " SS0S9u  p[        R                  " S5      u  p4nX4:H  n[        R                  " X4-
  5      S:  nXg-  n[        R
                  " S5      n	/ SQX'   / SQX'   UR                  XS	9n
[        U
5      [        L d   eU
R                  5        H6  u  pX   (       d   S
5       e[        U[        R                  5      (       a  M6   e   g )Nr4   r2   r5   r<  r   )r   r   r   rs   )r   r   r   r$  )r   r   r   r$  r  zfaces returned for absent voxel)rB   r7   r    r2  r%   ru  r3  typer8   itemsrp  r   r`  )r4  rG   r(   rX   rY   rZ   v1v2r3  r   r>  coordra  s                r.   
test_alphaTestVoxels.test_alpha  s    ,,<*>?**\*aVVVAE]Q/*#
#
IIfI0Aw$779KE=C"CC=dE$:$:;;;; %r0   zvoxels-xyz.pngFwin32r   r   )r   r   r   c                    [         R                  " SS0S9u  pS n[        R                  " S5      S-  u  pEnU" U5      nU" U5      nU" U5      n	US-
  S-  US-
  S-  -   U	S-
  S-  -   S	:  n
[        R                  " U
R
                  S
-   5      nX{S'   XS'   XS'   UR                  XEXjU[        R                  " SU-  S-
  SS5      SS9  g )Nr4   r2   r5   c                     Sn[        U R                  5       HM  nX[        R                  S S -      X[        R                  SS  -      -   S-  n U[        R                  S S  -  nMO     U $ )Nr+  rn   r   rR  )r   ndimr    	index_exp)rX   slr}   s      r.   	midpoints&TestVoxels.test_xyz.<locals>.midpoints  sm    B166]BLL"--.BLL,,-.145bll1o% # Hr0   )   rX  rX  g      0@r$  r   r  )rm   rC  rD  rE  r   r   )r  r  rX  )rB   r7   r    r2  ru  r  r3  r  )r4  rG   r(   rV  r*   r   r   rcgcbcspherer   s               r.   test_xyzTestVoxels.test_xyz  s     ,,<*>?	 **\*T1aq\q\q\ s(Q"s(Q."s(Q>G &,,-.vvv 			!#WWQvX^Q: 	 	!r0   c           	      6   [         R                  " S5      u  pn[         R                  " S5      n[        R                  " SS0S9u  pV[        5       [        SS94 HT  nUR                  " U40 UD6  UR                  " SSU0UD6  UR                  " XX440 UD6  UR                  " XU4SU0UD6  MV     [        R                  " [        S	S
9   UR                  XX4US9  S S S 5        [        R                  " [        S	S
9   UR                  X5        S S S 5        [        R                  " [        SS
9 nUR                  XAX#S9  S S S 5        WR                  R                  S:X  d   eg ! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       NM= f)Nrr   )r   rm   rs   r4   r2   r5   r  )ro  filledr3  rA  )r`  zkeyword argument 'x')r`  rX   rY   rZ   rX   r+  )r    r2  r  rB   r7   r8   r3  rC  rD  	TypeErrorAttributeErrorr#  name)	r4  rX   rY   rZ   r`  rG   r(   kw	exec_infos	            r.   test_calling_conventions#TestVoxels.test_calling_conventions  sC   **Y'a#,,<*>? 64#./BIIf##II*V*r*IIaA,,IIaA3f33	 0 ]]9H5IIaAfI5 6 ]]9H5IIaO 6 ]]>1GHIIIVAI3 I##s*** 65 65 IHs$   E(?E92F
(
E69
F

Fr+  N)__name__
__module____qualname____firstlineno__mpl3d_image_comparisonr5  r9  r@  rF  rN  sysplatformr]  rf  __static_attributes__r+  r0   r.   r0  r0    s    01A B 45WE- F- 67wG
- H
- 237C
- D
- /0@< A<" -.E),)@aI!I!@+r0   r0  c                     SS/SS/SS/p!n SS/S	S
/SS/pTn[         R                  " 5       nUR                  SS9nUR                  XU5      nUS   n	[        R
                  R                  XU4U	R                  5       5        U	R                  X4U5        [        R
                  R                  X4U4U	R                  5       5        U	R                  U 5        U	R                  U5        U	R                  USS9  [        R
                  R                  XU4U	R                  5       5        U	R                  SSS9  [        R
                  R                  X[        R                  " U5      4U	R                  5       5        g )Nr   r   r   rm   rs   ro   r   r  r  r  r   r   r2   r3   rZ   r  )rB   rC   rD   r6  r    r   r  get_data_3drG  	set_xdata	set_ydataset_3d_propertiesr   )
rX   rY   rZ   r  r  r  rG   r(   r  rP   s
             r.   test_line3d_set_get_data_3dru  %  s@   !fq!fq!f!AQ!Q"bBB
**,C	D	)BGGA!E8DJJ!!1)T-=-=-?@RR JJ!!22,0@0@0BCNN1NN1ac*JJ!!1)T-=-=-?@ac*JJ!!1q)9":D<L<L<NOr0   c                     U R                  SS9nUR                  / SQ/ SQ/ SQ5        UR                  5         UR                  SS9nUR                  5         UR                  / SQ/ SQ/ SQ5        g )Nr2   r3   )r   r   r   r   )r   r   r   r   )r   r   r   r   )rD   r6  invert_yaxisr:   s      r.   test_invertedrx  7  s^     
				.BGGNO];OO					-BOOGGNO];r0   c                  ^   [         R                  " SS0S9u  pUR                  5       (       a   eUR                  5       (       a   eUR	                  5       (       a   eUR                  SS5        UR                  SS5        UR                  SS5        UR                  5       (       d   eUR                  5       (       d   eUR	                  5       (       d   eUR                  5         UR                  5       (       a   eUR                  5       (       a   eUR	                  5       (       a   eg )Nr4   r2   r5   r   r   )	rB   r7   xaxis_invertedyaxis_invertedzaxis_invertedr  r  r  r  rF   s     r.   test_inverted_clar}  C  s    ll|T&:;GC  """"  """"  """"KK1KK1KK1FFH  """"  """"  """""r0   c                  F   [         R                  " 5       n [        U 5      nUR                  SSS9  UR                  SSS9  UR                  SSS9  U R                  R                  5         UR                  R                  5        H  nUR                  R                  S:X  a  M   e   UR                  R                  5        H  nUR                  R                  S:X  a  M   e   UR                  R                  5        H  nUR                  R                  S:X  a  M   e   g )NrX   r   )rQ   r   rY   rZ   )rB   rC   r   tick_paramsr   r   rM   r  	tick1line_colorrN   rO   )rG   r(   r  s      r.   test_ax3d_tickcolourr  W  s    
**,C	BNNEN*NNEN*NNEN*JJOO((*~~$$--- +((*~~$$--- +((*~~$$--- +r0   c                    U R                  SSSS0S9nUR                   H  nUR                  SS5        M     [        U/ SQ5       H  u  pEUS	   R	                  US
S9  US   R	                  USS9  US   R	                  U[
        R                  S   (       + S9  US   R	                  U[
        R                  S   (       + S9  US   R	                  U[
        R                  S   (       + S9  M     S nUR                  SSSS0S9nUR                   H  nUR                  SS5        M     [        US/S/S// SQ/5       H  u  pGU" US	   U5       H  nUR                  S5        M     U" US   U5       H  nUR                  S5        M     U" US   U5       H*  nUR                  [
        R                  S   (       + 5        M,     U" US   U5       H*  nUR                  [
        R                  S   (       + 5        M,     U" US   U5       H*  nUR                  [
        R                  S   (       + 5        M,     M     g )Nrs   ro   r4   r2   r5   g    cAg   @cA)rX   rY   rZ   rV   r   plain)rQ   r   r   )r  r   )rQ   	scilimitsr   zaxes.formatter.useoffset)rQ   	useOffsetrm   zaxes.formatter.use_locale)rQ   	useLocalezaxes.formatter.use_mathtext)rQ   useMathTextc                 `    U Vs/ s H  n[        X5      R                  5       PM     sn$ s  snf r  )r  get_major_formatter)r(   namesrc  s      r.   get_formatters-test_ticklabel_format.<locals>.get_formattersz  s(    DIJED!557EJJJs   #+rM   rN   rO   )rM   rN   rO   F)r7   r   r  r'   ticklabel_formatr  r   set_scientificset_powerlimitsset_useOffsetset_useLocaleset_useMathText)	r;   r<   rd   r(   rowrc  r  r  fmts	            r.   test_ticklabel_formatr  h  sG   


AqlD-A

BChh
C" 56	AW 	  	&A 	  	*AS\\2L%M!M 	  	OAS\\2M%N!N 	  	PALL)FGG 	  	I 7K 

1a\4,@

AChh
C" 7)gY	3NO
 "#a&%0Cu% 1!#a&%0C( 1!#a&%0C#,,/I"JJK 1!#a&%0C#,,/J"KKL 1!#a&%0CLL!>??A 1r0   c                 b   Sn[         R                  " [         R                  " SSS5      [         R                  " SSS5      [         R                  " SSS5      5      u  p4n[         R                  " U5      =n=px[	        X4S5       H&  u  pU	R                  SS9nUR                  X4XVXxXS	9  M(     g )
Nr6  gr   r  r   )r   r  r2   r3   )r   r9  )r    r   r   	ones_liker'   rD   r;  )r;   r<   r9  rX   rY   rZ   r=  r>  r?  rG   r   r(   s               r.   test_quiver3D_smoker    s    Ekk
		$3
		$3
		$3GA!
 QAG.9___-
		!a6	? :r0   zminor_ticks.pngc                     [         R                  " 5       R                  SS9n U R                  S/SS9  U R	                  S/SS9  U R                  S/SS9  U R                  S/SS9  U R                  S	/SS9  U R                  S
/SS9  g )Nr2   r3   r  T)minorquartergQ?thirdr$  half)	rB   rC   rD   rJ   set_xticklabelsrK   set_yticklabelsrL   set_zticklabels)r(   s    r.   test_minor_ticksr    s    		!	!T	!	2BMM4&M%	{$/MM4&M%y-MM4&M%xt,r0   zerrorbar3d_errorevery.pngc            
         [         R                  " SS[         R                  -  S-   S5      n [         R                  " U 5      [         R                  " SU -  5      [         R                  " SU -  5      p2n[
        R                  " 5       nUR                  SS9nS	n[         R                  " U R                  5      nXv-  S:H  Xv-  S-  S:H  -  nXv-  S:H  Xv-  S-  S:H  -  n	UR                  XUS
XUS9  g)z0Tests errorevery functionality for 3D errorbars.r   r   r  r   rm   ro   r2   r3      r  )zuplimszlolims
erroreveryN)
r    r   r3  r4  r5  rB   rC   rD   r  errorbar)
rM  rX   rY   rZ   rG   r(   estepr}   r  r  s
             r.   test_errorbar3d_erroreveryr    s     			!QruuWRZ&AffQi!bffQqSk!A
**,C	D	)BE
		!&&AyA~!*q.A"56GyA~!*q.A"56GKKag   "r0   zerrorbar3d.pnggQ?c                      [         R                  " 5       n U R                  SS9n/ SQn/ SQnUR                  X"X#X3S/ SQ/ SQSS	S
S9  UR	                  5         g)z9Tests limits, color styling, and legend for 3D errorbars.r2   r3   )r   r   rm   rs   ro   )r$  r$  r$  r$  r$  rm   )FTFTT)TFFTFTpurplezError lines)rX   rY   rZ   xerryerrzerrcapsizer  r  yuplimsecolorr   N)rB   rC   rD   r  legend)rG   r(   dr  s       r.   test_errorbar3dr    s[     **,C	D	)BAAKK!AAq89}	  6
 IIKr0   z
stem3d.pnggMb?c                  N   [         R                  " SSSSSS0S9u  p[        R                  " SS[        R                  -  5      n[        R
                  " U[        R                  S-  -
  5      n[        R                  " U[        R                  S-  -
  5      nUn[        US   / S	Q5       H)  u  pgUR                  X4XWS
9  UR                  SU 35        M+     [        R                  " [        R                  * S-  [        R                  S-  S5      n[        R                  " U5      n[        R
                  " U5      n[        US   / S	Q5       HQ  u  pgUR                  X4USSSUS9u  pn
UR                  SU 35        UR                  SSS9  U
R                  S5        MS     g )Nr   rm   )r  r   Tr4   r2   r   constrained_layoutr6   r   r  )orientationzorientation=r   r   zC4-.C1Dr  )linefmt	markerfmtbasefmtr  rW   )rT  markeredgewidth)rB   r7   r    r,  r3  r5  r4  r'   stemrx   r  rb   set_linewidth)rG   rd   r7  rX   rY   rZ   r(   r   
markerline	stemlinesbaselines              r.   test_stem3dr    sc    ||Aq&/3(4d';=HC KK1RUU7#E
uruuQwA
uruuQwAAA0
a*
|D6*+ 1 	RUUF1HbeeAgr*A
QA
q	AA0*,''!eT +2 +'
x 	|D6*+vqAq! 1r0   zequal_box_aspect.pngc                     SSK Jn Jn  [        R                  " 5       nUR                  SS9n[        R                  " SS[        R                  -  S5      n[        R                  " S[        R                  S5      n[        R                  " [        R                  " U5      [        R                  " U5      5      n[        R                  " [        R                  " U5      [        R                  " U5      5      n[        R                  " [        R                  " U5      [        R                  " U5      5      nUR                  XgU5        SS/n	U" [        R                  " [        U " XU	5      5      5      S5       H[  u  p[        R                   " [        R"                  " X-
  5      5      U	S   U	S   -
  :X  d  M@  UR$                  " ['        X5      S	S
06  M]     [        R(                  " UR+                  5       UR-                  5       UR/                  5       /5      n[1        US   5      [3        US   5      /nUR5                  U5        UR7                  U5        UR9                  U5        UR;                  S5        UR=                  S5        [>        R@                  " [B        SS9   UR=                  SSS9  S S S 5        g ! , (       d  f       g = f)Nr   )r#   r   r2   r3   r   r   rn   r   r   r   offrq   zArgument zoom =rA  )zoom)"r   r#   r   rB   rC   rD   r    r,  r3  outerr5  r4  r  r[  r!   r"   r$   r%   r&   r'   r~  r  r  r  r  r  r  r  r\  rQ   ry   rC  rD  r0  )r#   r   rG   r(   r=  r>  rX   rY   rZ   r*   rc  r  xyzlimXYZlims                 r.   test_equal_box_aspectr    s   /
**,C	D	)B 	Aq255y#&A
Aruuc"A
BFF1I&A
BFF1I&A
a"&&),A OOA! 
QARXXd71+;&<=qA66"&&- AaD1Q4K/IIs1y,, B
 __	"--/2==?;F &)nc&)n-FMM&MM&MM&GGENi 	z):	;
)"- 
<	;	;s   (K
Kc                     Sn [         R                  " SU SSSS0S9u  pU Hm  nUR                  [        R                  R                  S5      [        R                  R                  S5      [        R                  R                  S5      5      nMo     [         R                  " WUS	S
9nUR                  R                  5         UR                  R                  5       R                  S   S:  d   eg )Nr   r   )rs   ro   Tr4   r2   r  ro   
horizontal)r(   r  r  )rB   r7   r  r    r%  r  r  r   r   r(   get_positionextents)	num_plotsrG   rd   r(   p_tricbars         r.   test_colorbar_posr    s    I||Ay&/3(4d';=HC 		 2BIIOOA4F "		 24  <<#<@DJJOO77!))!,s222r0   c                     [         R                  " 5       n U R                  SS9nUR                  SS5        UR	                  5       (       a   eUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  S5        UR	                  5       (       a   eUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  5         UR	                  5       (       d   eUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  SS9  UR	                  5       (       d   eUR                  5       S	:X  d   eUR                  5       S:X  d   eUR                  S
S9  UR	                  5       (       d   eUR                  5       S:X  d   eUR                  5       S:X  d   eg )Nr2   r3   r   r   r   )r   r   )r   r   )rT   r   r   r   )rU   )r   r   r   r   )	rB   rC   rD   r  r|  get_zlim
get_zbound
set_zboundinvert_zaxisrF   s     r.   test_inverted_zaxisr  #  s   
**,C	D	)BKK1  """";;=F"""==?f$$$ MM&  """";;=F"""==?f$$$ OO;;=F"""==?f$$$ MMM;;=F"""==?f$$$ MMM;;=F"""==?f$$$r0   c                  p   [         R                  " 5       n U R                  SS9n[        R                  " UR                  5       S5      (       d   eUR                  SS9  [        R                  " UR                  5       S5      (       d   eUR                  SS9  UR                  5       S	:X  d   e[        R                  " [        S
S9   UR                  SSS9  S S S 5        [        R                  " [        SS9   UR                  SSS9  S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nr2   r3   r  r   )r   )r  r   r   )r   r  z"Cannot pass both 'lower' and 'min'rA  r   )r(  r   z"Cannot pass both 'upper' and 'max')r)  r   )
rB   rC   rD   r    r  r  r  rC  rD  ra  rF   s     r.   test_set_zlimr  D  s    
**,C	D	)B;;r{{}n5555KKQK;;r{{}j1111KKQK;;=F"""	A
C
11%
C 
A
C
"
C 
C
C 
C
C 
Cs   
D<D'
D$'
D5c                    Su  p#nU R                  SSS9nU R                  SSUS9nU R                  SSS9nUR                  U5        UR                  X#USS	9  S
 H#  nUR                  USS9n	U	R                  X#US9  M%     g )N)ro   r   r      r2   r3      )r4   	shareview   T)r   r   r   share)r  r  r  r   )rD   r  r   )
r;   r<   r   r   r   r=  r>  ax3subplot_numr(   s
             r.   test_shared_viewr  U  s     D


st

4C


sts

CC


st

4CMM#MMtTM>&   >
$5 'r0   c                  R   [         R                  " 5       n U R                  SSS9nU R                  SSUS9nUR                  SS/SS/SS/5        UR                  SS/SS/SS/5        UR	                  / S	Q5        UR                  5       S
:X  d   eUR                  5       S
:X  d   eg )N   r2   r3      )r4   sharezr   r   r   )r8  r   r         @)r8  r  )rB   rC   rD   r6  rL   r  )rG   r=  r>  s      r.   test_shared_axes_retickr  c  s    
**,C
//#$/
/C
//#$s/
;CHHaVaVaV$HHaVaVaV$NN$%<<>[(((<<>[(((r0   c            
      Z   [        S/ SQ5      n U R                  S:X  d   eU R                  / SQ:H  R                  (       d   eU * R                  S:X  d   eU * R                  / SQ:H  R                  (       d   e[        S/ SQ5      nUR                  S:X  d   eUR                  / SQ:H  R                  (       d   e[        S/ SQ5      nUR                  S:X  d   eUR                  / SQ:H  R                  (       d   e[        S/ SQ5      nUR                  S:X  d   eUR                  / SQ:H  R                  (       d   eX-  U * :X  d   eX"-  U * :X  d   eX3-  U * :X  d   eX-  U:X  d   eX-  U:X  d   eX-  U:X  d   eX-  U:X  d   eX#-  U:X  d   eX1-  U:X  d   eX!-  U* :X  d   eX2-  U* :X  d   eX-  U* :X  d   e[        S/ S	Q5      [        S
/ SQ5      -  [        S/ SQ5      :X  d   eXX#4 H  nUR	                  5       R                  UR                  :X  d   eUR	                  5       R                  UR                  * :H  R                  (       d   eUR	                  5       R	                  5       U:X  d   eXDR	                  5       -  R                  S:H  R                  (       a  M   e   [        S/ SQ5      nUR
                  S:X  d   eU R
                  S:X  d   eUR
                  S:X  d   eUR
                  S:X  d   eUR
                  S:X  d   eXPXU4 H/  nUR
                  XDR	                  5       -  R                  :X  a  M/   e   [        S/ SQ5      [        S/ SQ5      [        S/ SQ5      [        S/ SQ5      [        S
/ SQ5      4 H#  nUR                  5       R
                  S:X  a  M#   e   XX#4 H4  nXDR                  5       -  U :X  d   eUR                  5       U-  U :X  a  M4   e   UR                  / SQ5      [        R                  " / SQ5      :H  R                  (       d   e/ SQ/ SQ[        [        R                  " S5      SS[        R                  " S5      /5      4/ SQ/ SQ[        [        R                  " S5      S[        R                  " S5      * S/5      4/ SQ/ SQ[        S/ SQ5      44 H"  u  pgn[         R                  " Xg5      U:X  a  M"   e   / SQ/ SQ/ SQ/ SQ4 H  n[        R                  " U5      n[        R                  " [        5         [         R                  " Xf* 5      nS S S 5        [        R                   " WR
                  S5      (       d   e[        R"                  " UR                  U5      S:X  a  M   e   S H  u  pn
S H  n[         R$                  " [        R&                  " U5      [        R&                  " U	5      [        R&                  " U
5      5      n[        R                   " UR
                  S5      (       d   e[        XR                  -  XR                  -  5      n[        R(                  R+                  [        R,                  " [         R.                  " U5      5      XU
4SS9  M     M     g ! , (       d  f       GNa= f)Nr   r   rn   r   r   r   r   r_  r]  r   rr   r   )r  r  r  i)r  0   ,   )rm   r   r   )r   rs   r   )r   r   ro   r   r   rm   )r   r  r:  r$  rq   )r   )r   r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )/   r   ir  ư>atol)
Quaternionscalarvectorall	conjugater  rC  
reciprocalrotater    r!   r  rotate_from_torC  warnsUserWarningiscloser  from_cardan_anglesdeg2radr   r  rad2degas_cardan_angles)q1qiqjqkqq0r1r2r   r   r   mags               r.   test_quaternionr  o  s   	Ay	!B99>>II"''''C<<2SLLI%****	Ay	!B99>>II"''''	Ay	!B99>>II"''''	Ay	!B99>>II"''''5RC<<5RC<<5RC<<5B;;5B;;5B;;5B;;5B;;5B;;5RC<<5RC<<5RC<<q)$z!Y'??#|,- . - b{{}##qxx///$$	16666{{}&&(A---;;=((A-22222	  
Ay	!B77a<<77a<<77a<<77a<<77a<<bb!vv!KKM/11111 " 	1i 1i 1i 1i 1i  {{}!!Q&&& b2%%%||~a2%%%  IIi BHH[$99>>>> 
Iz"''#,Arwws|8LMN	Iz"''#,RWWS\M18MNO	Iz!Y78	
 ((0A555 )Y	:XXb\\\+&))"c2A 'zz!&&!$$$$vvahh#q((( ;,D C--

4 "**T"2BJJt4DFA::affa((((3>3>:AJJ&&rzz*2M2Ma2P'Q(,D'9 ' F 	, '&s   )Z
Z*	r   )azel	trackballr\  arcballc                 `   U S:X  a  SnO[         R                  S   S-  nUS-  nS[         R                  S'   [         R                  " SU 05         / SQ/ S	Q/ S
Q/ SQSS[        R                  " S5      S-  /SS[        R                  " S5      S-  // SQ4 GH  u  p#n[
        R                  " 5       nUR                  SSSSS9nUR                  SSU5        UR                  R                  R                  5         [        R                  " SUS[        R                  5      R                  5         [        R                  " SXaU-  UR                   -  X-  UR"                  -  4[        R                  5      R                  5         UR                  R                  R                  5         [        R                  " S5      S-  n0 SS_SS_SSSU4S_SS_SS_SS_SSSU4S _S!S"_S#S$_S%SSU4S&_S'SS([        R$                  -  S4_S)S*_S+S,_S%SSU4S-_S.S/_S0S1_S2SSU4S3_S4SS5S6S7S8S2SSU4S9S:S;S<S=S>SSU4S?S@SASBSCSDSES>SSU4SF0EnXX#U4   u  pn[        R&                  R)                  UR*                  UR,                  UR.                  4XU4SGSH9  GM     SISISI5        gI! , (       d  f       gI= f)Jz*Test rotating using the left mouse button.r  r$  zaxes3d.trackballsizer   r   zaxes3d.trackballborderaxes3d.mouserotationstyler_  )r   r   r   r]  )r   r   r   rm   r   )r   r   r   r   r2   r3   button_press_eventrO  motion_notify_event)r  r   r   r   )r   r  r   )r  r   r   r   )r  r   r   )^iN|C     6r   )r  r   r   r   r   )r  r   r   r   )g     6@r  r   )r  r   r   r   )r  r  r   )r  r  r   )r  r   r   r   )r   gyܥ<r   )r  r   r   r   )r  r   r   r  )E~8o.2.gC5%
@)r  r   r   r   iL)r  r   r   r   )gi:+@=!7Q9gX:@)r  r   r   r   )r  r  g:TS@@)gi:+r  gT7@@)r\  r   r   r   )r   r   r   )r\  r   r   r   )r   r   r   r\  )`#I9v$$0g! _B@)r\  r   r   r   )r\  r   r   r   )g&s|,@u.:gu.:@)r\  r   r   r   )r  r  g%T@@)g&s|,r  g6h@@)r  r   r   r   )r   r   r   )r  r   r   r   )r   r   r   r  )#KHxqZrDgwJ3@)r  r   r   r   r   )r  r   r   r   )g`#I9@ګ'Lgv$$0@)r  r   r   r   )r  r   gK;H@)r  r!  gĮE@r  r  N)r  r   
rc_contextr    r  rB   rC   rD   r   r   r   r
   _from_ax_coordsr	   LEFT_process	_pseudo_w	_pseudo_hr3  r   r  r   r   r   )r   rc  r   r   r   rG   r(   r   expectationsnew_elevnew_azimnew_rolls               r.   test_rotater,    sT    LL/014HA-.CLL)*	4e<	=CA&S"''!*Q,'LDb **,CAqT:BLLAt$II!!# &&$b&+2B2BDDLHJ&&%rbD,=qtBLL?P+Q  ""*(*II!!#
1AN!;N!;N C#%;N ";	N
 #$:N #$;N S!$&=N '(9N '(9N aa(*LN 'DJ(:N ()JN ()LN b#q)+NN" $[#N$ $[%N& 1c1%'I'N( $[$&H$&I2sA&(K$k$kAsA&(K$k%'I%'JBQ')L?NL@ ,8"8M+N(HJJ&&"'''B(0H'ED ' Ro 
>	=	=s   IJ
J-c                     S n [         R                  " 5       nUR                  SS9nUR                  SSS5        UR                  R                  5         U " UR                  5       6 u  p4U " UR                  5       6 u  pVU " UR                  5       6 u  px[        R                  " SUS[        R                  5      R                  5         [        R                  " SUS[        R                  5      R                  5         U " UR                  5       6 u  pU " UR                  5       6 u  pU " UR                  5       6 u  pU
[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU[        R                  " U5      :X  d   eU	[        R                  " U5      :w  d   eU[        R                  " U5      :w  d   eU[        R                  " U5      :w  d   eg	)
z1Test mouse panning using the middle mouse button.c                     X-   S-  nX-
  nX#4$ )z+Convert min/max limits to center and range.r   r+  )dmindmaxcenterrange_s       r.   convert_limtest_pan.<locals>.convert_lim  s    +"~r0   r2   r3   r   r  rO  r  r   r   N)rB   rC   rD   rj  r   r   r  r  r  r
   r#  r	   MIDDLEr%  rC  approx)r3  rG   r(   	x_center0x_range0	y_center0y_range0	z_center0z_range0x_centerx_rangey_centery_rangez_centerz_ranges                  r.   test_panrD    s    **,C	D	)BJJq!QJJOO%r}}7I%r}}7I%r}}7I b&+*<*<>>Fhjr6;+=+=??Gxz#R]]_5H#R]]_5H#R]]_5H fmmH----fmmH----fmmH---- v}}Y////v}}Y////v}}Y////r0   ztool,button,key,expectedr  ))rP  Q?)r   gQ?)r!  {Gz?rX   ))g{Gzr  )gQrF  gQrE  rY   ))Q뱿r   )g{GzrF  )rP  gQ?))g
ףp=
r  )g{Gzg(\?)rH  g
ףp=
?pan))gffffff(\)gp=
ףgQgRQgffffff))g
ףp=
gzG)rJ  gq=
ףpݿrG  ))r  g{Gz?)gRQg(\ؿrK  c                    [         R                  " 5       nUR                  SS9nUR                  SSS5        UR                  R                  5         UR                  5       UR                  5       UR                  5       pnSn	Sn
UR                  R                  U	5      R                  [        5      nUR                  R                  U
5      R                  [        5      n[        SUR                  /UQUP7SU06n[        SUR                  /UQUP7X!1S	.6n[        S
UR                  /UQUP7SU06n[        UR                  5      nU S:X  a  UR                  5         OUR!                  5         UR#                  5         UR#                  5         UR#                  5         Uu  nnnUR                  5       [$        R&                  " USS9:X  d   eUR                  5       [$        R&                  " USS9:X  d   eUR                  5       [$        R&                  " USS9:X  d   eUR)                  5         UR                  5       [$        R&                  " U5      :X  d   eUR                  5       [$        R&                  " U5      :X  d   eUR                  5       [$        R&                  " U5      :X  d   eUR+                  5         UR                  5       [$        R&                  " USS9:X  d   eUR                  5       [$        R&                  " USS9:X  d   eUR                  5       [$        R&                  " USS9:X  d   eUR-                  5         UR                  5       [$        R&                  " U5      :X  d   eUR                  5       [$        R&                  " U5      :X  d   eUR                  5       [$        R&                  " U5      :X  d   eg )Nr2   r3   r   rO  r5  r  keyr  )rM  buttonsbutton_release_eventr  r   )r%   )rB   rC   rD   rj  r   r   r  r  r  	transDatar  astypeintr
   r   r  rI  r%  rC  r7  backforwardhome)toolbuttonrM  expectedrG   r(   xlim0ylim0zlim0d0d1s0s1start_event
drag_event
stop_eventtbr  r  r  s                       r.   test_toolbar_zoom_panrd  :  s   ( **,C	D	)BJJq!QJJOO--/2==?BMMO%E 
B	B 
			#	*	*3	/B				#	*	*3	/B cjj@+-@/5@;>@KszzS,.S06S<?SJ

B-/B17B=@BJ 
CJJ	'Bv~
	
  D$==?fmmDd;;;;==?fmmDd;;;;==?fmmDd;;;; GGI==?fmmE2222==?fmmE2222==?fmmE2222JJL==?fmmDd;;;;==?fmmDd;;;;==?fmmDd;;;;GGI==?fmmE2222==?fmmE2222==?fmmE2222r0   c                    [         R                  " [        [        R                  " [         R
                  " SSS5      [         R
                  " SSS5      [         R
                  " SSS5      /6 5      5      R                  u  p#nX#-   nU R                  SSS9nUR                  X#XESSS	9nU R                  R                  5         UR                  5         UR                  SSS9nUR                  X#XESSS	9n	g )
Nr   ro   r   o   r2   r3   r   viridis)r   rc  r   )r    r!   r"   r   r#   r   TrD   rj  r   r   changed)
r;   r<   rX   rY   rZ   r   r  sc_testr  sc_refs
             r.   test_scalarmap_updaterl    s     hhtI--		!Q0B02		!Q0B02		!Q0B0D E F GGHq A! 	
A ""34"8GooaAbyoAGOOOO    6F^^A!BY^?Fr0   c                      [         R                  " 5       n U R                  SS5      nUS   R                  SSSSS9nUS   R                  SSSSSS9ng )Nr   r   r   r2   r3   other)r4   r   )rB   rC   
subfiguresrD   )rG   sfr(   s      r.   test_subfigure_simplerq    sY    
**,C	1	B	A		1at		4B	A		1at7		CBr0   zcomputed_zorder.pngc                  (   S[         R                  S'   [         R                  " 5       n U R                  SSS9nU R                  SSS9nSUl        SnX4 H  n[
        R                  " U/S	S
SS9nUR                  U5        UR                  SSSSSS9  UR                  SSSSSS9  UR                  SS5        UR                  SS5        UR                  SS5        M     U R                  SSS9nU R                  SSS9nSUl        Sn[        R                  " U* U4U* U45      u  p[        R                  " S5      nSn[        R                  " U* U4SU45      u  pX-  n[        R                  " U* U4U* S45      u  nnUU-  nSnSn[        R                   " SS[        R"                  -  U5      nU[        R$                  " U5      -  U[        R&                  " U5      -  UU-  [        R&                  " U5      -  nnnXg4 GH  nUR)                  UUUSSSSS9  UR                  UUS:     UUS:     UUS:     S S!S"SS#9  UR)                  XUSSSSS9  UR                  U[        R&                  " U5      -  U[        R$                  " U5      -  [        R                  " U5      S S!S
SS#9  UR)                  XUSSSS$S9  UR                  UUS:     UUS:     UUS:     S S!S"S%S#9  UR+                  S&S'SS(9  UR-                  S)5        GM     g )*NTr      r2   r3      F)r   )r   ro   r   )ro   ro   r   )ro   r   r   whiteblackr   )r  r  r  )r   r   )r   rs   r   r   )r   r  )rm   rm   )r   rm   r   r   rQ  r        r$  r  r#  r   rn   )r   r   rX  r  ro   z--r   )r  	linestyler   r  rm   rs   r   r  r   r  )rB   r   rC   rD   computed_zorderr   r`  rX  r6  rj  r  r  r  r    r   ru  r,  r3  r5  r4  r[  r   rQ   )rG   r=  r>  cornersr(   trir  ax4dimr   r   r   angleX2Y2Z2X3Y3Z3r*   r  thrX   rY   rZ   s                            r.   test_computed_zorderr    s?   (,CLL$%
**,C
//#$/
/C
//#$/
/CC ;Gj$$gY0707,-/ 	C  	%: 	

666U2
>
As
As
As " //#$/
/C
//#$/
/CC
C;;c{cT3K0DA
AE[[3$q#h/FB	B[[3$tQi0FB	eB	AA	QBEE	1	%B"&&*nq266":~uqy266":/E!qAj
B$!"#!	 	 	#
 	!a%!AE(Aa!eH	 	 	 	a#!"# 	 	 	" 	BFF2JBFF2J	 	 	 	$!"# 	 	 	" 	!a%!AE(Aa!eH 	 	 	"3Q/
G r0   c                  8   [         R                  " 5       n U R                  SS9n[        R                  " S5      nUR                  U[        R                  " U5      5        SnSnU R                  R                  5         UR                  X45      S:X  d   eUR                  SSS9  U R                  R                  5         UR                  X45      S	:X  d   eUR                  5         U R                  R                  5         UR                  X45      S:X  d   eUR                  S
5        U R                  R                  5         UR                  X45      S:X  d   eUR                  SSS9  U R                  R                  5         UR                  X45      S:X  d   eg )Nr2   r3   r   r  z"x=10.5227, y pane=1.0417, z=0.1444r   rY   )r   vertical_axisz!x pane=9.1875, y=0.9761, z=0.1291r   z"x=10.8869, y pane=1.0417, z=0.1528r	  r
  z!x=9.0620, y pane=1.0417, z=0.1110)rB   rC   rD   r    r   r6  r4  r   r   format_coordr   r   )rG   r(   rX   xvyvs        r.   test_format_coordr    sJ   
**,C	D	)B
		"AGGArvvay	B	BJJOO??2"&JJJJ LLbL,JJOO??2"&IIII LLNJJOO??2"&JJJJ WJJOO??2"&JJJJ W3/JJOO??2"&IIIIr0   c                  $   [         R                  " 5       n U R                  SS9n[        R                  " S5      nUR                  U[        R                  " U5      5        U R                  R                  5         UR                  5       S:X  d   eg )Nr2   r3   r   )FTF)
rB   rC   rD   r    r   r6  r4  r   r   get_axis_position)rG   r(   rX   s      r.   test_get_axis_positionr  	  sf    
**,C	D	)B
		"AGGArvvayJJOO!%9999r0   c                     [         R                  " 5       n U R                  SS9nUR                  S5        UR                  5       S:X  d   eUR                  SSS5        UR                  5       S:X  d   eUR                  SS	9  UR                  5       S
:X  d   eUR                  SS9  UR                  5       S:X  d   eUR                  SS9  UR                  5       S:X  d   eg )Nr2   r3   r  )r  r  r  r  r  )r  r  r  r   )rX   )r   r  r  )rY   )r   r  r  rZ   )r   r  r   )rB   rC   rD   r  rF   s     r.   test_marginsr  	  s    
**,C	D	)BJJsO::<?***JJsC::<?***JJJO::<=(((JJJ::<=(((JJJO::<;&&&r0   c                      [         R                  " 5       n U R                  SS9nUR                  SSS5        UR	                  5       S:X  d   eUR                  5       S:X  d   eUR                  5       S:X  d   eg )Nr2   r3   r  r  r  )rB   rC   rD   r  get_xmarginget_ymarginget_zmarginrF   s     r.   test_margin_gettersr  .	  sl    
**,C	D	)BJJsC>>s""">>s""">>s"""r0   zerr, args, kwargs, match)rn   z!margin must be greater than -0\.5)r   rn   r   )r   r   rn   rn   rZ   )r   z'Cannot pass both positional and keyword)rX   rY   r5  z*Must pass a single positional argument forc                     [         R                  " XS9   [        R                  " 5       nUR	                  SS9nUR
                  " U0 UD6  S S S 5        g ! , (       d  f       g = f)NrA  r2   r3   )rC  rD  rB   rC   rD   r  )errr  r  rB  rG   r(   s         r.   test_margins_errorsr  7	  sH      
s	(jjl___-


D#F# 
)	(	(s   7A
A#c                 R   UR                  SS9n[        SSS5      n[        R                  " USS9  UR	                  U5        UR                  5       S:X  d   eU R                  SS9n[        R                  " SSSS5      nUR	                  U5        UR                  5       S:X  d   eg )Nr2   r3   r$  zFoo bar $\int$r   r  rx  )rD   r   r   text_2d_to_3drr  get_position_3dText3D)r;   r<   r(   txtt3ds        r.   test_text_3dr  M	  s    					-B
sC*
+C	q!MM# M111					.B
,,sC$5
6CMM# M111r0   c                      [         R                  " 5       n U R                  SS9nUR                  S/S//S/S//S/S//5        g )Nr2   r3   r   r   )rB   rC   rD   r6  rF   s     r.   test_draw_single_lines_from_Nx1r  [	  sE    
**,C	D	)BGGaS1#J!qc
aS1#J/r0   c                    UR                  SS9n[        R                  " 5       n[        U5      n[        R
                  " USSS9  UR                  U5        U R                  SS9n[        R                  " USSS9nUR                  U5        g )Nr2   r3   )r   r$  r  r   r   rY   rZ   r   r  )rD   r   unit_rectangler   r   pathpatch_2d_to_3drr  PathPatch3D)r;   r<   r(   pathpatchpp3ds         r.   test_pathpatch_3dr  b	  s    					-B DdOE	U&9DMM%					.BT&9DDMM$r0   zscatter_spiral.png)baseline_imagesr   r   c                     S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  " SS[        R                  -  S-  S5      nUR                  [        R                  " U5      [        R                  " U5      US	US
-  -   US-  S9nU R                  R                  5         g )NTr   r2   r3   r   r   r      r   ro   r  )rB   r   rC   rD   r    r,  r3  rj  r4  r5  r   r   )rG   r(   r  scs       r.   test_scatter_spiralr  o	  s     )-CLL$%
**,C	D	)B	QBEE	As	+B	BFF2Jr
B1rAv:"'	JB JJOOr0   c                      [         R                  " SS0S9u  p[        SS5      nUR                  U5        [        R
                  " U5        UR                  5         g )Nr4   r2   r5   rO  r  )rB   r7   r   rP  r   r  get_path)rG   r(   ps      r.   test_Poly3DCollection_get_pathr  }	  sG     ll|T&:;GCvsALLO	QJJLr0   c                  0   [         R                  SSS2SSS24   u  p[         R                  " U5      S-  [         R                  " U 5      S-  -
  n[        R
                  " 5       nUR                  SSS9nUR                  XUS	S
9nUR                  5         g Nr   r   y              Y@rm   r   rf  r2   r3   hotr   )	r    ogridr5  r4  rB   rC   rD   r[  rS  rY   rX   r  rG   r(   r*   s         r.   #test_Poly3DCollection_get_facecolorr  	       88AbIqDy()DA	a"&&)q.	(B
**,C		.B
bu-AOOr0   c                  0   [         R                  SSS2SSS24   u  p[         R                  " U5      S-  [         R                  " U 5      S-  -
  n[        R
                  " 5       nUR                  SSS9nUR                  XUS	S
9nUR                  5         g r  )	r    r  r5  r4  rB   rC   rD   r[  get_edgecolorr  s         r.   #test_Poly3DCollection_get_edgecolorr  	  r  r0   zDvertical_axis, proj_expected, axis_lines_expected, tickdirs_expected)rP  #k$I?rP  ._x%I)rP  rP  (m?@mۿ)rP  rP  rP  g      $)#k$IrP  rP  W$%@g˗ì?g2m 3?g溾IgMg2m 3gM?r  )r  rP  rP  r  )rP  r  rP  r  )rP  rP  r  r  g˗ìg溾I?)r   r   r   )rP  rP  r  r  )r  rP  rP  r  )rP  r  rP  r  r   r   r   c                 h   Sn[         R                  " SSSSS9nUR                  SSSU S9  UR                  5       R                  R                  5         UR                  5       n[        R                  R                  XUS9  [        UR                  5       UR                  5       UR                  5       /5       Hu  u  pxX'   n	UR                  R                  5       n
[        R                  R                  XUS9  X7   nUR!                  S5      n[        R                  R#                  X5        Mw     g	)
a  
Test the actual projection, axis lines and ticks matches expected values.

Parameters
----------
vertical_axis : str
    Axis to align vertically.
proj_expected : ndarray
    Expected values from ax.get_proj().
axis_lines_expected : tuple of arrays
    Edgepoints of the axis line. Expected values retrieved according
    to ``ax.get_[xyz]axis().line.get_data()``.
tickdirs_expected : list of int
    indexes indicating which axis to create a tick line along.
g>r   r2   r3   r   r   r   r   r  rtolr   N)rB   subplotr   
get_figurer   r   get_projr    r   r  rw   	get_xaxis	get_yaxis	get_zaxisrP   get_data_get_tickdirr  )r  proj_expectedaxis_lines_expectedtickdirs_expectedr  r(   proj_actualr}   rQ   axis_line_expectedaxis_line_actualtickdir_expectedtickdir_actuals                r.   test_view_init_vertical_axisr  	  s    H D	Q1	.BLLaaa}LEMMO! ++-KJJ}EbllnbllnbllnMN0399--/


""#5(, 	# 	. -/**95


%%&6G Or0   r  returnc                    [         R                  " SSSSS9nUR                  SSSU S9  UR                  5       R                  R                  5         UR                  5       n[        R                  " SUS[        R                  5      R                  5         [        R                  " SUS	[        R                  5      R                  5         UR                  R                  U 5      UR                  :X  d   eUR                  5       n[        R                   R#                  [$        [        R                   R&                  X#5        g
)zG
Test vertical axis is respected when rotating the plot interactively.
r   r2   r3   r   r  r  r   r  )r$  r   N)rB   r  r   r  r   r   r  r
   r#  r	   r$  r%  _axis_namesindex_vertical_axisr    r   assert_raisesAssertionErrorr  )r  r(   proj_before
proj_afters       r.   test_on_move_vertical_axisr  	  s    
 
Q1	.BLLaaa}LEMMO!++-Kb&+*:*:<<DHJr8[-=-=??Gxz>>."2C2CCCC JJJ

22Kr0   zvertical_axis, aspect_expected)/0?F&H?r  )r  r  r  )r  r  r  c                    [         R                  " SSSSS9nUR                  SSSU S9  UR                  5       R                  R                  5         UR                  S 5        [        R                  R                  XR                  SS9  g )Nr   r2   r3   r   r  r  r  )rB   r  r   r  r   r   ry   r    r   r  _box_aspect)r  aspect_expectedr(   s      r.   !test_set_box_aspect_vertical_axisr  
  sm     
Q1	.BLLaaa}LEMMO!dJJTJr0   zarc_pathpatch.pngc            	          [         R                  " SSSSS9n [        R                  " SSSSSS	S
9nU R	                  U5        [
        R                  " USSS9  g )Nr   r2   r3   )r$  r$  r$  ?r   r   r  )r   heightr  theta1theta2r   rZ   r  )rB   r  mpatchArcrP  r   r  )r(   r  s     r.   test_arc_pathpatchr  !
  sP     
Q1	.B

:SBs	4ALLO	Q!#.r0   zpanecolor_rcparams.pngc                      [         R                  " SSSS.5         [         R                  " SS9n U R                  SS9  S S S 5        g ! , (       d  f       g = f)	Nr*   r   r   )zaxes3d.xaxis.panecolorzaxes3d.yaxis.panecolorzaxes3d.zaxis.panecolorr5  r   r2   r3   )rB   r"  rC   rD   )rG   s    r.   test_panecolor_rcparamsr  ,
  sK     
336368 
9 jj(4(	
9 
9 
9s   $A
Ac                     U R                  SSS9n/ SQn/ SQn/ SQnUR                  X4US5        / SQUSS& / SQUSS& UR                  SSS9n/ SQn/ SQn/ SQnUR                  X4US5        g)zn
Test to see if the `z` axis does not get mutated
after a call to `Axes3D.plot`

test cases came from GH#8990
rf  r2   r3   r  )rP  rP  rP  zo-Nr;  )r;   r<   r=  rX   rY   rZ   r>  s          r.   "test_mutating_input_arrays_y_and_zr  7
  s     

st

4CAAAHHQ1d AaDAaD 

cd

3CAAAHHQ1dr0   c                  |   [         R                  SSS/n S[         R                  SS/nSS[         R                  * S/n/ SQ/ SQ/ SQ/ SQ/n[        R                  " 5       nUR                  SS9nUR                  XX#S9n[        UR                  5       5      [        [        [        U5      U]/  5       5      :X  d   eg)	zI
Test color parameter usage with non-finite coordinate arrays.

GH#26236
r   r   r   )rP  rP  rP  r   r2   r3   r   N)r    rv  r  rB   rC   rD   rj  r   get_offsetssuperrI  get_facecolors)rX   rY   rZ   r   rG   r(   path3ds          r.   test_scatter_masked_colorr  Q
  s     
AA	
BFFAA	
AwA	F **,C	D	)BZZaZ.F v!!#$uT&\69;<= = =r0   zsurface3d_zsort_inf.pngc                     S[         R                  S'   [         R                  " 5       n U R                  SS9n[        R
                  SSS2SSS24   u  p#[        R                  " U5      S-  [        R                  " U5      S-  -   n[        R                  XBR                  S   S-  S 2UR                  S	   S-  S 24'   UR                  X#US
S9  UR                  SSS9  g )NTr   r2   r3   r  r   r  r   r   r  r  r     )r   r   )rB   r   rC   rD   r    r  r4  r5  r  r  r[  r   rk  s        r.   test_surface3d_zsort_infr  k
  s    (,CLL$%
**,C	D	)B88BqHb3h&'DA
q	1rvvay!|#A,.FFAggajAo
a(()OOA!%O(LLbsL#r0   c                      [         R                  " [        SS9   [        R                  " / SQ/ SQ/ SQ/[
        5      n [        R                  " U /SS9nS S S 5        g ! , (       d  f       g = f)NzCYou must provide facecolors, edgecolors, or both for shade to work.rA  r]  r^  r   Tr   )rC  rD  r0  r    r!   r  r   r`  )ra  r   s     r.   &test_Poly3DCollection_init_value_errorr  y
  sT     
z5
6 xxIy95A""D66	
6 
6 
6s   ;A
A,c            	          [         R                  " 5       n U R                  SSS9nUR                  SSS[        R
                  " / SQ5      S9  U R                  R                  5         g )Nrf  r2   r3   r   r   r  r   )rB   rC   rD   rj  r    r!   r   r   rF   s     r.   %test_ndarray_color_kwargs_value_errorr  
  sL     **,C		.BJJq!Qbhh|4J5JJOOr0   c                     [         R                  " 5       n U R                  SS9n/ SQSS// SQ/nUR                  [        R
                  " U5      SS9n[        R                  " UR                  5       S	5      (       d   e[        R                  " UR                  5       S
5      (       d   e[        R                  " UR                  5       S	5      (       d   eg)zGTest Line3DCollection with autolim=True and lines of different lengths.r2   r3   )r   rq   )r   r   r   r_  r  ))r   r   r   )r   r   r   )rm   r   rm   )rs   rm   rs   Trf  r  )g      g     @N)rB   rC   rD   rX  r   r  r    r  r  r  r  )rG   r(   edgescollectionss       r.   $test_line3dcollection_autolim_raggedr
  
  s    
**,C	D	)B 	*	I4E %%e&<&<U&CT%RK ;;r}}(QRRRR;;r}}(9::::;;r}}(QRRRRr0   c                     [         R                  " 5       n U R                  SS9n[        R                  " [
        R                  SS9   UR                  SSS9  SSS5        [        R                  " [
        R                  S	S9   UR                  SS
S9  SSS5        UR                  SSS9  UR                  5       S:X  d   eUR                  SSS9  UR                  5       S:X  d   e[        R                  " [        SS9   UR                  SSS9  SSS5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f)zf
Test that using the deprecated 'anchor' and 'share' kwargs in
set_aspect raises the correct warning.
r2   r3   z'anchor' parameterrA  ri   C)anchorNz'share' parameterT)r  r   ru   rt   rv   invalid_value)rB   rC   rD   rC  r  r   MatplotlibDeprecationWarningrz   get_adjustablerD  r0  rF   s     r.   )test_axes3d_set_aspect_deperecated_paramsr  
  s   
 **,C	D	)B 
d77?S	T
gc* 
U 
d77?R	S
gT* 
T
 MM'eM,%'''MM'iM0)+++	z	6
g/: 
7	6 
U	T 
T	S 
7	6s$   DD-D>
D*-
D;>
Ec                     [         R                  " 5       n U R                  SSS9n[        R                  " SS/SS//5      nUR
                  u  p4[        R                  " U5      n[        R                  " U5      n[        R                  " XV5      u  pxUR                  XxU5        U R                  R                  5         U R                  R                  5       n	UR                  n
U
R                  R                  5       (       GaT  U
R                  R                  5       (       Ga3  U
R                  R!                  U	5      nU
R#                  U	5      nUc   eUc   eUR$                  UR$                  S-   ::  d"   SUR$                   S	UR$                   S
35       eUR&                  UR&                  S-   ::  d"   SUR&                   SUR&                   S
35       eUR(                  UR(                  S-
  :  d"   SUR(                   SUR(                   S
35       eUR*                  UR*                  S-
  :  d"   SUR*                   SUR*                   S
35       eg g g )Nrf  r2   r3   r  g坙?g?r  z	bbox.x0 (z) should be <= offset_bbox.x0 ()z	bbox.y0 (z) should be <= offset_bbox.y0 (z	bbox.x1 (z) should be >= offset_bbox.x1 (z	bbox.y1 (z) should be >= offset_bbox.y1 ()rB   rC   rD   r    r!   r  r   r   r[  r   r   get_rendererrO   
offsetTextget_visibleget_textget_window_extentget_tightbboxx0y0r  r  )rG   r(   r   r/  r.  rX   rY   r   r   rendererrO   offset_bboxbboxs                r.   ,test_axis_get_tightbbox_includes_offset_textr  
  s(    **,C		.B 	3$~{&CDEAWWFB
		"A
		"A;;qDAOOA! JJOOzz&&(H HHE
 	$$&&!!##&&88B ""8,&&&
 ww+..4// 	Ry ??OqQ	R/ww+..4// 	Ry ??OqQ	R/ww+..4// 	Ry ??OqQ	R/ww+..4// 	Ry ??OqQ	R/# 	$ 	'r0   c            	         [         R                  " 5       n U R                  SS9nSnUR                  " U6   U R                  R                  5         Sn[         R                  S   n[        R                  " SS05         [        R                  " SUS	[        R                  5      R                  5         [        R                  " S
UX1R                  -  X1R                  -  4[        R                  5      R                  5         S S S 5        U R                  R                  5         UR                   nUR"                  nUR$                  nUR                  " U6   U R                  R                  5         [        R                  " SS05         [        R                  " SUS	[        R                  5      R                  5         [        R                  " S
UX1R                  -  X1R                  -  4[        R                  SS9R                  5         S S S 5        U R                  R                  5         U['        XT-  5      -  nU['        Xd-  5      -  n	U['        Xt-  5      -  n
UR                   [(        R*                  " U5      :X  d   eUR"                  [(        R*                  " U	5      :X  d   eUR$                  [(        R*                  " U
5      :X  d   e[         R,                  " U 5        g ! , (       d  f       GN= f! , (       d  f       N= f)Nr2   r3   )g(@g@@g@r  zaxes3d.snap_rotationr  r  r  rO  r  control)rM  )rB   rC   rD   r   r   r   r   r  r"  r
   r#  r	   r$  r%  r&  r'  r   r   r   roundrC  r7  close)rG   r(   initialrc  steprotated_elevrotated_azimrotated_rollexpected_elevexpected_azimexpected_rolls              r.    test_ctrl_rotation_snaps_to_5degr,  
  sA   
**,C	D	)BGLL'JJOOA<<./D 
4f=	>"" "fk.>.>	

(*""!q<</0		

 (* 
? JJOO77L77L77L LL'JJOO 
4f=	>"" "fk.>.>	

(*""!q<</0	
 (* 
? JJOO5!455M5!455M5!455M77fmmM222277fmmM222277fmmM2222IIcN] 
?	>. 
?	>s   =BK(	BK:(
K7:
Lc                      [         R                  " SS[         R                  -  S5      n SU S-  -  nSS[         R                  " U 5      -   -  nSSS[         R                  " U 5      S-  -   -  -  nXU4$ )z'Data spanning 1 to ~1000 for log scale.r   r   r  r   r   )r    r,  r3  r4  r5  )rM  rX   rY   rZ   s       r.   _make_log_datar.  .  sh    
Aq255y"%A
q1uA
q266!9}A
qAq	A%&'A7Nr0   c                      [         R                  " SSS5      n [         R                  " SSS5      n[         R                  " X5      u  p#X#-  nX#U4$ )z&Grid data for surface with positive Z.r   r   r   )r    r,  r   )rX   rY   r   r   r   s        r.   _make_surface_log_datar0  7  sF    
Ar2A
Ar2A;;qDA	A7Nr0   c                      [         R                  R                  S5        [         R                  R                  SSS5      n [         R                  R                  SSS5      nX-  S-  nXU4$ )z&Data for trisurf with positive values.*   r   r   r   )r    r%  r&  uniformr  s      r.   _make_triangulation_datar4  @  sV    IINN2
		!S#&A
		!S#&A	
A7Nr0   zscale3d_artists_log.pnggMb?)r   r   r   c            
         [         R                  " SS9n [        SSSS9n[        5       n[	        5       u  p4nU R                  SSSSS	9nUR                  " U6   UR                  " S30 UDS
S0D6  U R                  SSSSS	9nUR                  X4USSS9  UR                  " S30 UDS
S0D6  U R                  SSSSS	9nUR                  " X"S   SS.6  UR                  " S30 UDS
S0D6  U R                  SSSSS	9n[        R                  " / SQ/ SQ5      u  pxUR                  5       UR                  5       pUR                  Xx[        R                  " U[        S9US-  US-  Xx-  S-  SS9  UR                  " S30 UDS
S0D6  U R                  SSSSS	9nUR!                  X4USSS9  UR                  " S30 UDS
S0D6  U R                  SSSSS	9n[#        5       n	UR$                  " U	SSS.6  UR                  " S30 UDS
S0D6  U R                  SSSSS	9nUR'                  X4USS9  UR                  " S30 UDS
S 0D6  U R                  SSS!SS	9nUR)                  X4USSS"9  UR                  " S30 UDS
S#0D6  U R                  SSS$SS	9nUR+                  / SQ/ SQ/ S%QSS&9  UR                  " S30 UDS
S'0D6  U R                  SSSSS	9n[        R,                  " / SQ5      n
UR/                  XXS(-  U
S(-  U
S(-  5        UR                  " S30 UDS
S)0D6  U R                  SSS*SS	9nUR1                  SSSS+5        UR1                  SSSS,5        UR1                  S-S-S-S.5        UR                  " S30 UDS/S0S0S0S1.D6  g2)4z(Test all 3D artist types with log scale.)r  r  r   logxscaleyscalezscalerm   rs   r   r2   r3   r^   r6  r   ro   r  	wireframerg  )r   r   rj  r   r   r   r  r  r   r   )r   r   )r   r   surfacer   trisurfr  )r  r   r  )r  r   r  r  )r   r   r#  )r(  r  r$  r;  r   zPoint AzPoint Br   zPoint Crd  )r$  r  )r^   r  r  r  Nr+  )rB   rC   r8   r.  r0  rD   r6  rb   r'  rj  r    r   r_   r   r  r  r[  r4  r  r   r  r  r!   r;  rd  )rG   log_kw	line_datasurf_Xsurf_Ysurf_Zr(   bxbytri_dataqxyzs              r.   test_scale3d_artists_logrH  I  so    **X
&CuU;F I35FF 
AqT	2BGGYFF"V"6"	AqT	2BffaCFF'V';'	AqT	2BJJ	q\	:FF%V%9%	AqT	2B[[|4FBZZ\2::<HHRR\\"E2#XrCx2S  :FF#V#7# 
AqT	2BOOFF#OFFF%V%9%	AqT	2B')HOOXIS9FF%V%9%	AqT	2BJJvvbJ1FF%V%9%	AqT	2BKKrK=FF&V&:& 
AqT	2BGGL,GBFF"V"6"	Ard	3B88L!DIId$s
D3Js
CFF$V$8$	Ard	3BGGAq!YGGBB	"GGCc9%FF >V >6*>r0   zscale3d_all_scales.png)r   r   c            	         [         R                  " SSSS0SS9u  p[        R                  " SSS	5      nUS
-  nUS-
  S-  nUnUS   R	                  X4U5        US   R                  SSSSSSS9  US   R	                  X4U5        US   R                  S5        US   R                  SS S 4S9  US   R                  SSSS9  g)z4Test all scale types with mixed scales on each axis.r   r   r4   r2   )r   r   r   r  r  r   r   r$  r   r   r6  symloglogit)r8  r9  r:  r[   r\   r]   asinhfunctionc                     U S-  $ )Nr$  r+  r>  s    r.   <lambda>)test_scale3d_all_scales.<locals>.<lambda>  s    q#vr0   c                     U S-  $ rK  r+  rO  s    r.   rP  rQ    s    Ar0   )	functionsr  )r[   r\   r]   N)rB   r7   r    r,  rj  rb   
set_xscale
set_zscale)rG   rd   rM  rX   rY   rZ   s         r.   test_scale3d_all_scalesrV    s     ||AqlD-A7SHC 	Cb!A	CA	
SBA	A FNN1FJJeHWHW  > FNN1FgFj-=~,NOFJJghzJBr0   zscale, expected_lims))r  r  )r6  )gr?gBm?)rJ  r  )rK  )g;&Z?g'.?)rL  r  c                    [         R                  " 5       nUR                  SS9nUR                  U 5        UR	                  U 5        UR                  U 5        UR                  R                  5         UR                  UR                  UR                  4 H(  n[        R                  R                  U" 5       U5        M*     g)zFDefault axis limits on an empty plot should be correct for each scale.r2   r3   N)rB   rC   rD   rT  
set_yscalerU  r   r   get_xlimget_ylimr  r    r   r  )r)   expected_limsrG   r(   r  s        r.   test_scale3d_default_limitsr\    s     **,C	D	)BMM%MM%MM%JJOOKKbkk:


""79m< ;r0   z"ignore:Data has no positive valuesc                 $   SnU R                  SS9UR                  SS94 HF  nUR                  S5        UR                  S5        UR                  S5        UR	                  X"US9  MH     U R
                  S   R                  / SQ/ SQ/ S	Q5        g
)zUFully clipped data (e.g. negative values on log) should look like an empty plot.
    )r  r   r2   r3   r6  r   r   )rn   r  r:  )r2  rU  r  )iiiN)rD   rT  rX  rU  rb   axesr6  )r;   r<   limsr(   s       r.   test_scale3d_all_clippedr`    s    
 D##t#4""d"35
e
e
e
D$/5 MM!,lCr0   zscale3d_log_bases.pngc                     [         R                  " SSSS0SS9u  p[        5       u  p#nUS   SS4US	   SS
4US   [        R                  S44 H  u  pVnUR                  X#USS9  UR                  SUS9  UR                  SUS9  UR                  SUS9  UR                  U5        U[        R                  :X  d  Mn  SS jnUR                  R                  U5        UR                  R                  U5        UR                  R                  U5        M     US   R                  X#USS9  US   R                  SSS/S9  US   R                  SSS/S9  US   R                  SSS/S9  US   R                  S5        g)z-Test log scale with different bases and subs.r   r4   r2   )r   r  r   rO  r   zbase=10r   zbase=2r  zbase=erb  r6  )baseNc                     U S::  a  g[         R                  " U 5      n[         R                  " U[        U5      5      (       a  S[        U5      -  $ g)Nr    z$e^{%d}$)r    r6  r   r"  )rX   re   rL  s      r.   fmt_e%test_scale3d_log_bases.<locals>.fmt_e  s@    6ffQi::c5:..&s33r0   r5  ro   )subsz
subs=[2,5]r  )rB   r7   r.  r    r  rj  rT  rX  rU  rx   rM   set_major_formatterrN   rO   )	rG   rd   rX   rY   rZ   r(   rb  r^   re  s	            r.   test_scale3d_log_basesri    s    ||AqlD-A7SHCGA! YI6 Y84 Yh79% 	

1b
!
e$'
e$'
e$'
U244< HH((/HH((/HH((/'9, IaA$IaV,IaV,IaV,I%r0   zscale3d_symlog_params.pngc            
         [         R                  " SSSS0S9u  p[        R                  " SSS5      n[        R                  " U5      S	-  nUS-  n[        R
                  " U5      [        R                  " U5      S-  -  nUS
   S4US   S	44 Hp  u  pgUR                  X4U[        R                  " U5      SS	S9  UR                  SUS9  UR                  SUS9  UR                  SUS9  UR                  SU 35        Mr     g)z2Test symlog scale with different linthresh values.r   r   r4   r2   r5   r:  rm   r  r   r   r  rg  )r   r   rc  rJ  )	linthreshz
linthresh=N)rB   r7   r    r,  sinhsignr%   rj  rT  rX  rU  rx   )rG   rd   rM  rX   rY   rZ   r(   rk  s           r.   test_scale3d_symlog_paramsrn    s     ||AqlD-ABHC 	B2A

RA	QA

RVVAY!^#Aq63-#a&"6


1bffQii2
>
h)4
h)4
h)4
z)-. 7r0   zscale_type,kwargsr6  rb  r   rg  ro   nonpositiver  rJ  rk  linscaler$  rL  linear_widthrK  r  c                 $   [         R                  " 5       nUR                  SS9nUR                  UR                  UR
                  4 H  nU" U 40 UD6  M     UR                  5       UR                  5       UR                  5       4U 4S-  :X  d   eg)z6Verify that scale keywords are accepted on all 3 axes.r2   r3   rm   N)	rB   rC   rD   rT  rX  rU  
get_xscale
get_yscaler  )
scale_typer  rG   r(   r$  s        r.   test_scale3d_keywords_acceptedrv    sy     **,C	D	)B=="--?z$V$ @MMOR]]_bmmo>:-RSBSSSSr0   c                    [         R                  " 5       nUR                  SS9n[        USU  S35      " S5        [        R
                  " [        SS9   [        USU  S35      " S	S
5        SSS5        g! , (       d  f       g= f)z7Log scale should warn when setting non-positive limits.r2   r3   r  r)   r6  znon-positiverA  r  r  r   N)rB   rC   rD   r  rC  r  r  )rQ   rG   r(   s      r.   test_scale3d_limit_range_logrx    sm     **,C	D	)BB$tfE"#E* 
k	8d4&$%c3/ 
9	8	8s   A55
Bc            	      <   [         R                  " 5       n U R                  SS9nUR                  SSSSSSS9  SUR	                  5       4SUR                  5       4SUR                  5       44 H+  u  p#US	   S	:  d
   U S
35       eUS   S:  a  M#   U S35       e   g)z,Logit scale should constrain axis to (0, 1).r2   r3   rK  )r8  r  )r8  r9  r:  r  r  r  rX   rY   rZ   r   z$ lower limit should be > 0 for logitr   z$ upper limit should be < 1 for logitN)rB   rC   rD   rb   rY  rZ  r  rG   r(   rc  r  s       r.   test_scale3d_limit_range_logitr{  !  s    
**,C	D	)BFF'''+K  A BKKM*S"++-,@BKKM*,	1vzHdV#GHHz1vzHdV#GHHz,r0   ru  )r6  rJ  rK  rL  c                 
   [         R                  " 5       nUR                  SS9nUR                  X U S9  / SQ/ SQ/ SQ/ SQS.U    n[        R
                  " U5      nUR                  UR                  UR                  4 H  nUR                  5       nUR                  UR                  SS	5      5      nUR                  5       R                  U5      n[        R                  R                  UR                  5       US
S9  M     g)z1Forward/inverse transform should preserve values.r2   r3   r7  )r   r   r   r#  )r   rn   r   r   r   )r   r  r$  r  gGz?)r6  rJ  rL  rK  rn   r   g|=r  N)rB   rC   rD   rb   r    r!   rM   rN   rO   get_transformr  r  invertedr   r  r_   )ru  rG   r(   test_valuesrQ   transrT  inverses           r.    test_scale3d_transform_roundtripr  /  s     **,C	D	)BFF*
FC "'&,	
 K ((;'K 288RXX.""$//+"5"5b!"<=..",,W5


""7??#4k"N	 /r0   c                     [         R                  " 5       n U R                  SS9n[        R                  " [
        5         UR                  SSS9  SSS5        [        R                  " [
        5         UR                  SSS9  SSS5        [        R                  " [
        5         UR                  SSS9  SSS5        g! , (       d  f       Nu= f! , (       d  f       NS= f! , (       d  f       g= f)	z&Invalid kwargs should raise TypeError.r2   r3   r6  T)invalid_kwargNrJ  rK  )	rB   rC   rD   rC  rD  ra  rT  rX  rU  rF   s     r.   #test_scale3d_invalid_keywords_raiser  G  s    
**,C	D	)B	y	!
e40 
" 
y	!
hd3 
" 
y	!
gT2 
"	! 
"	! 
"	! 
"	!s#   B?2C%C!?
C
C!
C/c                     [         R                  " 5       n U R                  SS9nUR                  SSSS9  UR                  " [        5       6   UR                  5       UR                  5       UR                  5       4S:X  d   eg)z,Scale should persist after adding plot data.r2   r3   r6  r7  )r6  r6  r6  N)	rB   rC   rD   rb   r6  r.  rs  rt  r  rF   s     r.    test_scale3d_persists_after_plotr  V  se    
**,C	D	)BFF%eF4GG^MMOR]]_bmmo>,NNNr0   c                  h   [         R                  " 5       n U R                  SS9nUR                  SSSS9  UR	                  / SQ/ SQ/ SQ5        SUR                  5       4SUR                  5       4SUR                  5       44 H+  u  p#US	   S	:  d
   U S
35       eUS   S	:  a  M#   U S35       e   g)z/Autoscale should work correctly with log scale.r2   r3   r6  r7  r<  rX   rY   rZ   r   z lower limit should be positiver   z upper limit should be positiveN)rB   rC   rD   rb   rj  rY  rZ  r  rz  s       r.   test_scale3d_autoscale_with_logr  _  s    
**,C	D	)BFF%eF4JJ|\<8 BKKM*S"++-,@BKKM*,	1vzCdV#BCCz1vzCdV#BCCz,r0   c                  j   [         R                  " 5       n U R                  SS9nUR                  / SQ/ SQ/ SQ5        UR	                  SSSS9  U R
                  R                  5         UR                  SS5      u  p#US:X  d   eX#   [        R                  " UR                  5       S   5      :X  d   eg)	zD_calc_coord should return data coordinates with correct pane values.r2   r3   r<  r6  r7  r$  r   N)rB   rC   rD   rj  rb   r   r   _calc_coordrC  r7  rZ  )rG   r(   pointpane_idxs       r.   test_scale3d_calc_coordr  m  s    
**,C	D	)BJJ|\<8FF%eF4JJOOnnS#.OEq==?fmmBKKM!,<====r0   c                     [         R                  " 5       n U R                  SS9nUR                  S5        [        R
                  " [        R                  " SSS5      [        R                  " SSS5      5      u  p#X#-  S-
  nUR                  X#U5        U R                  R                  5         UR                  5       u  pVSUs=:  a  Us=:  a  S:  d  O   S	XV4 35       eg
)zCEnsure non-positive Z values on a log z-axis does not corrupt zlim.r2   r3   r6  r   rm   rs   gMbP?g     @@zzlim corrupted: N)rB   rC   rD   rU  r    r   r,  r[  r   r   r  )rG   r(   r   r   r   r   r   s          r.   *test_plot_surface_log_scale_invalid_valuesr  {  s    
**,C	D	)BMM%;;r{{1a+R[[Aq-ABDA		AOOA!JJOOJD$###F'7~%FF#r0   )	functoolsr   rn  rm  packaging.versionr   parse_versionrC  mpl_toolkits.mplot3dr   r   r   r   mpl_toolkits.mplot3d.axes3dr   r  
matplotlibr  matplotlib.backend_basesr	   r
   r   r   r   r   r   r  matplotlib.testing.decoratorsr   r   matplotlib.collectionsr   r   matplotlib.patchesr   r   matplotlib.pathr   matplotlib.textr   r   matplotlib.pyplotpyplotrB   numpyr    partialrl  r/   r=   rH   rR   rf   r~   r   r   r   r   r   r   versionmajorr   r   machiner   r	  r  r  markparametrizer   r*  r0  r8  r?  rH  r`  re  rl  rp  rr  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r(  r*  r,  r.  r1  r3  r@  rD  rI  rM  rU  r[  rb  rm  rv  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r  rv  r.  r0  ru  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  rD  r$  RIGHTrd  r   contextrl  rq  r  r  r  r  r  r0  tuplera  r  r  r  r  r  r  r  r  r  strr  r  r  r  r  r  r  r  r  r
  r  r  r,  r.  r0  r4  rH  rV  r\  filterwarningsr`  ri  rn  rv  rx  r{  r  r  r  r  r  r  r+  r0   r.   <module>r     s      
 4  > > A : :  ; O A 0        #**$i9 H  
 (8 9 34GD% E% -.EQ@ R@ U'J( K(  12$):4:4
J 34G%(\\X%=E1FF( W5J 6J	/ +,G< =& ./w$1"**2D2D$E$K$Ka$ODUVX	X	M6 )!)!1!1!3x!?AULGLG 12'B C )*':
 ;
 ./w? @ )VY,?-2L,A-2L,A,C D  D" )*GD E w7 8  $" +,G< =0 	* 	* )9	. :	. ./w?& @& 237C4 D4 	* 	* 
- 
- 9 9( 4C 4Cn #s,,  -,& 2 2. ./U'J$ K$ 01AH BH, 34GD= E=$ )9- :-$ =>gN	 O	 /0@ A /0@ A4  " ! ! 78H I EI J0 H H0 )uGD8 E8" /0d'J? K?" *+7;5 <5 45WE4 F4 56gF4 G4 56gF6 G698 (UC D( I I ./w?I @I" 237C	 D	
D  6% 67wG+ H+ 56gF+ G+$ 89I J8 9:'J K4SR ./U'R1 S1* )*WM N -.$)::	!
, " /0@ A, 56gF G:	/9  1!45: 6 2:(    2 23$):5:5 +,%wO P /0@ A #4 #4L 266266"23+ . & 4&y+ y+xP$ < <#(." $A $AN @ @ $%W5- 6- 45W%P" Q"" )*'%(\\X%=E1FF <.#++-9auF"F"8 )*':". ;".J3 %B#" 
6 
6	)[F| CEAREARH$0N 3!;#3#3TDF!;#3#3SGI!;#3#3SFH!;#4#4dGI +"2"2DJL +"2"2CIK +"2"2CHJKL:3L:3z 9@  @(D ()t7KO LOdJ>:'# 3	UB DE	Z%IJ	Z%IJ	UWsBi)MN	UWsBi)MN	UWsBi)MN	EC8	2	4	E3	2	4	E+	2	4	FB LM6 $$ 
2 
20 	 	 #7"8"!! J //&0	 j)K+EFz*[+,FG{+k:-FG
 	
  //&0	 z*Z,DEj)K+DE{+j*-EF
 	
  //&0	 {+j+-FGj)J
+CDk*Z,DE
 	
?.1d%He1d%HP /:c d  ;. $	,-	,-	,-KK #6"7"!/!/ #;"<"!)!)  2=4 237C
$ D
$7S,;8,R^:B 237$)u6<>6<>~ 12'uUC VC. / 2  9
= 
= @AD B D 01eT& U&D 45W$)+/+/$ ,
VRL
VQK
VaV
]F#${Q 
C !A ~s#$vqk}f%&/ TT 10 20I 'JKO LO.3OD>Gr0   