
    P/Phh                    N   d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ d dlZd dlmZmZmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZmZ d d
l m!Z!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z) d dl*Z+ e j,        edd          Z-d Z. edg          d             Z/ e-dgd          d             Z0 e-dgd          d             Z1 e-dgdd          d             Z2 e-dgdd          d             Z3 e-dgdd          d              Z4d! Z5 e-d"gdej        d#k    rd$nd %          d&             Z6 e-d'gd          d(             Z7d) Z8 e-d*gd          d+             Z9 e-d,gd          d-             Z:d. Z; e-d/gd ej<                    d0v rd1nd %          d2             Z= e-d3gd          d4             Z> e-d5gd          d6             Z? e-d7gd          d8             Z@ejA        B                    d9d:g d;gd<g d=gd>g d?gg           edg          d@                         ZC e-dAgdBdC          dD             ZDdE ZE e-dFgd          dG             ZF edg          dH             ZGdI ZH e-dJgd          dK             ZI edg          dL             ZJ e-dMgd          dN             ZK e-dOgd          dP             ZL e-dQgd          dR             ZM edg          dS             ZN edg          dT             ZOejA        B                    dUddg           edg          dV                         ZPejA        B                    dWdXdYg           edg          dZ                         ZQ edg          d[             ZR e-d\gd]dC          d^             ZS e-d_gd          d`             ZT e-dagd          db             ZU e-dcgd          dd             ZV edegd          df             ZW e-dggd          dh             ZX e-digd          dj             ZY edg          dk             ZZ edg          dl             Z[ e-dmgd          dn             Z\ e-dogdd          dp             Z] edg          dq             Z^ e-drgdsdC          dt             Z_ e-dugdvdC          dw             Z` e-dxgd          dy             Za e-dzgd          d{             Zb e-d|gd          d}             Zcd~ Zdd Ze e-dgdd%          d             Zf edg          d             Zg e-dgd          d             Zh e-dgd          d             Zid Zj edg          d             Zkd Zl e-dgd          d             Zmd Zn e-dgd          d             Zo e-dgd          d             Zp e-dgd          d             Zqd Zrd Zs e-dgdd          d             Zt e-dgdd          d             Zu e-dgdd          d             Zvd Zwd Zxd ZyddZz e-dgd          d             Z{ e-dgd          d             Z|d Z}d Z~ejA        B                    dd          ejA        B                    dd          d                         Z edg          d             Zd Z e-dgdd          d             Z e-dgdd          d             Z e-dgd          d             Z edg          d             ZejA        B                    de+j        e+j        g          ejA        B                    dg d          d                         Z G d d          Zd Z edg          d             Zd Zd Z edg          d             Z edg          d             Z edgd          d             Z e-dgdd%          dĄ             Z e-dgd ej<                    dk    rdBnd %          dǄ             Z edgddɬ%          dʄ             Z edgd          d̄             Zd̈́ Zd΄ Zdτ Z edg          dЄ             Zdф Zd҄ ZejA        B                    ddԦ          dՄ             Zdք ZejA        B                    ddej        ddfdej        ddfdej        ddfdej        ddfdej        ddfdej        ddfdej        ddfg          d             Zej                            d           edg          d                         Zd Z edgddgd          d             Zd Zd Zd Zd ZejA        B                    dedi dfedi dfedi dfe e            ddidfe e            ddidfe e            ddidfedddidfeddddddfedddddfedi dff
          d             Z edg          d             Zd Z edg          d             Z edgdd          d             Zd  Zd Zd ZejA        B                    ddg dg dg dg dgdd	gd
dgfdd	gddgfddgddgfgg dfdg dg dg dg dgdd	gddgfd	d	gddgfddgddgfgg dfdg dg dg dg dgddgddgfd	dgddgfd	dgddgfgg dfg          d             ZejA        B                    dg d          deddfd            ZejA        B                    ddg dfdg dfdg d fg          d!             Z ed"gdd          d#             Z ed$gdd          d%             Z edg          d&             Zd' Z e-d(gd          d)             Zd* Zd+ ZdS (,      N)Axes3Daxes3dproj3dart3d)_Quaternion)MouseButton
MouseEventNavigationToolbar2)cm)colorspatches)image_comparisoncheck_figures_equal)
mock_event)LineCollectionPolyCollection)Circle	PathPatch)Path)TextTdefault)remove_textstylec                    ddg}t          j        t          j        t	          t          j        |||                              d          }|D ]\  }}t          j        t          j        ||z
                      |d         |d         z
  k    rB | j        t          |t          j        |          z  |t          j        |          z              d S )Nr         )
	itertoolscombinationsnparraylistproductsumabsplot3Dzip)axscalerptsstartends         f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mpl_toolkits/mplot3d/tests/test_axes3d.pyplot_cuboidr.      s    	
AA

 $y/@Aq/I/I*J*J!K!KQ
O
OC H H
s6"&%%&&!A$1+55BIs5%0#bhuoo2EFFGGH H    png)
extensionsc                 x    |                      t          d                    }|                    d           d S )N3d
projection
subplot_kwF)subplotsdictset_visiblefig_testfig_refr'   s      r-   test_invisible_axesr>   '   s;    			dd&;&;&;		<	<BNN5r/   zgrid_off.pngmpl20r   c                      t          j                    } |                     d          }|                    d           d S Nr3   r4   F)pltfigureadd_subplotgridfigr'   s     r-   test_grid_offrI   -   s3    
*,,C	D	)	)BGGENNNNNr/   zinvisible_ticks_axis.pngc                  8   t          j                    } |                     d          }|                    g            |                    g            |                    g            |j        |j        |j        fD ]}|j	        
                    d           d S rB   )rC   rD   rE   
set_xticks
set_yticks
set_zticksxaxisyaxiszaxisliner:   )rH   r'   axiss      r-   test_invisible_ticks_axisrS   4   s    
*,,C	D	)	)BMM"MM"MM"28RX. % %	e$$$$% %r/   zaxis_positions.pngFc                  P   g d} t          j        ddddi          \  }}t          |                                |           D ]b\  }}|j        |j        |j        fD ],}|                    |           |                    |           -| }|	                    ddd|	           cd S )
N)upperlowerbothnoner   r5   r3   r6   xyz)xlabelylabelzlabeltitle)
rC   r8   r&   flattenrN   rO   rP   set_label_positionset_ticks_positionset)	positionsrH   axsr'   posrR   r_   s          r-   test_axis_positionsrg   ?   s    222I|AqlD-ABBBHCs{{}}i00 @ @CHbh0 	) 	)D##C(((##C((((
c#c????@ @r/   zaspects.pngc                     d} t          j        ddddi          \  }}|                                dd         D ]}t          |g d	
           t          |d         d         g d
           t	          |                                          D ]R\  }}|                    | |                    |                    d           |                    | |         d           S|d         d                             d           d S )N)autoequalequalxyequalyzequalxzrj   r      r5   r3   r6   r   )r   r      r(   r   r   r   r   rn      rp   datalim
adjustablezequal (cube))rC   r8   r`   r.   	enumerate	set_titleset_box_aspect
set_aspect)aspects_re   r'   is        r-   test_aspectsr   K   s   IG\!QL$+?@@@FAskkmmAbD! ) )Biii(((((Aq	++++3;;==)) 8 82
WQZ   
)$$$
gajY7777F1I'''''r/   zaspects_adjust_box.pngc                     d} t          j        dt          |           ddid          \  }}t          |          D ]P\  }}t	          |g d           |                    | |                    |                    | |         d	
           Qd S )N)ri   rj   rk   rl   rm   r   r5   r3   )   rn   )r7   figsize)rt   rn   rp   rq   boxrv   )rC   r8   lenrx   r.   ry   r{   )r|   rH   re   r~   r'   s        r-   test_aspects_adjust_boxr   \   s     AG|As7||t8L$+- - -HC 3 4 42Biii((((
WQZ   
gajU33334 4r/   c                  T   t          j                    } |                     d          }|                    d           |                    d           |                    d           |                    d           |                    d           t          |          dk    sJ d S )	Nr3   r4   labelr_   rY   rZ   r[   zV<Axes3D: label='label', title={'center': 'title'}, xlabel='x', ylabel='y', zlabel='z'>)	rC   rD   rE   	set_labelry   
set_xlabel
set_ylabel
set_zlabelreprrG   s     r-   test_axes3d_reprr   i   s    
*,,C	D	)	)BLLLLMM#MM#MM#88	IJ J J J J Jr/   zaxes3d_primary_views.pngdarwin皙?)r   tolc                     g d} t          j        ddddi          \  }}t          |j                  D ]\  }}|                    d           |                    d           |                    d	           |                    d
           |                    | |         d         | |         d         | |         d                    t          j	                     d S )N))Z   r   r   r   r   r   r   r   )r   r   r   r   r   r   r      r   r   rn   r5   r3   r6   rY   rZ   r[   orthor   r   elevazimroll)
rC   r8   rx   flatr   r   r   set_proj_type	view_inittight_layout)viewsrH   re   r~   r'   s        r-   test_axes3d_primary_viewsr   v   s      E |AqlD-ABBBHC38$$ K K2
c
c
c
!!!
%(1+E!HQKeAhqkJJJJr/   z	bar3d.pngc            
      D   t          j                    } |                     d          }t          g dg d          D ]a\  }}t	          j        d          }t	          j        d          }|gt          |          z  }d|d<   |                    |||dd	|d
           bd S )Nr3   r4   )r)   gbrZ   )      
   r   r   cr   rZ   edge皙?)zszdiraligncoloralpha)rC   rD   rE   r&   r   aranger   bar)rH   r'   r   r[   xsyscss          r-   
test_bar3dr      s    
*,,C	D	)	)B(((///:: J J1Yr]]Yr]]S3r77]1
r2!#V2SIIIIJ Jr/   c            
      ,   t          j                    } |                     d          }dD ]g}t          j        t          |                    }t          j        |          }t          j        |          }|                    |||ddd|           hd S )Nr3   r4   )redgreenblueyellowr   r   )rC   rD   rE   r   r   r   
zeros_likebar3d)rH   r'   r   r   r   r   s         r-   test_bar3d_colorsr      s    
*,,C	D	)	)B/ / /Ys1vv]2]2 	RQ1A..../ /r/   zbar3d_shaded.pngc            
         t          j        d          } t          j        d          }t          j        | |          \  }}|                                |                                }}||z   dz   }g d}t	          j        t	          j        dt          |          z                      }|                    dt          |          t          d                    }t          ||          D ]@\  }\  }	}
}|                    |||d	z  dd|d
           |                    |	|
|           A|j                                         d S )Nrt   rp   r   ))r   r   )r   r   r   )r   r   ),  r   r   r   r3   r4   r6   r   Tshader   )r   r   meshgridravelrC   rD   	figaspectr   r8   r9   r&   r   r   canvasdraw)rY   rZ   x2dy2dr[   r   rH   re   r'   r   r   r   s               r-   test_bar3d_shadedr      s5   
	!A
	!A{1a  HCyy{{CIIKKCc	AAGGGE
*S]1s5zz>::
;
;
;C
,,	3u::4(((   C #&c5// 6 6T4
c37Aq!4888
$T5555JOOr/   zbar3d_notshaded.pngc            	         t          j                    } |                     d          }t          j        d          }t          j        d          }t          j        ||          \  }}|                                |                                }}||z   }|                    |||dz  dd|d           | j        	                                 d S )	Nr3   r4   rt   rp   r   r   Fr   )
rC   rD   rE   r   r   r   r   r   r   r   )rH   r'   rY   rZ   r   r   r[   s          r-   test_bar3d_notshadedr      s    
*,,C	D	)	)B
	!A
	!A{1a  HCyy{{CIIKKCc	AHHS#sQw1auH555JOOr/   c                  B  
 t          j                    } |                     dddd          }t          j        dd          }d\  }}||z  
t          j        t          j        |          t          j        |                    \  }}|                                }|                                }||z   }
fdt          
          D             }|
                    ||ddd||d	|
	  	        }	t
          j                            ||	j        dd d         d           d S )Nr   r3   r4   r   r   )azdegaltdeg)rn   rt   c                 >    g | ]}t          j        |z            S  )r   coolwarm).0r~   areas     r-   
<listcomp>z*test_bar3d_lightsource.<locals>.<listcomp>   s'    666QR[4  666r/   T)	rY   rZ   r[   dxdydzr   r   lightsource   rt   )rC   rD   rE   mcolorsLightSourcer   r   r   r   ranger   testingassert_array_max_ulp_facecolor3d)rH   r'   lslengthwidthrY   rZ   r   r   
collectionr   s             @r-   test_bar3d_lightsourcer      s   
*,,C	AqT	2	2B		1R	0	0	0BMFEE>D;ry((")E*:*:;;DAq			A			A	
QB6666%++666EAa1 %Tr  C CJ J##E:+B14a4+H!LLLLLr/   zcontour3d.png)aarch64arm64ppc64les390xgMb`?c                     dt           j        d<   t          j                    } |                     d          }t	          j        d          \  }}}|                    |||ddt          j                   |                    |||d	d
t          j                   |                    |||ddt          j                   |	                    d
dd
ddd           d S )NTaxes3d.automarginr3   r4   r   r[   r   offsetcmaprY   rZ   (   d   )xminxmaxyminymaxzminzmax)
rC   rcParamsrD   rE   r   get_test_datacontourr   r   rR   rH   r'   XYZs        r-   test_contour3dr     s     )-CL$%
*,,C	D	)	)B"4((GAq!JJq!QSBKJ@@@JJq!QS2;J???JJq!QS"+J>>>GG2Cbt#GFFFFFr/   zcontour3d_extend3d.pngc            	      v   dt           j        d<   t          j                    } |                     d          }t	          j        d          \  }}}|                    |||ddt          j        d           |	                    d	d
           |
                    dd           |                    dd           d S )NTr   r3   r4   r   r[   r   )r   r   r   extend3dr   r   r   P   )rC   r   rD   rE   r   r   r   r   r   set_xlimset_ylimset_zlimr  s        r-   test_contour3d_extend3dr     s    (,CL$%
*,,C	D	)	)B"4((GAq!JJq!QSBK$JOOOKKRKKRKKRr/   zcontourf3d.pngc                     dt           j        d<   t          j                    } |                     d          }t	          j        d          \  }}}|                    |||ddt          j                   |                    |||d	d
t          j                   |                    |||ddt          j                   |	                    d
d           |
                    d
d           |                    dd           d S )NTr   r3   r4   r   r[   r   r   rY   r   rZ   r   r   )rC   r   rD   rE   r   r   contourfr   r   r  r  r  r  s        r-   test_contourf3dr     s    (,CL$%
*,,C	D	)	)B"4((GAq!KK1ac$R[KAAAKK1ac#BKK@@@KK1ac"2;K???KKRKKRKKcr/   zcontourf3d_fill.pngc                     dt           j        d<   t          j                    } |                     d          }t	          j        t	          j        ddd          t	          j        ddd                    \  }}|                    dd          }d	|d d d
d d d
f<   |                    |||dddgt          j
                   |                    dd           |                    dd           |                    dd           d S )NTr   r3   r4   r         ?r   皙?rp   皙)r   levelsr   ro   r   )rC   r   rD   rE   r   r   r   clipr  r   r   r  r  r  r  s        r-   test_contourf3d_fillr    s    (,CL$%
*,,C	D	)	)B;ryQ--ryQ/E/EFFDAq	q!A Accc33Q3hKKK1a4)"+KFFFKKAKKAKKAr/   zextend, levelsrW   )r   rt   r   min)r   rt   r      max)r   r   rt   r   c                    t          j        t          j        ddd          t          j        ddd                    \  }}|dz  |dz  z   }t          j        d                                         }|                     |d                     |                     |d                     dd|d	}|                    d
          }	 |	j	        |||fdg di| |                     d
          }
 |
j	        ||||fd|i| |	|
fD ]D}|
                    dd           |                    dd           |                    dd           Ed S )Nr  r   r  viridisr      r      )vminvmaxr   r3   r4   r  )r   r   rt   r   r  extendr   )r   r   r   mpl	colormapscopy	set_underset_overrE   r  r  r  r  )r<   r=   r#  r  r  r  r  r   kwargsax_refax_testr'   s               r-   test_contourf3d_extendr-    sy   
 ;ryQ--ryQ/E/EFFDAq	1q!tA =#((**DNN4477MM$$s))D11F  D 11FFOAq!>>OOO>v>>>""d"33GGQ1f>>V>v>>>w  
B
B
C r/   ztricontour.png{Gz?)r   r   c                     dt           j        d<   t          j                    } t          j                            d           t          j                            d          dz
  }t          j                            d          dz
  }|dz  |dz  z    }|                     dddd	          }|                    |||           |                     dddd	          }|	                    |||           d S )
NTr   i!N,        ?r   r   r3   r4   )
rC   r   rD   r   randomseedrandrE   
tricontourtricontourf)rH   rY   rZ   r[   r'   s        r-   test_tricontourr7  4  s    (,CL$%
*,,CINN8
	ts"A
	ts"A
Q$A+A	AqT	2	2BMM!Q	AqT	2	2BNN1ar/   c                  2   t          j                    } |                     d          }d\  }}t          j        dd|          }t          j        dd|          }t          j                            dd||g          }|                    |||dg           d S )	Nr3   r4   )r   r   r$  r   r   r   r1  )rC   rD   rE   r   linspacer2  randintr   )rH   r'   nxnyrY   rZ   r[   s          r-   test_contour3d_1d_inputr=  D  s    
*,,C	D	)	)BFB
CR  A
CR  A
	!QR))AJJq!Qr/   zlines3d.pngc                  ~   t          j                    } |                     d          }t          j        dt          j        z  dt          j        z  d          }t          j        ddd          }|dz  dz   }|t          j        |          z  }|t          j        |          z  }|                    |||           d S )	Nr3   r4   rt   r   r  r   r   )	rC   rD   rE   r   r9  pisincosplot)rH   r'   thetar[   r)   rY   rZ   s          r-   test_lines3drE  O  s    
*,,C	D	)	)BKRU
AIs33E
B3A	Q
A	BF5MMA	BF5MMAGGAq!r/   c                     |                      d          }|                    dgdgd           |                     d          }|                    ddd           d S )Nr3   r4   r   orE   rC  r<   r=   ax1ax2s       r-   test_plot_scalarrL  [  sd    


$

/
/CHHaS1#s




.
.CHHQ3r/   c                     t          j        t          d          5  t          j        dg g            d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        g dg            d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        g g d           d d d            n# 1 swxY w Y   t          j        g g g           } t          j        t          d          5  |                     dg g            d d d            n# 1 swxY w Y   t          j        t          d          5  |                     g dg            d d d            n# 1 swxY w Y   t          j        t          d          5  |                     g g d           d d d            d S # 1 swxY w Y   d S )Nz	x must bematchr   z	y must bez	z must be)pytestraisesRuntimeErrorr   Line3Dset_data_3d)rQ   s    r-   test_invalid_line_datarU  c  s&   	|;	7	7	7    QB                             	|;	7	7	7    RB                             	|;	7	7	7    RQ                              <B##D	|;	7	7	7 $ $B###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	|;	7	7	7 $ $Q###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	|;	7	7	7 $ $R###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $si   ?AA%BBB.CCCD11D58D5E;;E?E?!GG
G
zmixedsubplot.pngc            	         d } t          j        ddd          }t          j        ddd          }dt          j        d<   t          j        t          j        d          	          }|                    d
dd          }|                    | | |          d| | |          dd           |                    d           |                    d
dd
d          }t          j	        t          j        ddd          t          j        ddd                    \  }}t          j
        ||          }t          j        |          }|                    |||dddd           |                    dd           d S )Nc                 v    t          j        dt           j        z  | z            t          j        |            z  S )Nr   )r   rB  r@  exp)ts    r-   fztest_mixedsubplots.<locals>.fv  s+    vagai  261"::--r/                 @r  r.  Tr          @r   r   r   bozk--r   )markerfacecolorr3   r4   rp   r  r   r   F)rcountccount	linewidthantialiasedro   )r   r   rC   r   rD   r   rE   rC  rF   r   hypotrA  plot_surface
set_zlim3d)	rZ  t1t2rH   r'   r  r  Rr  s	            r-   test_mixedsubplotsrk  t  sb   . . . 
3S	!	!B	3T	"	"B(,CL$%
*S]2..
/
/
/C	Aq	!	!BGGB"tR2wGGGGGGDMMM	AqT	2	2B;ryQ--ryQ/E/EFFDAq
AA
q		AOOAq!BrU  4 4 4 MM"ar/   c                    |                      d          }|                    dddd           |                                  |                     d          }|                                 |                    dddd           d S )Nr3   r4   r1  zsome strings)rE   textr   rI  s       r-   test_tight_layout_textrp    s     

$

/
/CHHRR=H)))




.
.CHHRR=H)))))r/   zscatter3d.pngc                     dt           j        d<   t          j                    } |                     d          }|                    t          j        d          t          j        d          t          j        d          dd           t          j        dd	          x}x}}|                    |||d
d           d|d<   |                    g g g dd           d S )NTr   r3   r4   r   r)   rG  )r   markerr   r   ^r   ro   r  rC   r   rD   rE   scatterr   r   rH   r'   rY   rZ   r[   s        r-   test_scatter3drw    s    (,CL$%
*,,C	D	)	)BJJry}}bimmRYr]]S  " " "	"b!!!A!AJJq!Q#cJ***AbEJJr2rSJ-----r/   zscatter3d_color.pngc                  `   dt           j        d<   t          j                    } |                     d          }|                    t          j        d          t          j        d          t          j        d          ddd	           |                    t          j        d          t          j        d          t          j        d          ddd	           |                    t          j        dd
          t          j        dd
          t          j        dd
          dd           d S )NTr   r3   r4   r   r)   rX   rG  )	facecolor	edgecolorrr  r   r   rn  )r   rr  rt  rG   s     r-   test_scatter3d_colorr{    s   (,CL$%
*,,C	D	)	)B JJry}}bimmRYr]]s  < < <JJry}}bimmRYr]]3s  < < < JJryR  ")B"3"3RYr25F5F  & & & & &r/   zscatter3d_linewidth.pngc            	         t          j                    } |                     d          }|                    t	          j        d          t	          j        d          t	          j        d          dt	          j        d                     d S )Nr3   r4   r   rG  )rr  rc  )rC   rD   rE   ru  r   r   rG   s     r-   test_scatter3d_linewidthr}    sr    
*,,C	D	)	)B JJry}}bimmRYr]]RYr]]  4 4 4 4 4r/   c           	         |                     d          }|                    t          j        d          t          j        d          t          j        d          d          }|                    t          j        d                     |                      d          }|                    t          j        d          t          j        d          t          j        d          dt          j        d                     d S )Nr3   r4   r   rG  rr  )rr  
linewidths)rE   ru  r   r   set_linewidthsr=   r<   r,  r   r+  s        r-   %test_scatter3d_linewidth_modificationr    s     ""d"33G	"ry}}bimm" 	 	$ 	$ARYr]]###  D 11F
NN29R==")B--2s imm  - - - - -r/   c                 4   |                     d          }|                    t          j        d          t          j        d          t          j        d          d          }|                    d           |                    d           |                    dd	gd
z             |                                sJ |                    d           |                                rJ |	                    t          j
        dd                     |                    d           |                      d          }|                    t          j        d          t          j        d          t          j        d          ddddd	gd
z  ddd
  
         d S )Nr3   r4   r   rG  r  C1C2333333?ffffff?rp   FK   rn   )rr  ry  rz  r   
depthshadern  r  )rE   ru  r   r   set_facecolorset_edgecolor	set_alphaget_depthshadeset_depthshade	set_sizesfullr  r  s        r-   test_scatter3d_modificationr    sv    ""d"33G	"ry}}bimm" 	 	$ 	$AOODOODKKc
QU!!!!!KKB   Q  D 11F
NN29R==")B--2s!T#sa#ra  9 9 9 9 9r/   r  c                    t           j        ddddf         \  }}t          j        |j                                      |j                  }t          j        |j        d          }d|ddddddf<   d|ddddddf<   t          j        |j        d          }d	|dd
dd
f<   d|ddddf<   d|ddddf<   t          j        |j        d          }d|dd
dd
f<   d|d
ddd
f<   d|d
dd
df<   t          j        |j        d          }	d
|	ddddddf<   d
|	ddddddf<   d |||||||	fD             \  }}}}}}}	|                     d          }
d ||||	fD             }t          j	        | D ]\  }}}}||k    ||k    z  ||k    z  |	|k    z  }t           j
                            ||t                    }t          j        |t          |j                             }|
                    |||||||d|	  	         |                    d          }|                    |||||||	d|	  	         dS )z1Test that marker properties are correctly sorted.Nr      r   r   r   r   C0r  rp   r  r   rt   C3C4C5C6	   C7c              3   >   K   | ]}|                                 V  d S N)r`   r   as     r-   	<genexpr>z)test_scatter3d_sorting.<locals>.<genexpr>   s>       : : 	
		: : : : : :r/   r3   r4   c              3   >   K   | ]}t          j        |          V  d S r  )r   uniquer  s     r-   r  z)test_scatter3d_sorting.<locals>.<genexpr>  s*      NNQBIaLLNNNNNNr/   dtype)rn  fceclwr   r  )r   mgridr   sizereshapeshaper  rE   r   r"   mamasked_arrayfloatrepeatr#   maskru  )r=   r<   r  rZ   rY   r[   sizes
facecolors
edgecolorsr  r+  setsrn  r  r  r  subsetr,  s                     r-   test_scatter3d_sortingr    s   
 8CRC"HDAq
	!&!!!'**AGAGR  EE!$Q$1*E!$Q$1*$''JJrr2A2vJqrr2A2vJqrr122v$''JJqsAaCxJqsAaCxJqsAaCx!$$JJqt!tQTTzJqt!tQTTz: :Q5*j*E: : :6Aq!UJ
J
   D 11FNN5*j*"MNNND"*D1 . .2r2aZ22 2 	 ##AvU#;; Yr3|,,--q!VqRB2Q", 	 	. 	. 	. 	. ""d"33GOOAq!u
!z  C C C C Cr/   r      c           
         ddg}ddg}ddg}ddg}|                      d          }|                    |||d|	           |                    d|d
           |                     d          }|                    |ddd         |ddd         |ddd         d|ddd         	           |                    d|d
           dS )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.
    ro   r   r   r   rZ   r3   r4     rn  r   r   N)rE   ru  r   r<   r=   r   rY   rZ   r[   r   r'   s           r-   $test_marker_draw_order_data_reversedr    s     
QA	
BA	
AA#JE					.	.BJJq!Q$%J(((LLadL+++					-	-BJJq2w$$B$44R4DE$$B$KJ@@@LLadL+++++r/   c           
         d}ddg}ddg}ddg}ddg}|                      d          }|                                 |                    |||d	|
           |                    d|d           |                     d          }|                                 |                    |||d	|ddd         
           |                    d|dz
  d           dS )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  ro   r   r   r   rZ   r3   r4   r  r  r   Nr   )rE   set_axis_offru  r   r  s           r-   #test_marker_draw_order_view_rotatedr  3  s     D	QA	
BA	
AA#JE					.	.BOOJJq!Q$%J(((LLadL+++					-	-BOOJJq!Q$%"+J...LLadSjqL11111r/   zplot_3d_from_2d.pngg~jt?c                     t          j                    } |                     d          }t          j        dd          }t          j        dd          }|                    ||dd           |                    ||dd           d S )	Nr3   r4   r   rp   r   rY   r   r   rZ   )rC   rD   rE   r   r   rC  )rH   r'   r   r   s       r-   test_plot_3d_from_2dr  K  sz    
*,,C	D	)	)B	1aB	1b		BGGBqsG###GGBqsG#####r/   zfill_between_quad.pngc                     t          j                    } |                     d          }t          j        ddt          j        z  d          }t          j        |          }t          j        |          }dt          j        d|z            z  }dt          j        |          z  }dt          j        |          z  }d}|t          j        dz  k     |d	t          j        z  dz  k    z  }	|                    |||||||	d
dd
  
         d S )Nr3   r4   r   r   2   r  r   333333?rn   ri   r1  k)wheremoder   rz  )	rC   rD   rE   r   r9  r@  rB  rA  fill_between)
rH   r'   rD  x1y1z1x2y2z2r  s
             r-   test_fill_between_quadr  U  s    
*,,C	D	)	)BK1RU7B''E	B	B	rva%i  	 B	rve}}	B	rve}}	B	
BRU1W_25!23E OOBBBfC3  H H H H Hr/   zfill_between_polygon.pngc                  p   t          j                    } |                     d          }t          j        ddt          j        z  d          }|x}}dx}}t          j        |          }|dz   }|t          j        dz  k     |dt          j        z  dz  k    z  }	|                    |||||||	dd	
	  	         d S )Nr3   r4   r   r   r  r   rn   ri   r  )r  r  rz  )rC   rD   rE   r   r9  r@  rB  r  )
rH   r'   rD  r  r  r  r  r  r  r  s
             r-   test_fill_between_polygonr  l  s    
*,,C	D	)	)BK1RU7B''EOBKB	B	aBRU1W_25!23E OOBBBf  = = = = =r/   zsurface3d.pngc            
         dt           j        d<   t          j                    } |                     d          }t	          j        ddd          }t	          j        ddd          }t	          j        ||          \  }}t	          j        ||          }t	          j        |          }|	                    |||ddt          j        d	d
          }dt           j        d<   |                    dd           |                     |dd           d S )NFzpcolormesh.snapr3   r4   r`  rp   r  r   r   )ra  rb  r   r  rd  Tr   )\()\(?r1  )shrinkaspect)rC   r   rD   rE   r   r   r   re  rA  rf  r   r   r  colorbar)rH   r'   r  r  rj  r  surfs          r-   test_surface3dr    s     ',CL"#
*,,C	D	)	)B
	"aA
	"aA;q!DAq
AA
q		A??1a2br{U  4 4D(,CL$%KKtLLc!L,,,,,r/   z(surface3d_label_offset_tick_position.pngc                  @   dt           j        d<   t          j                                        d          } t          j        ddt          j        z  dddt          j        z  df         \  }}t	          j        t	          j        t	          j	        |          t	          j	        |          z                       }| 
                    |d	z  |d
z  |dz  ddd           |                     d           |                     d           |                     d           d S )NTr   r3   r4   r   r   r  rt   g     j@g    .Ag    חAautumnr   )r   cstriderstridezX labelzY labelzZ label)rC   r   rD   rE   r   r  r@  sqrtr$   rB  rf  r   r   r   )r'   rY   rZ   r[   s       r-   )test_surface3d_label_offset_tick_positionr    s    (,CL$%		!	!T	!	2	2B8Aa"%i$aBE	$&667DAq
rvayy26!99,--..AOOAGQWa#gHaQROSSSMM)MM)MM)r/   zsurface3d_shaded.pngc            
         t          j                    } |                     d          }t          j        ddd          }t          j        ddd          }t          j        ||          \  }}t          j        |dz  |dz  z             }t          j        |          }|                    |||ddg ddd	
           dt           j	        d<   |
                    dd           d S )Nr3   r4   r`  rp   r  r   )r  r   r  r   F)r  r  r   r  rd  Tr   r  r  )rC   rD   rE   r   r   r   r  rA  rf  r   r  )rH   r'   r  r  rj  r  s         r-   test_surface3d_shadedr    s    
*,,C	D	)	)B
	"aA
	"aA;q!DAq
Qa  A
q		AOOAq!Q)//aU  D D D(,CL$%KKtr/   zsurface3d_masked.pngc                  J   t          j                    } |                     d          }g d}g d}t          j        ||          \  }}t          j        g dg dg dg dg d	g d
g dg dg          }t          j                            |d          }t          j	        |
                                |                                          }t          j        d          ||                    }|                    ||||           |                    ddd           d S )Nr3   r4   )r   r   rn   rt   rp   r   r   r  r  r   r   )r   r   rn   rt   rp   r   r   r  )ro   r   r   r   r   r   r   r   r   r   r   )ro   r   r   rn   rt   rt   rt   rn   r   r   r   )ro         rt   rp   r   r  r   rp   rt   rn   r  )ro   r  r   r  r      r   r  r   r  r  )ro   r  r  r  r      r   r  r   r   r  )ro   r  r  r  r  r   r  r  r   r  r  )ro   r  r  r        r  r      r  r  )ro   r  r  r  r        r  r  r  r  r   )r"  r!  plasmar  r   r	  )rC   rD   rE   r   r   r    r  masked_lessr   	Normalizer  r  r%  r&  rf  r   )rH   r'   rY   rZ   matrixr[   normr   s           r-   test_surface3d_maskedr    s9   
*,,C	D	)	)B+++A   A;q!DAqX......222777666<<<===???		
 F 	&!$$A!%%''888D]8$TT!WW--FOOAq!O///LLS!r/   c                 @   t          j        ddd          }t          j        ddd          }t          j        |          t          j        |          z  }|dk    }t           j                            ||          }|                     d          }|                    |||           |                    |||           t           j	        x||<   x||<   ||<   |                    d          }|                    |||           |                    |||           d S )Nr   r   r   )r  r3   r4   )
r   r9  rA  rB  r  r    rE   ru  rC  nan)	r<   r=   rY   rZ   r[   r  z_maskedr,  r+  s	            r-   test_plot_scatter_masksr    s	   
Ar3A
Ar3A
q		BF1IIAq5Du{{14{((H""d"33GOOAq(###LLAx   "$&(AdG(ag$  D 11F
NN1a
KK1ar/   c                 @   t          j        t          j        d          t          j        d                    \  }}||z   }|                     d          }|                    |||d            |                    d          }|                    |||           d S )Nrp   r3   r4   r  )r   r   r   rE   rf  )r<   r=   rY   rZ   r[   r,  r+  s          r-   test_plot_surface_None_argr    s    ;ry||RYq\\22DAq	AA""d"33GAqT222  D 11F
1a     r/   zsurface3d_masked_strides.pngc                  :   t          j                    } |                     d          }t          j        ddddddf         \  }}t          j                            ||z  d          }|                    |||dd           |                    d	d
d           d S )Nr3   r4   igffffff@r   r   rt   r  r  <   r   )	rC   rD   rE   r   r  r  r  rf  r   rv  s        r-   test_surface3d_masked_stridesr    s    
*,,C	D	)	)B8Bs1HbQh&'DAq
!a%##AOOAq!QO222LLS!r/   z
text3d.pngc                  p   t          j                    } |                     d          }d}d}d}d}t          ||||          D ])\  }}}}	d|||	|fz  }
|                    |||	|
|           *|                    dddd	d	
           |                    ddd|j                   dt           j        d<   |                    dd           |	                    dd           |
                    dd           |                    d           |                    d           |                    d           d S )Nr3   r4   NrY   rZ   r[   r   r   r   rr   r   r   rt   r  r   r   r   rt   r  r   r   r   rt   r   rp   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)rC   rD   rE   r&   ro  text2D	transAxesr   
set_xlim3d
set_ylim3drg  r   r   r   )rH   r'   zdirsr   r   r   r   rY   rZ   r[   r   s              r-   test_text3dr    sE   
*,,C	D	)	)B7E	B	B	BUBB// & &aA&!Q48
1a%%%%GGAq!U%G(((IIdD)r|I<<<(,CL$%MM!RMM!RMM!RMM(MM(MM(r/   c                    d}d}d}d}|                     d          }|                    dd           |                    dd           |                    dd           t	          ||||          D ]E\  }}}	}
|                    dddd	| d
|	 d
|
 d|           }|                    ||	|
f|           F|                      d          }|                    dd           |                    dd           |                    dd           t	          ||||          D ]-\  }}}	}
|                    ||	|
d	| d
|	 d
|
 d| |           .d S )Nr   r  r  r  r3   r4   r   r   (z, z), dir=)r   )rE   r  r	  rg  r&   ro  set_position_3d)r=   r<   r
  r   r   r   r,  r   rY   rZ   r[   rY  r+  s                r-   test_text3d_modificationr    s    8E	B	B	B""d"33Gq"q"q"UBB// 0 0aALLAq"@a"@"@1"@"@"@"@$"@"@AA	1a)$////  D 11F
a
a
aUBB// H HaAAq!;;;a;;1;;T;;$GGGGH Hr/   ztrisurf3d.pnggZd;?c                     d} d}t          j        dd|          }t          j        ddt           j        z  | d          }t          j        |d	t           j        f         |d
          }|d d d
d dfxx         t           j        | z  z  cc<   t          j        d|t          j        |          z                                            }t          j        d|t          j        |          z                                            }t          j        | |z            }t          j
                    }|                    d          }|                    |||t          j        d           d S )N$   r        ?      ?r   r   Fendpoint.r   rR   r3   r4   皙?)r   rc  )r   r9  r@  r  newaxisappendrB  r`   rA  rC   rD   rE   plot_trisurfr   jet	n_anglesn_radiiradiianglesrY   rZ   r[   rH   r'   s	            r-   test_trisurf3dr!  $  s1   HGKsG,,E[AbeGX>>>FYvc2:o.a@@@F
111add7OOOruX~%OOO
	!eBF6NN*335566A
	!eBF6NN*335566A
r!tA
*,,C	D	)	)BOOAq!"&CO88888r/   ztrisurf3d_shaded.pngQ?c                     d} d}t          j        dd|          }t          j        ddt           j        z  | d          }t          j        |d	t           j        f         |d
          }|d d d
d dfxx         t           j        | z  z  cc<   t          j        d|t          j        |          z                                            }t          j        d|t          j        |          z                                            }t          j        | |z            }t          j
                    }|                    d          }|                    |||g dd           d S )Nr  r  r  r  r   r   Fr  .r   r  r3   r4   )r   r1  r   r  )r   rc  )r   r9  r@  r  r  r  rB  r`   rA  rC   rD   rE   r  r  s	            r-   test_trisurf3d_shadedr$  6  s3   HGKsG,,E[AbeGX>>>FYvc2:o.a@@@F
111add7OOOruX~%OOO
	!eBF6NN*335566A
	!eBF6NN*335566A
r!tA
*,,C	D	)	)BOOAq!;;;#O>>>>>r/   zwireframe3d.pngc                      t          j                    } |                     d          }t          j        d          \  }}}|                    |||dd           d S )Nr3   r4   r      ra  rb  rC   rD   rE   r   r   plot_wireframer  s        r-   test_wireframe3dr*  H  s[    
*,,C	D	)	)B"4((GAq!aAb44444r/   zwireframe3dzerocstride.pngc                      t          j                    } |                     d          }t          j        d          \  }}}|                    |||dd           d S )Nr3   r4   r   r&  r   r'  r(  r  s        r-   test_wireframe3dzerocstrider,  P  s[    
*,,C	D	)	)B"4((GAq!aAb33333r/   zwireframe3dzerorstride.pngc                      t          j                    } |                     d          }t          j        d          \  }}}|                    |||dd           d S )Nr3   r4   r   r   r   r  r(  r  s        r-   test_wireframe3dzerorstrider.  X  s[    
*,,C	D	)	)B"4((GAq!aAq"55555r/   c                      t          j                    } |                     d          }t          j        d          \  }}}t          j        t                    5  |                    |||dd           d d d            d S # 1 swxY w Y   d S )Nr3   r4   r   r   r  )	rC   rD   rE   r   r   rP  rQ  
ValueErrorr)  r  s        r-    test_wireframe3dzerostrideraisesr1  `  s    
*,,C	D	)	)B"4((GAq!	z	"	" 9 9
!Q1a8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   BB
Bc                     t          j                    } |                     d          }t          j        d          \  }}}t          j        t                    5  |                    |||dd           d d d            n# 1 swxY w Y   t          j        t                    5  |	                    |||dd           d d d            d S # 1 swxY w Y   d S )Nr3   r4   r   r   r  )r  rb  )r  ra  )
rC   rD   rE   r   r   rP  rQ  r0  r)  rf  r  s        r-   test_mixedsamplesraisesr3  h  sJ   
*,,C	D	)	)B"4((GAq!	z	"	" : :
!Q2b999: : : : : : : : : : : : : : :	z	"	" 8 8
1aB7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s$   BB	B&CCCzquiver3d.pngg~jth?c                  &   dt           j        d<   t          j                    } |                     d          }g d}g d}t	          t          ||                    D ]p\  }\  }}t          j        ddgddgddg          \  }}}	| }
| }|	 }|	d	|z  z  }	|                    |||	|
||d
||	  	         |	                    |||	|           q|
                    dd           |                    dd           |                    dd           d S )NTr   r3   r4   )tipmiddletail)ztab:bluez
tab:orangez	tab:green      r1  r   r   )r   pivotr   r   rn   ro   rp   )rC   r   rD   rE   rx   r&   r   r   quiverru  r  r  r  )rH   r'   pivotsr   r~   r9  r   rY   rZ   r[   uvws                r-   test_quiver3dr@  s  s7   (,CL$%
*,,C	D	)	)B&&&F444F&s66':':;; ) )>E5+tSkD#;sDD1aBBB	QU

		!Q1a1E	GGG


1a%
((((KKAKKAKKAr/   c                     |                     d           g x}x}x}x}x}}|                      d          }|                    ||||||ddd	  	         d S )Nr3   r4   r  r5  Tr   r9  	normalize)rE   r;  )	r<   r=   rY   rZ   r[   r=  r>  r?  r'   s	            r-   test_quiver3d_emptyrD    sw    4(((AAA					.	.BIIaAq!Qs%4IHHHHHr/   zquiver3d_masked.pngc                     t          j                    } |                     d          }t          j        dddddddddf         \  }}}t          j        t          j        |z            t          j        t          j        |z            z  t          j        t          j        |z            z  }t          j        t          j        |z             t          j        t          j        |z            z  t          j        t          j        |z            z  }dt          j        t          j        |z            z  t          j        t          j        |z            z  t          j        t          j        |z            z  }t          j        	                    d	|k     |d
k     z  |d          }t          j        	                    d
|k     |dk     z  |d          }|
                    ||||||d
dd	  	         d S )Nr3   r4   ro   r   y              $@r  y              @g>,p ?皙ٿr  F)r'  r  r5  TrB  )rC   rD   rE   r   r  rA  r@  rB  r  masked_wherer;  )rH   r'   rY   rZ   r[   r=  r>  r?  s           r-   test_quiver3d_maskedrH    s   
*,,C	D	)	)B hr#cz2c#:r#by89GAq!
ruqyBF2519---ruqy0A0AAA				RVBEAI...	1B1BBARVBEAI&&&	):)::RVBEAI=N=NNA
D1HS115AAA
C!GC0!%@@AIIaAq!Qs%4IHHHHHr/   zquiver3d_colorcoded.pngc            	         t          j                    } |                     d          }t          j        d          x}x}x}}t          j        d          x}}t           j                            ||                                z            }|	                    |||||||           |
                    dd           d S )Nr3   r4   r         $@)r   r   )rC   rD   rE   r   zerosr   r   Redsr  r;  r  )	rH   r'   rY   rZ   r   r   r[   r   r   s	            r-   test_quiver3d_colorcodedrM    s    
*,,C	D	)	)Bhrll"A""BYs^^AFKK26688$$EIIaAr2r%I000KK2r/   c                     t          j                    } |                     d          }t          d          }|                    |           t          j        |           |                    d           t          j	        |
                                d          sJ | j                                         t          j	        |
                                d          sJ d S )Nr3   r4   r   r   )r  r[  r[  r   )r   r   r   r   )rC   rD   rE   r   	add_patchr   patch_2d_to_3dr  r   
same_colorget_facecolorr   r   )rH   r'   circles      r-   test_patch_modificationrU    s    
*,,C	D	)	)BF^^FLL	   
+,,,f2244lCCCCCJOOf2244lCCCCCCCr/   c                    t          dd          }t          dd          }t          j        g dg dg          }t          j        ||gd          }|                     d	
          }|                    |           |                    d           |                    |           |	                    d           |
                                sJ |                    d           |
                                rJ t          dd          }t          dd          }t          j        g dg dg          }t          j        ||gdd|dd          }|                    d	
          }|                    |           d S )NrO  r   )r  r  r"  )r[  r1  r[  r  )r1  r[  r[  r1  rn   )r  r3   r4   r  r  F)r  rz  ry  r   r  )r   r   r    r   Patch3DCollectionrE   add_collection3dr  r  r  r  r  )r<   r=   patch1patch2r  r   r,  r+  s           r-   "test_patch_collection_modificationr[    s    FD!!FJ%%F,,,.@.@.@ABBJ 0Q???A""d"33GQOODOOJKKU!!!!!FD!!FJ%%F,,,.@.@.@ABBJ 0Q*.*&)e	= 	= 	=A   D 11F
Ar/   c                  v   g dg dg dg dg} t          j        t          d          5  t          j        |            d d d            n# 1 swxY w Y   t          j        | t                    } t          j        t          d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r   r   r   r   zlist of \(N, 3\) array-likerN  r  )rP  rQ  r0  r   Poly3DCollectionr   r    r  )polys    r-   &test_poly3dcollection_verts_validationrb    s=   IIyyy)))YYY7D	z)G	H	H	H % %t$$$% % % % % % % % % % % % % % % 8D&&&D	z)G	H	H	H % %t$$$% % % % % % % % % % % % % % % % % %s#   AAAB..B25B2zpoly3dcollection_closed.pngc                     t          j                    } |                     d          }t          j        g dg dg dgt
                    }t          j        g dg dg dgt
                    }t          j        |gdd	d
d          }t          j        |gdd	dd          }|                    |d           |                    |d           d S )Nr3   r4   r]  r^  r   rr   r  rn   r  )r1  r1  r   r1  Tr  rz  ry  closed)r   r1  r1  r1  Fautolim)	rC   rD   rE   r   r    r  r   r`  rX  rH   r'   poly1poly2c1c2s         r-   test_poly3dcollection_closedrm    s    
*,,C	D	)	)BHiiiIII6>>EHiiiIII6>>E		A*<T
K 
K 
KB		A*<U
L 
L 
LBE***E*****r/   c                     t          g           } t          j        |            t          | t          j                  sJ |                                 g k    sJ t          j        t          d                    \  }}|	                    |            | 
                                }t          j        |          sJ |j                                         d S )Nr3   r4   r6   )r   r   poly_collection_2d_to_3d
isinstancer`  	get_pathsrC   r8   r9   
add_artistdo_3d_projectionr   isnanr   r   )ra  rH   r'   minzs       r-   #test_poly_collection_2d_to_3d_emptyrv    s    "D	"4(((dE233333>>r!!!!ldd&;&;&;<<<GCMM$  ""D8D>> JOOr/   zpoly3dcollection_alpha.pngc                  L   t          j                    } |                     d          }t          j        g dg dg dgt
                    }t          j        g dg dg dgt
                    }t          j        |gdd	d
d          }|                    d           t          j        |gdd          }|	                    d           |
                    d	           |                    d           |                    |d           |                    |d           d S )Nr3   r4   r]  r^  r   rr   r  rn   r  r1  r1  r   Trd  r1  F)r  re  )r   r1  r1  rf  )rC   rD   rE   r   r    r  r   r`  r  r  r  rX  rh  s         r-   test_poly3dcollection_alphary    s,   
*,,C	D	)	)BHiiiIII6>>EHiiiIII6>>E		A*7
F 
F 
FBLL		Ae	D	D	DB]###SLLE***E*****r/   zadd_collection3d_zs_array.pngc                     t          j        dt           j        z  dt           j        z  d          } t          j        ddd          }|dz  dz   }|t          j        |           z  }|t          j        |           z  }t          j        |||g                              ddd          }t          j        |d d         |dd          gd	          }t          j	                    }|
                    d
          }t          j        ddt           j        z            }	t          |d d d d d df         d|	          }
|
                    t          j        | dt           j        z                       |                    |
|d d d d df                   }|J dt          j        d<   |                    dd           |                    dd           |                    dd           d S )Nr?  rt   r   r  r   r   ro   rn   r  r3   r4   r   twilightr   r  r   Tr   r`  rp   r   )r   r9  r@  rA  rB  column_stackr  concatenaterC   rD   rE   r  r   	set_arraymodrX  r   r  r  r  rD  r[   r)   rY   rZ   pointssegmentsrH   r'   r  lcrQ   s               r-   test_add_collection3d_zs_arrayr    s   KRU
AIs33E
B3A	1qA	BF5MMA	BF5MMA_aAY''//Aq99F~vcrc{F122J7a@@@H
*,,C	D	)	)B=AbeG$$D	AAArr*$	G	G	GBLLqw''(((rhqqq!!!Qw&788D(,CL$%KKAKKAKKAr/   zadd_collection3d_zs_scalar.pngc                     t          j        ddt           j        z  d          } d}|dz  dz   }|t          j        |           z  }|t          j        |           z  }t          j        ||g                              ddd          }t          j        |d d         |dd          gd          }t          j	                    }|
                    d          }t          j        ddt           j        z            }	t          |d	|	
          }
|
                    |            |                    |
|          }|J dt          j        d<   |                    dd           |                    dd           |                    dd           d S )Nr   r   r   r   ro   r  r3   r4   r{  r|  r}  Tr   r`  rp   r?  r   )r   r9  r@  rA  rB  r~  r  r  rC   rD   rE   r  r   r  rX  r   r  r  r  r  s               r-   test_add_collection3d_zs_scalarr  1  sm   K1ru9c**E	A	1qA	BF5MMA	BF5MMA_aV$$,,RA66F~vcrc{F122J7a@@@H
*,,C	D	)	)B=AbeG$$D	z	=	=	=BLLra((D(,CL$%KKAKKAKK1r/   c                     t          j                    } |                     d          }ddgddgddgg}t          j        |          }|                    |           t          j        |                                d	          sJ t          j        |	                                d
          sJ t          j        |
                                d          sJ d S )Nr3   r4   r   )r   rt   r   r   r   rn   )r   r   r   r   r   rt   )r   rt   rp   )gUUUUUUgUUUUUU @)gUUUUUUUUUUUU@)ggj@)rC   rD   rE   r   Line3DCollectionrX  r   allclose
get_xlim3d
get_ylim3d
get_zlim3d)rH   r'   linesr  s       r-   !test_line3dCollection_autoscalingr  L  s    
*,,C	D	)	)B###%E 
		&	&B;r}}(STTTTT;r}}(QRRRRR;r}}(QRRRRRRRr/   c                     t          j                    } |                     d          }t          j        g dg dg dg          }t          j        |g          }|                    |           t          j        |	                                d          sJ t          j        |
                                d          sJ t          j        |                                d          sJ d S )Nr3   r4   r   r  r  UUUUUUgUUUUUU?)gSUUUUUr  )rC   rD   rE   r   r    r   r`  rX  r  r  r  r  )rH   r'   ra  cols       r-   !test_poly3dCollection_autoscalingr  [  s    
*,,C	D	)	)B8YYY			999566D

 $
(
(C;r}}(STTTTT;r}}(STTTTT;r}}(PQQQQQQQr/   zaxes3d_labelpad.pngc                     t          j                    } |                     t          |                     }|j        j        t          j        d         k    sJ |                    dd           |j        j        dk    sJ |	                    d           |
                    dd           |j        j        dk    sJ |                                dk    sJ d|j        _        d|j        _        t          |j                                                  D ]5\  }}|                    |                                d	z   |d	z  z
             6d S )
Nzaxes.labelpadzX LABELr   )labelpadzY LABELzZ LABELr   r   rp   )rC   rD   add_axesr   rN   r  r%  r   r   r   r   rP   
get_zlabelrO   rx   get_major_ticksset_padget_pad)rH   r'   r~   ticks       r-   test_axes3d_labelpadr  f  s:    *,,C	fSkk	"	"B8_ =====MM)bM)))8""""MM)MM)bM)))8""""==??i''''BHBH RX557788 1 14T\\^^a'!a%/00001 1r/   zaxes3d_cla.pngc                      t          j                    } |                     dddd          }|                                 |                                 d S )Nr   r3   r4   )rC   rD   rE   r  clarG   s     r-   test_axes3d_clar  }  sI     *,,C	AqT	2	2BOOFFHHHHHr/   zaxes3d_rotated.pngc                      t          j                    } |                     dddd          }|                    ddd           d S )Nr   r3   r4   r   -   r   )rC   rD   rE   r   rG   s     r-   test_axes3d_rotatedr    sD     *,,C	AqT	2	2BLLRr/   c                     t          j        ddd          } t          j        ddd          }t          j        | |          \  }}t           j                            d          }t          j        d          }|                    dddd	
          }t          j	        t                    5  |                    |||           d d d            d S # 1 swxY w Y   d S )Nr1  r   r   )num)   r   r   r   r   r3   r4   )r   r9  r   r2  randnrC   rD   rE   rP  rQ  r0  rf  )rY   rZ   r  r  r[   rH   r'   s          r-   test_plotsurface_1d_raisesr    s   
C%%%A
C%%%A;q!DAq
	A
*W
%
%
%C	AqT	2	2B	z	"	" ! !
1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   -CCCc                  H   t          j        g d          } t          j        g d          }t          j        g d          }d}t          j        | |||          \  }}}t          j        ||||           }t          j        ddd          }t          j        ||          }	|	S )N)r0  ii  )r   r   r   r]  r   r   r   r   )r   r    r   
_view_axes_view_transformation_uvw_persp_transformationdot)
Erj  Vr   r=  r>  r?  viewMperspMMs
             r-   _test_proj_make_Mr    s    
$$$%%A
!!A
AD1a..GAq!+Aq!Q77E)#tQ77F
vuAHr/   c                  "   t                      } t          j                            |           }t          j        g d          dz  }t          j        g d          dz  }t          j        g d          dz  }t          j        ||||           \  }}}t          j        ||||          \  }}	}
t          j        	                    ||           t          j        	                    |	|           t          j        	                    |
|           d S )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9==D	000	1	1E	9B	000	1	1E	9B	000	1	1E	9B)"b"a88MCc(c3==MCcJ""3+++J""3+++J""3+++++r/   r   c                 v   d|ddg}dd|dg}ddd|g}t          j        ||||           \  }}}	t          ||          \  }
}}}|
|f|
|f|
|fg}t          j        |i |\  }}t          |          }|                    |           t          ||g d          D ]\  }}}|                    |||           ||fS )Nr   )rG  rY   rZ   r[   )r   r  r&   rC   r8   r   add_collectionro  )r  rn  argsr*  r   r   r   r  r  r  rG  r'   ayazr  rH   linecrY   rZ   rY  s                       r-   _test_proj_draw_axesr    s    
Q1B
Q1B
Q1B)"b"a88MCcSMMMAr2rWq"g2w'ElD+F++GC5!!EesC!5!5!566  1a
1a7Nr/   zproj3d_axes_cube.pngc                  r   t                      } d                                }t          j        g d          dz  }t          j        g d          dz  }t          j        g d          dz  }t	          j        ||||           \  }}}t          | d          \  }}	|	                    |||           |	                    ||d	           t          |||          D ]\  }
}}|	
                    |
||           d
t          j        d<   |	                    dd           |	                    dd           d S )N0 1 2 3 0 4 5 6 7 4r  r  r  r  i  rm  r   r)   Tr   皙ɿr  )r  splitr   r    r   r  r  ru  rC  r&   ro  rC   r   r  r  )r  tsr   r   r   r  r  r  rH   r'   rY   rZ   rY  s                r-   test_proj_axes_cuber    sF   A		$	$	&	&B	000	1	1E	9B	000	1	1E	9B	000	1	1E	9B)"b"a88MCc"1,,,GCJJsC3JGGCGsC$$  1a
1a(,CL$%KKcKKcr/   zproj3d_axes_cube_ortho.pngc                     t          j        g d          } t          j        g d          }t          j        g d          }d}t          j        | |||          \  }}}t          j        ||||           }t          j        dd          }t          j        ||          }	d                                }
t          j        g d          d	z  }t          j        g d
          d	z  }t          j        g d          d	z  }t          j        ||||	          \  }}}t          |	d          \  }}|
                    ||d|z
             |                    ||d           t          |||
          D ]\  }}}|                    |||           dt          j        d<   |                    dd           |                    dd           d S )N)   r   r   r   r]  r   ro   r   r  r  r   r  r     rm  r   r)   r  Tr   i8r  )r   r    r   r  r  _ortho_transformationr  r  r  r  ru  rC  r&   ro  rC   r   r  r  )r  rj  r  r   r=  r>  r?  r  orthoMr  r  r   r   r   r  r  r  rH   r'   rY   rZ   rY  s                         r-   test_proj_axes_cube_orthor    s   
!!A
A
AD1a..GAq!+Aq!Q77E)"a00F
vuA		$	$	&	&B	000	1	1C	7B	000	1	1C	7B	000	1	1C	7B)"b"a88MCc"1,,,GCJJsC3s7J###GGCGsC$$  1a
1a(,CL$%KKcKKcr/   c                      d\  } }d\  }}d\  }}t          j        | |||||          }t          j                            |g dg dg dg dg           d S )N)r   x   )r   r   )r  r  )r   r   r   r`  )r   g{Gzt?r   r1  )r   r   rJ  ro   r   r   r   r   )r   world_transformationr   r   assert_allclose)r   r   r   r   r   r   r  s          r-   
test_worldr    s    JD$JD$JD$#D$dD$GGAJq 0 0 0 2 2 2 / , ./ / / / /r/   c                  v   t          j        ddi          \  } }|                                dk    sJ d|_        |                    ddd           |                    dd	gdd	gdd	g           |                                d
k    sJ |                    d           |                    d           |                    ddgddgddg           |                                dk    sJ |                    d           |                    ddgddgddg           |                                dk    sJ d S )Nr5   r3   r6   linearr   r  r  rY   rZ   r[   r   )r   r   r  皙?r  g333333?FTr   )r   r   r  r  rF  333333@rY   r  )r   r   r  r  rF  r  )	rC   r8   
get_zscale_view_marginmarginsrC  
get_w_lims	autoscaleset_autoscalez_onrG   s     r-   test_autoscaler  	  sI   l|T&:;;;GC==??h&&&&BOJJbBJGGQFQFQF###==??88888LLGGQFQFQF###==??88888LLcLGGQFQFQF###==??8888888r/   rR   r  ri   )TFNc                 (   t          j                    }|                    d          }t          j        d          }t          j        ddd          }|                    ||           t          |d|  d          }t          |d|  d	          }t          |d
|  d	          }|
 |            n|}	 |d|           |	 |            k    sJ |j        	                                 t          j
                             |            d           d S )Nr3   r4   r   r  r  get_autoscale_onset_limget_)r8  r1  )ri   )rC   rD   rE   r   r   r9  ru  getattrr   r   r   assert_array_equal)
rR   ri   rH   r'   rY   rZ   get_autoscale_onset_limget_lim	post_autos
             r-   test_unautoscaler    s&    *,,C	D	)	)B
	#A
D#s##AJJq!r#<4#<#<#<==b****++Gb****++G&*l  """IGKd####((******JOOJ!!''))[99999r/   c                    d}t          | |f|          D ]\  }}|                    d          }t          |          dz   }t          j        d||          }t          j        |          }t          j        |          }	|                    |||	d           |                    ddd           |	                    d	d
d           d S )N)r   r  r3   r4   r   r   r  )r`  rp   xlimylimzlimrp   r   )
r&   rE   r$   r   r9  onesrK  rC  rc   r   )
r<   r=   xminsrH   r   r'   nr   r   r   s
             r-   test_cullingr  /  s    E(G,e44 	  	 	T___--IIM[D!$$WQZZXa[[
BC   
G'888
QQ	  	 r/   c                  z   t          j                    } |                     d          }t          j        t
                    5  |                    dd           d d d            n# 1 swxY w Y   t          j        t
                    5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr3   r4   perspr   focal_lengthr   r   )rC   rD   rE   rP  rQ  r0  r   rG   s     r-   test_axes3d_focal_length_checksr
  >  s+   
*,,C	D	)	)B	z	"	" 2 2
q1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	z	"	" 2 2
q1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s$   A''A+.A+B00B47B4zaxes3d_focal_length.pngc                      t          j        ddddi          \  } }|d                             dt          j                   |d                             dd	           d S )
Nr   r   r5   r3   r6   r   r  r  333333?)rC   r8   r   r   inf)rH   re   s     r-   test_axes3d_focal_lengthr  G  se     |AqlD-ABBBHCFrv666Ft44444r/   zaxes3d_ortho.pngc                      t          j                    } |                     d          }|                    d           d S )Nr3   r4   r   )rC   rD   rE   r   rG   s     r-   test_axes3d_orthor  O  s:    
*,,C	D	)	)BWr/   zaxes3d_isometric.pngc                  R   ddl m} m} t          j        t          ddd                    \  }}d} | t          j        t           ||||                              d	          D ]W\  }}t          ||z
            
                                |d
         |d         z
  k    r |j        t          ||          ddi X|                    t          j        t          j        dt          j        d	          z                      dd           |                    d           d S )Nr   )r   r"   r3   r   )rt   rt   rt   )r5   	proj_type
box_aspectr6   )ro   r   r   r   r   r  r  r  r   T)r   r   r"   rC   r8   r9   r   r    r!   r$   r#   r%   r&   r   degreesarctanr  rF   )r   r"   rH   r'   r)   rn  es          r-   test_axes3d_isometricr  V  s*   ////////ld' ' '   GC
 	ARXd771a+;+;&<&<==qAA ) )1q1u::>>qtad{**BIs1ayy(C(((LLbj2

?!;!;<<3QLOOOGGDMMMMMr/   c           
         |                      d          }t          j        ddd          }t          j        ddd          }t          j        ||          \  }}||z   }|                    |||dd ddd	           |                    d
d
gddgd
dgdddd           |                    |                                |                                |                                dz   d           |                    |                                |                                |                                dz   d|                                z  d|                                z  d|                                z  dz   dd           |                    |d         |d         |d         dz   dd           |	                    dd
ddd           |
                    ddd           |                     d          }|d
k    }||                             dd          }||                             dd          }||                             dd          }|                    |||dd ddd	           |                    d
d
gddgd
dgdddd           |                    |                                |                                |                                dz   d           |                    |                                |                                |                                dz   d|                                z  d|                                z  d|                                z  dz   dd           |                    |d         |d         |d         dz   dd           |
                    ddd           d S )Nr3   r4   r   r   r   r  r  T)ry  r  ra  rb  
axlim_clipr1        ?r  rn   rp   )r   rc  zorderr  )r  r   )arrow_length_ratior  r  )r   r  r  rt   test)r   r1  r   r   )r   rp   r  r   F)rE   r   r9  r   rf  rC  ru  r   r;  ro  rc   r  )	r<   r=   r'   rY   rZ   r  r  r  idxs	            r-   test_axlim_clipr   f  s    
				.	.B
Aq"A
Aq"A;q!DAq	AAOOAq!tbT  ; ; ; GGS#JAc
1  ? ? ?JJqwwyy!''))QWWYY]tJDDDIIaggiiAGGIIM		k1QWWYY;!''))a!"t  5 5 5 GGAaD!A$!qG>>>GGCaDG111FFvFF333 
				-	-B8C	#r1A	#r1A	#r1AOOAq!tbU  < < <GGS#JAc
1  @ @ @JJqwwyy!''))QWWYY]uJEEEIIaggiiAGGIIM		k1QWWYY;!''))a!"u  6 6 6 GGAaD!A$!qG???FFvFF33333r/   value)setterside))r  left)r  right)r	  bottom)r	  top)rg  r&  )rg  r'  c                     ||i}t          j                    }|                    d          }t          j        t
                    5   t          ||           di | d d d            d S # 1 swxY w Y   d S )Nr3   r4   r   )rC   rD   rE   rP  rQ  r0  r  )r"  r#  r!  limitrH   objs         r-   test_invalid_axes_limitsr+    s     5ME
*,,C
//T/
*
*C	z	"	" & &V%%u%%%& & & & & & & & & & & & & & & & & &s   A++A/2A/c                   ,   e Zd Z edgd          d             Z edgd          d             Z edgd          d             Z ed	gd          d
             Z edgd          d             Z edgddd          d             Z	d Z
dS )
TestVoxelszvoxels-simple.pngr?   r@   c                     t          j        ddi          \  }}t          j        d          \  }}}||k    ||k    z  }|                    |           d S )Nr5   r3   r6   )rp   rt   rn   )rC   r8   r   indicesvoxels)selfrH   r'   rY   rZ   r[   r0  s          r-   test_simplezTestVoxels.test_simple  s\    ,<*>???R*Y''1aq&Q!V$
		&r/   zvoxels-edge-style.pngc                 J   t          j        ddi          \  }}t          j        d          \  }}}|dz
  dz  |dz
  dz  z   |dz
  dz  z   dk     }|                    |dd	
          }|t          |                                                                       d           d S )Nr5   r3   r6   )rp   rp   rt   r   r  g](\@rn   r  )r  rz  r  )rC   r8   r   r/  r0  r  keysr  )r1  rH   r'   rY   rZ   r[   r0  r>  s           r-   test_edge_stylezTestVoxels.test_edge_style  s    ,<*>???R*Y''1aq51*Az)QsUQJ6&@IIfdI;; 	
#affhh--&&t,,,,,r/   zvoxels-named-colors.pngc                 L   t          j        ddi          \  }}t          j        d          \  }}}||k    ||k    z  }|||z  |z  dk      z  }t          j        ddt          j                  }d||d	k     |d	k     z  <   d
|||z   dk     <   |                    ||           dS )z5Test with colors set to a 3D object array of strings.r5   r3   r6   r   r   r   r   r  r  z0.25rp   cyanr   r  N)rC   r8   r   r/  r  object_r0  r1  rH   r'   rY   rZ   r[   r0  r   s           r-   test_named_colorszTestVoxels.test_named_colors  s     ,<*>???R*\**1aq&Q!V$AEAIM**t2:>>>$*A!a% !%A|
		&V	,,,,,r/   zvoxels-rgb-data.pngc                 
   t          j        ddi          \  }}t          j        d          \  }}}||k    ||k    z  }t          j        d          }|dz  |d<   |dz  |d<   |dz  |d	<   |                    ||
           dS )z5Test with colors set to a 4d float array of rgb data.r5   r3   r6   r7  )r   r   r   rn   r  .r   .r   .r   r  N)rC   r8   r   r/  rK  r0  r:  s           r-   test_rgb_datazTestVoxels.test_rgb_data  s     ,<*>???R*\**1aq&Q!V$/**QvQvQv
		&V	,,,,,r/   zvoxels-alpha.pngc                    t          j        ddi          \  }}t          j        d          \  }}}||k    }t          j        ||z
            dk     }||z  }t          j        d          }	g d|	|<   g d|	|<   |                    ||		          }
t          |
          t          u sJ |
	                                D ]3\  }}||         s
J d
            t          |t          j                  sJ 4d S )Nr5   r3   r6   r7  r   )r   r   r   rt   )r   r   r   r1  )r   r   r   r1  r  zfaces returned for absent voxel)rC   r8   r   r/  r$   rK  r0  typer9   itemsrp  r   r`  )r1  rH   r'   rY   rZ   r[   v1v2r0  r   r>  coordra  s                r-   
test_alphazTestVoxels.test_alpha  s   ,<*>???R*\**1a!VVAE]]Qb/**#^^r
#^^r
IIfI00Aww$7799 	< 	<KE4%=CC"CCCCdE$:;;;;;;	< 	<r/   zvoxels-xyz.png{Gz?F)r   r   r   c                    t          j        ddi          \  }}d }t          j        d          dz  \  }}} ||          } ||          } ||          }	|dz
  dz  |dz
  dz  z   |	dz
  dz  z   d	k     }
t          j        |
j        d
z             }||d<   ||d<   |	|d<   |                    ||||
|t          j        d|z  dz
  dd          d           d S )Nr5   r3   r6   c                     d}t          | j                  D ]W}| |t          j        d d         z            | |t          j        dd          z            z   dz  } |t          j        d d          z  }X| S )Nr   ro   r   r]  )r   ndimr   	index_exp)rY   slr~   s      r-   	midpointsz&TestVoxels.test_xyz.<locals>.midpoints  sx    B16]] & &rBL"--.rBL,,-.145bl111o%Hr/   )   rO  rO  g      0@r1  r   r  )rn   r=  r>  r?  r   r   )r  r  rc  )rC   r8   r   r/  rK  r  r0  r  )r1  rH   r'   rN  r)   r   r   rcgcbcspherer   s               r-   test_xyzzTestVoxels.test_xyz  s     ,<*>???R	 	 	 *\**T11aYq\\Yq\\Yq\\ s(Q"s(Q."s(Q>G &,-..vvv 			!Q6#WQvX^Q:: 	 	! 	! 	! 	! 	!r/   c                 <   t          j        d          \  }}}t          j        d          }t          j        ddi          \  }}t                      t          d          fD ]B} |j        |fi |  |j        dd|i|  |j        ||||fi |  |j        |||fd|i| Ct          j        t          d	
          5  |                    |||||           d d d            n# 1 swxY w Y   t          j        t          d	
          5  |                    ||           d d d            n# 1 swxY w Y   t          j        t          d
          5 }|                    ||||           d d d            n# 1 swxY w Y   |j        j        dk    sJ d S )Nrs   )r   rn   rt   r5   r3   r6   r  )rz  filledr0  rN  )rV  zkeyword argument 'x')rV  rY   rZ   r[   rY   r   )r   r/  r  rC   r8   r9   r0  rP  rQ  	TypeErrorAttributeErrorr!  name)	r1  rY   rZ   r[   rV  rH   r'   kw	exec_infos	            r-   test_calling_conventionsz#TestVoxels.test_calling_conventions   s   *Y''1a##,<*>???R 664#.../ 	4 	4BBIf#####BI**V*r***BIaAv,,,,,BIaA33f33333 ]9H555 	6 	6IIaAvfI555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 ]9H555 	 	IIaOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]>1GHHH 	4IIIVqAI333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4#s******s6   C**C.1C.D33D7:D7E??FFN)__name__
__module____qualname__mpl3d_image_comparisonr2  r5  r;  r@  rG  rT  r\  r   r/   r-   r-  r-    sY       01AAA  BA 45WEEE- - FE- 67wGGG
- 
- HG
- 237CCC
- 
- DC
- /0@@@< < A@<" -. $%wH H H! !H H!@+ + + + +r/   r-  c                  p   ddgddgddg}}} ddgd	d
gddg}}}t          j                    }|                    d          }|                    | ||          }|d         }	t          j                            | ||f|	                                           |	                    |||           t          j                            |||f|	                                           |		                    |            |	
                    |           |	                    |d           t          j                            | ||f|	                                           |	                    dd           t          j                            | |t	          j        |          f|	                                           d S )Nr   r   r   rn   rt   rp   r   r   r  r  r   r   r3   r4   r[   r  )rC   rD   rE   rC  r   r   r  get_data_3drT  	set_xdata	set_ydataset_3d_propertiesr   )
rY   rZ   r[   r  r  r  rH   r'   r  rQ   s
             r-   test_line3d_set_get_data_3drf    s   !fq!fq!f!qAQ!Q"bBB
*,,C	D	)	)BGGAq!E8DJ!!1a)T-=-=-?-?@@@RR   J!!2r2,0@0@0B0BCCCNN1NN1ac***J!!1a)T-=-=-?-?@@@ac***J!!1aq)9)9":D<L<L<N<NOOOOOr/   c                 "   |                      d          }|                    g dg dg d           |                                 |                     d          }|                                 |                    g dg dg d           d S )Nr3   r4   )r   r   r   r   )r   r   r   r   )r   r   r   r   )rE   rC  invert_yaxisr;   s      r-   test_invertedri  ,  s     
				.	.BGGNNNOOO]]];;;OO					-	-BOOGGNNNOOO]]];;;;;r/   c                  r   t          j        ddi          \  } }|                                rJ |                                rJ |                                rJ |                    dd           |                    dd           |                    dd           |                                sJ |                                sJ |                                sJ |                                 |                                rJ |                                rJ |                                rJ d S )Nr5   r3   r6   r   r   )	rC   r8   xaxis_invertedyaxis_invertedzaxis_invertedr  r  r  r  rG   s     r-   test_inverted_clarn  8  sF    l|T&:;;;GC  """""  """""  """""KK1KK1KK1FFHHH  """""  """""  """""""r/   c                     t          j                    } t          |           }|                    dd           |                    dd           |                    dd           | j                                         |j                                        D ]}|j        j	        dk    sJ |j
                                        D ]}|j        j	        dk    sJ |j                                        D ]}|j        j	        dk    sJ d S )NrY   r   )rR   r   rZ   r[   )rC   rD   r   tick_paramsr   r   rN   r  	tick1line_colorrO   rP   )rH   r'   r  s      r-   test_ax3d_tickcolourrs  L  s   
*,,C	BNNEN***NNEN***NNEN***JOO((** . .~$-----((** . .~$-----((** . .~$-----. .r/   c                    |                      ddddi          }|j        D ]}|                    dd           t          |g d          D ]\  }}|d	                             |d
           |d                             |d           |d                             |t
          j        d                     |d                             |t
          j        d                     |d                             |t
          j        d                     d }|                     ddddi          }|j        D ]}|                    dd           t          |dgdgdgg dg          D ]\  }} ||d	         |          D ]}|                    d            ||d         |          D ]}|                    d            ||d         |          D ](}|	                    t
          j        d                     ) ||d         |          D ](}|
                    t
          j        d                     ) ||d         |          D ](}|                    t
          j        d                     )d S )Nrt   rp   r5   r3   r6   g    cAg   @cA)rY   rZ   r[   rW   r   plain)rR   r   r   )r  r   )rR   	scilimitsr   zaxes.formatter.useoffset)rR   	useOffsetrn   zaxes.formatter.use_locale)rR   	useLocalezaxes.formatter.use_mathtext)rR   useMathTextc                        fd|D             S )Nc                 T    g | ]$}t          |                                          %S r   )r  get_major_formatter)r   rY  r'   s     r-   r   zAtest_ticklabel_format.<locals>.get_formatters.<locals>.<listcomp>p  s/    JJJDD!!5577JJJr/   r   )r'   namess   ` r-   get_formattersz-test_ticklabel_format.<locals>.get_formatterso  s    JJJJEJJJJr/   rN   rO   rP   )rN   rO   rP   F)r8   r   r  r&   ticklabel_formatr%  r   set_scientificset_powerlimitsset_useOffsetset_useLocaleset_useMathText)	r<   r=   re   r'   rowrY  r~  r}  fmts	            r-   test_ticklabel_formatr  ]  sI   


AqlD-A

B
BCh # #
C""""55566 I I	TAW 	  	& 	& 	&A 	  	* 	* 	*AS\2L%M!M 	  	O 	O 	OAS\2M%N!N 	  	P 	P 	PAL)FGG 	  	I 	I 	I 	IK K K 

1a\4,@

A
ACh # #
C""""7)gY	3N3N3NO  A A
U ">#a&%00 	& 	&Cu%%%%!>#a&%00 	) 	)C((((!>#a&%00 	L 	LC#,/I"JJKKKK!>#a&%00 	M 	MC#,/J"KKLLLL!>#a&%00 	A 	ACL!>??A A A A	AA Ar/   c                 |   d}t          j        t          j        ddd          t          j        ddd          t          j        ddd                    \  }}}t          j        |          x}x}}t	          || fd          D ]8\  }	}
|	                    d          }|                    |||||||
|	           9d S )
Nr6  gr   r  r   )r   r  r3   r4   )r   r9  )r   r   r   	ones_liker&   rE   r;  )r<   r=   r9  rY   rZ   r[   r=  r>  r?  rH   r   r'   s               r-   test_quiver3D_smoker    s    Ek
	$3
	$3
	$3 GAq!
 QAAGX.99 @ @V___--
		!Q1a6	????@ @r/   zminor_ticks.pngc                  t   t          j                                        d          } |                     dgd           |                     dgd           |                     dgd           |                     dgd           |                     d	gd           |                     d
gd           d S )Nr3   r4   r  T)minorquartergQ?thirdr1  half)	rC   rD   rE   rK   set_xticklabelsrL   set_yticklabelsrM   set_zticklabels)r'   s    r-   test_minor_ticksr    s    		!	!T	!	2	2BMM4&M%%%	{$///MM4&M%%%y---MM4&M%%%xt,,,,,r/   zerrorbar3d_errorevery.pngc            	         t          j        ddt           j        z  dz   d          } t          j        |           t          j        d| z            t          j        d| z            }}}t          j                    }|                    d          }d	}t          j        | j                  }||z  dk    ||z  dz  dk    z  }||z  dk    ||z  dz  dk    z  }	|	                    |||d
||	|           dS )z0Tests errorevery functionality for 3D errorbars.r   r   r  rH  rn   rp   r3   r4      r  )zuplimszlolims
erroreveryN)
r   r   r@  rA  rB  rC   rD   rE   r  errorbar)
rY  rY   rZ   r[   rH   r'   estepr~   r  r  s
             r-   test_errorbar3d_erroreveryr    s     		!QruWRZ&&AfQii!bfQqSkk!qA
*,,C	D	)	)BE
	!&A5yA~!u*q.A"56G5yA~!u*q.A"56GKK1agw   " " " " "r/   zerrorbar3d.pngr   c                      t          j                    } |                     d          }g d}g d}|                    ||||||dg dg ddd	d
           |                                 dS )z9Tests limits, color styling, and legend for 3D errorbars.r3   r4   )r   r   rn   rt   rp   )r1  r1  r1  r1  r1  rn   )FTFTT)TFFTFTpurplezError lines)rY   rZ   r[   xerryerrzerrcapsizer  r  yuplimsecolorr   N)rC   rD   rE   r  legend)rH   r'   dr  s       r-   test_errorbar3dr    s     *,,C	D	)	)BAAKK!qAAAAq888999}	  6 6 6
 IIKKKKKr/   z
stem3d.pnggMb?c            
         dt           j        d<   t          j        ddddddi          \  } }t          j        d	dt          j        z            }t          j        |t          j        dz  z
            }t          j        |t          j        dz  z
            }|}t          |d	         g d
          D ]6\  }}|	                    ||||           |
                    d|            7t          j        t          j         dz  t          j        dz  d          }t          j        |          }t          j        |          }t          |d         g d
          D ]i\  }}|	                    |||ddd|          \  }}	}
|
                    d|            |                    dd           |
                    d           jd S )NTr   r   rn   )r  r   r5   r3   r   constrained_layoutr7   r   r  )orientationzorientation=r   r   zC4-.C1Dr  )linefmt	markerfmtbasefmtr  rX   )r_  markeredgewidth)rC   r   r8   r   r9  r@  rB  rA  r&   stemry   r  rc   set_linewidth)rH   re   rD  rY   rZ   r[   r'   r   
markerline	stemlinesbaselines              r-   test_stem3dr    s   (,CL$%|Aq&/3(4d';= = =HC K1RU7##E
uruQwA
uruQwAAA00 , ,D
1aT***
*D**++++
RUF1HbeAgr**A
QA
q		AA00 " "D*,''q!eT +2 + +'
Ix 	*D**+++vqAAAq!!!!" "r/   zequal_box_aspect.pngc                     ddl m} m} t          j                    }|                    d          }t          j        ddt          j        z  d          }t          j        dt          j        d          }t          j	        t          j
        |          t          j        |                    }t          j	        t          j        |          t          j        |                    }t          j	        t          j        |          t          j
        |                    }|                    |||           ddg}	 |t          j        t           | |	|	|	                              d          D ]\\  }
}t          j        t          j        |
|z
                      |	d         |	d         z
  k    r |j        t'          |
|          d	d
i ]t          j        |                                |                                |                                g          }t1          |d                   t3          |d                   g}|                    |           |                    |           |                    |           |                    d           |                    d           t?          j         tB          d          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr   )r"   r   r3   r4   r   r   ro   r   r   r   offrr   zArgument zoom =rN  )zoom)"r   r"   r   rC   rD   rE   r   r9  r@  outerrB  rA  r  rf  r    r!   r#   r$   r%   r&   r~  r  r  r  r  r  r  r	  rg  rR   rz   rP  rQ  r0  )r"   r   rH   r'   r=  r>  rY   rZ   r[   r)   rn  r  xyzlimXYZlims                 r-   test_equal_box_aspectr    s   ////////
*,,C	D	)	)B 	Aq25y#&&A
Aruc""A
BF1II&&A
BF1II&&A
a"&)),,A OOAq! 
QARXd771a+;+;&<&<==qAA - -16"&Q--  AaD1Q4K//BIs1ayy,,,, _	"--//2==??; F &)nnc&)nn-FMM&MM&MM&GGENNNi   	z):	;	;	; . .
)"---. . . . . . . . . . . . . . . . . .s   	K..K25K2c                     d} t          j        d| ddddi          \  }}|D ]p}|                    t          j                            d          t          j                            d          t          j                            d                    }qt          j        ||d	
          }|j                                         |j	        
                                j        d         dk     sJ d S )Nr   r   )rt   rp   Tr5   r3   r  rp   
horizontal)r'   r  r  )rC   r8   r  r   r2  r  r  r   r   r'   get_positionextents)	num_plotsrH   re   r'   p_tricbars         r-   test_colorbar_posr    s    I|Ay&/3(4d';= = =HC  4 4	 2 2BIOOA4F4F "	 2 24 4 <#<@@@DJOO7!!)!,s222222r/   c                     t          j                    } |                     d          }|                    dd           |                                rJ |                                dk    sJ |                                dk    sJ |                    d           |                                rJ |                                dk    sJ |                                dk    sJ |                                 |                                sJ |                                dk    sJ |                                dk    sJ |                    d           |                                sJ |                                d	k    sJ |                                dk    sJ |                    d
           |                                sJ |                                dk    sJ |                                dk    sJ d S )Nr3   r4   r   r   r  )r   r   )r   r   )rU   )r   r   r   )rV   )r   r   r   r   )	rC   rD   rE   r  rm  get_zlim
get_zbound
set_zboundinvert_zaxisrG   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$$$$$$r/   c                     t          j                    } |                     d          }t          j        |                                d          sJ |                    d           t          j        |                                d          sJ |                    d           |                                d	k    sJ t          j        t          d
          5  |                    dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr3   r4   r  r   )r   )r  r   r   )r   r  z"Cannot pass both 'lower' and 'min'rN  r   )r&  r   z"Cannot pass both 'upper' and 'max')r'  r   )
rC   rD   rE   r   r  r  r  rP  rQ  rW  rG   s     r-   test_set_zlimr  9  s   
*,,C	D	)	)B;r{{}}n55555KKQK;r{{}}j11111KKQK;;==F""""	A
C 
C 
C & &
11%%%& & & & & & & & & & & & & & & 
A
C 
C 
C # #
"""# # # # # # # # # # # # # # # # # #s$   DDD'EEEc                 b   d\  }}}|                      dd          }|                      dd|          }|                      dd          }|                    |           |                    |||d	           d
D ]1}|                     |d          }	|	                    |||           2d S )N)rp   r   r      r3   r4      )r5   	shareview   T)r   r   r   share)r  r  r  r   )rE   r  r   )
r<   r=   r   r   r   rJ  rK  ax3subplot_numr'   s
             r-   test_shared_viewr  J  s     D$


st

4
4C


sts

C
CC


st

4
4CMM#MMt$TM>>>& 6 6   >>
$T55556 6r/   c                     t          j                    } |                     dd          }|                     dd|          }|                    ddgddgddg           |                    ddgddgddg           |                    g d	           |                                d
k    sJ |                                d
k    sJ d S )N   r3   r4      )r5   sharezr   r   r   )r8  r   r         @)r8  r  )rC   rD   rE   rC  rM   r  )rH   rJ  rK  s      r-   test_shared_axes_retickr  X  s    
*,,C
//#$/
/
/C
//#$s/
;
;CHHaVaVaV$$$HHaVaVaV$$$NN$$$%%%<<>>[((((<<>>[((((((r/   c            
      *   t          dg d          } | j        dk    sJ | j        g dk    j        sJ |  j        dk    sJ |  j        g dk    j        sJ t          dg d          }|j        dk    sJ |j        g dk    j        sJ t          dg d          }|j        dk    sJ |j        g dk    j        sJ t          dg d          }|j        dk    sJ |j        g dk    j        sJ ||z  |  k    sJ ||z  |  k    sJ ||z  |  k    sJ | |z  |k    sJ | |z  |k    sJ | |z  |k    sJ ||z  |k    sJ ||z  |k    sJ ||z  |k    sJ ||z  | k    sJ ||z  | k    sJ ||z  | k    sJ t          dg d	          t          d
g d          z  t          dg d          k    sJ | |||fD ]}|                                j        |j        k    sJ |                                j        |j         k    j        sJ |                                                                |k    sJ ||                                z  j        dk    j        sJ t          dg d          }|j        dk    sJ | j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ || |||fD ])}|j        ||                                z  j        k    sJ *t          dg d          t          dg d          t          dg d          t          dg d          t          d
g d          fD ]!}|                                j        dk    sJ "| |||fD ]<}||                                z  | k    sJ |                                |z  | k    sJ =|                    g d          t          j
        g d          k    j        sJ g dg dt          t          j        d          ddt          j        d          g          fg dg dt          t          j        d          dt          j        d           dg          fg dg dt          dg d          ffD ]!\  }}}t          j        ||          |k    sJ "g dg dg dg dfD ]}t          j
        |          }t          j        t                    5  t          j        ||           }d d d            n# 1 swxY w Y   t          j        |j        d          sJ t          j        |j        |          dk    sJ dD ]\  }}	}
dD ]}t          j        t          j        |          t          j        |	          t          j        |
                    }t          j        |j        d          sJ t          ||j        z  ||j        z            }t          j                            t          j        t          j        |                    ||	|
fd           Ԍd S )Nr   r   ro   r   r   r   r   r_  r]  r   rs   r   )r   r  r  i)r  0   ,   )rn   r   r   )r   rt   r   )r   r   rp   r   r   rn   )r   r  r:  r1  rr   )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_torP  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  d  s?   	Ayyy	!	!B9>>>>I"''''C<2SLIII%****	Ayyy	!	!B9>>>>I"''''	Ayyy	!	!B9>>>>I"''''	Ayyy	!	!B9>>>>I"''''b5RC<<<<b5RC<<<<b5RC<<<<b5B;;;;b5B;;;;b5B;;;;b5B;;;;b5B;;;;b5B;;;;b5RC<<<<b5RC<<<<b5RC<<<<q)))$$z!YYY'?'??#|||,,- - - - "b" 3 3{{}}#qx////$	16666{{}}&&((A----1;;==(A-22222	Ayyy	!	!B7a<<<<7a<<<<7a<<<<7a<<<<7a<<<<"b"b! 2 2v!AKKMM/111111 	1iii  1iii  1iii  1iii  1iii   ' ' {{}}!Q&&&&&"b" & &2%%%%||~~a2%%%%%IIiii  BH[[[$9$99>>>> 
IIIz"'#,,Arws||8LMMN	IIIz"'#,,RWS\\M18MNNO	IIIz!YYY778 6 6	B
 (R00A55555yy)))YYY			: ) )Xb\\\+&& 	3 	3)"rc22A	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3z!&!$$$$$vah##q(((((, 
F 
FdD  	F 	FC-
4  "*T"2"2BJt4D4DF FA:afa(((((3>3>::AJ&&rz*2Ma2P2P'Q'Q(,dD'9 ' F F F F	F	
F 
Fs   	S,,S0	3S0	r   )azel	trackballrS  arcballc                    | dk    rd}nt           j        d         dz  }|dz  }dt           j        d<   t          j        d| i          5  g dg d	g d
g dddt          j        d          dz  gddt          j        d          dz  gg dfD ]\  }}}t          j                    }|                    dddd          }|                    dd|           |j        j	        
                                 |                    t          |t          j        dd                     |                    t          |t          j        ||z  |j        z  ||z  |j        z                       |j        j	        
                                 t          j        d          dz  }i ddddddd|fdddddddddd|fddd d!d"d#dd|fd$d%dd&t          j        z  dfd'd(d)d*d#dd|fd+d,d-d.d/d0dd|fd1d2dd3d4d5d6d0dd|fd7d8d9d:d;d<dd|fd=d>d?d@dAdBdCd<dd|fdDi}|| |||f         \  }	}
}t          j                            |j        |j        |j        f|	|
|fdEF           	 dGdGdG           dGS # 1 swxY w Y   dGS )Hz*Test rotating using the left mouse button.r  r1  zaxes3d.trackballsizer   r   zaxes3d.trackballborderzaxes3d.mouserotationstyler_  )r   r   r   r]  )r   r   r   rn   r   )r   r   r   r   r3   r4   buttonxdataydata)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@@)rS  r   r   r   )r   r   r   )rS  r   r   r   )r   r   r   rS  )`#I9v$$0g! _B@)rS  r   r   r   )rS  r   r   r   )g&s|,@u.:gu.:@)rS  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  rC   rD   rE   r   r   r   _button_pressr   r   LEFT_on_move	_pseudo_w	_pseudo_hr@  r   r  r   r   r   )r   rn  r   r   r   rH   r'   r   expectationsnew_elevnew_azimnew_rolls               r-   test_rotater    s'    L/014HA-.CL)*	4e<	=	= 9R 9R		

		

CA&S"'!**Q,'		 8	R 8	RLD"b *,,CAqT::BLLAt$$$I!!### 2k&6aqIIIK K KKK2k&6!"2bl!2!B$r|:KM M MN N N I!!###

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 NL@ ,8b"8M+N(HhJ&&"''B(0(H'ED ' R R R Ro8	R9R 9R 9R 9R 9R 9R 9R 9R 9R 9R 9R 9R 9R 9R 9R 9R 9R 9Rs   	HI44I8;I8c                     d } t          j                    }|                    d          }|                    ddd           |j                                          | |                                 \  }} | |                                 \  }} | |                                 \  }}|	                    t          |t          j        dd                     |                    t          |t          j        dd                      | |                                 \  }	}
 | |                                 \  }} | |                                 \  }}|
t          j        |          k    sJ |t          j        |          k    sJ |t          j        |          k    sJ |	t          j        |          k    sJ |t          j        |          k    sJ |t          j        |          k    sJ dS )z1Test mouse panning using the middle mouse button.c                 $    | |z   dz  }|| z
  }||fS )z+Convert min/max limits to center and range.r   r   )dmindmaxcenterrange_s       r-   convert_limztest_pan.<locals>.convert_lim  s#    +"v~r/   r3   r4   r   r  r   N)rC   rD   rE   ru  r   r   r  r  r  r  r   r   MIDDLEr  rP  approx)r$  rH   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_panr3    s      *,,C	D	)	)BJJq!QJOO%+r}}7Ix%+r}}7Ix%+r}}7Ix 2k0CCCE E EKK2k0CCCE E E $R]]__5Hg#R]]__5Hg#R]]__5Hg fmH------fmH------fmH------ v}Y//////v}Y//////v}Y////////r/   ztool,button,key,expectedr  ))r[  Q?)rH  gQ?)r.  {Gz?rY   ))g{Gzr  )gQr5  gQr4  rZ   ))Q뱿r   )g{Gzr5  )r[  gQ?))g
ףp=
r  )g{Gzg(\?)r7  g
ףp=
?pan))gffffff(\)gp=
ףgQgRQgffffff))g
ףp=
gzG)r9  gq=
ףpݿr6  ))r  g{Gz?)gRQg(\ؿr:  c                    t          j                    }|                    d          }|                    ddd           |j                                         |                                |                                |                                }}}d}	d}
|j	        
                    |	                              t                    }|j	        
                    |
                              t                    }t          d|j        g||R d|i}t          d|j        g||R d|i}t          |j                  }| d	k    rT|                                 |                    |           |                    |           |                    |           nS|                                 |                    |           |                    |           |                    |           |\  }}}|                                t/          j        |d
          k    sJ |                                t/          j        |d
          k    sJ |                                t/          j        |d
          k    sJ |                                 |                                t/          j        |          k    sJ |                                t/          j        |          k    sJ |                                t/          j        |          k    sJ |                                 |                                t/          j        |d
          k    sJ |                                t/          j        |d
          k    sJ |                                t/          j        |d
          k    sJ |                                 |                                t/          j        |          k    sJ |                                t/          j        |          k    sJ |                                t/          j        |          k    sJ d S )Nr3   r4   r   rO  r   r   button_press_eventkeybutton_release_eventr  rH  )r$   )rC   rD   rE   ru  r   r   r  r  r  	transDatar  astypeintr	   r
   r  
press_zoom	drag_zoomrelease_zoomr8  	press_pandrag_panrelease_panrP  r&  backforwardhome)toolr  r>  expectedrH   r'   xlim0ylim0zlim0d0d1s0s1start_event
stop_eventtbr  r   r  s                      r-   test_toolbar_zoom_panrX  /  s   ( *,,C	D	)	)BJJq!QJOO--//2==??BMMOO%5E 
B	B 
			#	#	*	*3	/	/B				#	#	*	*3	/	/B cj@+-@/5@ @ @;>@ @K
B-/B17B B B=@B BJ 
CJ	'	'Bv~~
			
k"""
Z   

####

[!!!
J
z"""  D$==??fmDd;;;;;;;==??fmDd;;;;;;;==??fmDd;;;;;;; GGIII==??fmE222222==??fmE222222==??fmE222222JJLLL==??fmDd;;;;;;;==??fmDd;;;;;;;==??fmDd;;;;;;;GGIII==??fmE222222==??fmE222222==??fmE22222222r/   c                    t          j        t          t          j        t          j        ddd          t          j        ddd          t          j        ddd          g                     j        \  }}}||z   }|                     dd          }|                    ||||dd	          }| j	        
                                 |                                 |                    dd          }|                    ||||dd	          }	d S )
Nr   rp   r   o   r3   r4   r   r  )r   rn  r   )r   r    r!   r   r"   r   TrE   ru  r   r   changed)
r<   r=   rY   rZ   r[   r   r,  sc_testr+  sc_refs
             r-   test_scalarmap_updater_  {  s    htI-	!Q0B0B02	!Q0B0B02	!Q0B0B0D E F F G GGH Aq! 	
AA ""34"88GooaAbyoAAGOOO    66F^^Aq!qBY^??FFFr/   c                      t          j                    } |                     dd          }|d                             dddd          }|d                             ddddd          }d S )Nr   r   r   r3   r4   other)r5   r   )rC   rD   
subfiguresrE   )rH   sfr'   s      r-   test_subfigure_simplerd    sf    
*,,C	1		B	A		1at		4	4B	A		1at7		C	CBBBr/   computed_zorder)baseline_imagesr   r1   r   c            
         dt           j        d<   t          j                    } |                     dd          }|                     dd          }d|_        d}||fD ]}t          j        |gd	d
d          }|                    |           |                    ddddd           |	                    ddddd           |
                    d           |                    d           |                    d           |                     dd          }|                     dd          }d|_        d}t          j        | |f| |f          \  }	}
t          j        d          }d}t          j        | |fd|f          \  }}||z  }t          j        | |f| df          \  }}||z  }d}d}t          j        ddt          j        z  |          }|t          j        |          z  |t          j        |          z  ||z  t          j        |          z  }}}||fD ]P}|                    |||dddd           |                    ||dk              ||dk              ||dk              d d!d"d#           |                    |	|
|dddd           |                    |t          j        |          z  |t          j        |          z  t          j        |          d d!d
d#           |                    |||dddd$           |                    ||dk             ||dk             ||dk             d d!d"d%#           |                    d&d'd(           |                    d)           Rd S )*NTr      r3   r4      F)r   )r   rp   r   )rp   rp   r   )rp   r   r   whiteblackr   )r  r  r  )r   r   )r   rt   r   r   )r   r  )rn   rn   )r   rn   r   )r   r\  )r   r        r1  r   r   r0  r   ro   )r   r   rc  r  rp   z--r   )r  	linestyler   r  rn   rt   r   r  r   r  )rC   r   rD   rE   re  r   r`  rX  rC  ru  r  r  r  r   r   rK  r9  r@  rB  rA  rf  r   rR   )rH   rJ  rK  cornersr'   trir  ax4dimr  r  r  angleX2Y2Z2X3Y3Z3r)   r  thrY   rZ   r[   s                            r-   test_computed_zorderr{    s    )-CL$%
*,,C
//#$/
/
/C
//#$/
/
/CC ;GCj  $gY0707,-/ / / 	C    	%::: 	

666U2
>>>
H
H
H
//#$/
/
/C
//#$/
/
/CC
C;c{cT3K00DAq
AE[3$q#h//FB	eB[3$tQi00FB	eB	AA	QBE	1	%	%B"&**nq26"::~uqy26"::/E!qACj # #
B$!"#!	 	 	# 	# 	#
 	!a%!AE(Aa!eH	 	 	 	 	 	1a#!"# 	 	 	" 	" 	" 	BF2JJBF2JJ	 	 	 	 	 	B$!"# 	 	 	" 	" 	" 	!a%!AE(Aa!eH 	 	 	 	 	"3Q///
G# #r/   c                     t          j                    } |                     d          }t          j        d          }|                    |t          j        |                     d}d}| j                                         |	                    ||          dk    sJ |
                    dd           | j                                         |	                    ||          d	k    sJ |
                                 | j                                         |	                    ||          dk    sJ |                    d
           | j                                         |	                    ||          dk    sJ |                    dd           | j                                         |	                    ||          dk    sJ d S )Nr3   r4   r   r  z"x=10.5227, y pane=1.0417, z=0.1444r   rZ   )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)rC   rD   rE   r   r   rC  rA  r   r   format_coordr   r   )rH   r'   rY   xvyvs        r-   test_format_coordr    s   
*,,C	D	)	)B
	"AGGArvayy	B	BJOO??2r""&JJJJJ LLbL,,,JOO??2r""&IIIII LLNNNJOO??2r""&JJJJJ WJOO??2r""&JJJJJ W3///JOO??2r""&IIIIIIIr/   c                  6   t          j                    } |                     d          }t          j        d          }|                    |t          j        |                     | j                                         |	                                dk    sJ d S )Nr3   r4   r   )FTF)
rC   rD   rE   r   r   rC  rA  r   r   get_axis_position)rH   r'   rY   s      r-   test_get_axis_positionr  	  s    
*,,C	D	)	)B
	"AGGArvayyJOO!!%9999999r/   c                  8   t          j                    } |                     d          }|                    d           |                                dk    sJ |                    ddd           |                                dk    sJ |                    d	           |                                d
k    sJ |                    d           |                                dk    sJ |                    d           |                                dk    sJ d S )Nr3   r4   r  )r  r  r  r  r  )r  r  r  r   )rY   )r   r  r  )rZ   )r   r  r  r[   )r   r  r   )rC   rD   rE   r  rG   s     r-   test_marginsr  	  s    
*,,C	D	)	)BJJsOOO::<<?****JJsC::<<?****JJJOOO::<<=((((JJJ::<<=((((JJJOOO::<<;&&&&&&r/   c                  "   t          j                    } |                     d          }|                    ddd           |                                dk    sJ |                                dk    sJ |                                dk    sJ d S )Nr3   r4   r  r  r  )rC   rD   rE   r  get_xmarginget_ymarginget_zmarginrG   s     r-   test_margin_gettersr  %	  s    
*,,C	D	)	)BJJsC>>s"""">>s"""">>s""""""r/   zerr, args, kwargs, match)ro   z!margin must be greater than -0\.5)r   ro   r   )r   r   ro   ro   r[   )r   z'Cannot pass both positional and keyword)rY   rZ   r<  z*Must pass a single positional argument forc                     t          j        | |          5  t          j                    }|                    d          } |j        |i | d d d            d S # 1 swxY w Y   d S )NrN  r3   r4   )rP  rQ  rC   rD   rE   r  )errr  r*  rO  rH   r'   s         r-   test_margins_errorsr  .	  s      
s%	(	(	( $ $jll___--
D#F###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   7AA"Ac                    |                     d          }t          ddd          }t          j        |d           |                    |           |                                dk    sJ |                      d          }t          j        dddd          }|                    |           |                                dk    sJ d S )Nr3   r4   r1  zFoo bar $\int$r   r  rx  )rE   r   r   text_2d_to_3drr  get_position_3dText3D)r<   r=   r'   txtt3ds        r-   test_text_3dr  D	  s    					-	-B
sC*
+
+C	q!!!!MM#  M1111					.	.B
,sC$5
6
6CMM#  M111111r/   c                      t          j                    } |                     d          }|                    dgdggdgdggdgdgg           d S )Nr3   r4   r   r   )rC   rD   rE   rC  rG   s     r-   test_draw_single_lines_from_Nx1r  R	  sT    
*,,C	D	)	)BGGaS1#J!qc
aS1#J/////r/   c                 R   |                     d          }t          j                    }t          |          }t	          j        |dd           |                    |           |                      d          }t	          j        |dd          }|                    |           d S )Nr3   r4   )r   r1  r  r   r   rZ   r[   r   r  )rE   r   unit_rectangler   r   pathpatch_2d_to_3drr  PathPatch3D)r<   r=   r'   pathpatchpp3ds         r-   test_pathpatch_3dr  Y	  s    					-	-B  DdOOE	U&9DDDDMM%					.	.BT&9DDDDMM$r/   zscatter_spiral.png)rf  r   r   c                     dt           j        d<   t          j                    } |                     d          }t	          j        ddt          j        z  dz  d          }|                    t	          j        |          t	          j	        |          |d	|d
z  z   |dz            }| j
                                         d S )NTr   r3   r4   r   r   r      r   rp   r  )rC   r   rD   rE   r   r9  r@  ru  rA  rB  r   r   )rH   r'   rz  scs       r-   test_scatter_spiralr  f	  s     )-CL$%
*,,C	D	)	)B	QBE	As	+	+B	BF2JJr

B1rAv:"'	J	JB JOOr/   c                      t          j        ddi          \  } }t          dd          }|                    |           t	          j        |           |                                 d S )Nr5   r3   r6   rO  r  )rC   r8   r   rP  r   r  get_path)rH   r'   ps      r-   test_Poly3DCollection_get_pathr  t	  s_     l|T&:;;;GCvsALLOOO	QJJLLLLLr/   c                  L   t           j        ddddddf         \  } }t          j        |          dz  t          j        |           dz  z
  }t	          j                    }|                    dd          }|                    || |d	
          }|                                 d S Nr   r   y              Y@rn   r   rZ  r3   r4   hotr   )	r   ogridrB  rA  rC   rD   rE   rf  rS  rZ   rY   r  rH   r'   r)   s         r-   #test_Poly3DCollection_get_facecolorr  ~	       8AbIqDy()DAq	a"&))q.	(B
*,,C		.	.B
1bu--AOOr/   c                  L   t           j        ddddddf         \  } }t          j        |          dz  t          j        |           dz  z
  }t	          j                    }|                    dd          }|                    || |d	
          }|                                 d S r  )	r   r  rB  rA  rC   rD   rE   rf  get_edgecolorr  s         r-   #test_Poly3DCollection_get_edgecolorr  	  r  r/   zDvertical_axis, proj_expected, axis_lines_expected, tickdirs_expected)r[  #k$I?r[  ._x%I)r[  r[  (m?@mۿ)r[  r[  r[  g      $)#k$Ir[  r[  W$%@g˗ì?g2m 3?g溾IgMg2m 3gM?r  )r  r[  r[  r  )r[  r  r[  r  )r[  r[  r  r  g˗ìg溾I?)r   r   r   )r[  r[  r  r  )r  r[  r[  r  )r[  r  r[  r  )r   r   r   c                    d}t          j        dddd          }|                    ddd|            |                                j                                         |                                }t          j        	                    |||           t          |                                |                                |                                g          D ]\  }}||         }	|j                                        }
t          j        	                    |	|
|           ||         }|                    d          }t          j                            ||           d	S )
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   r3   r4   r   r   r   r   r}  rtolr   N)rC   subplotr   
get_figurer   r   get_projr   r   r  rx   	get_xaxis	get_yaxis	get_zaxisrQ   get_data_get_tickdirr  )r}  proj_expectedaxis_lines_expectedtickdirs_expectedr  r'   proj_actualr~   rR   axis_line_expectedaxis_line_actualtickdir_expectedtickdir_actuals                r-   test_view_init_vertical_axisr  	  sP   H D	Q1	.	.	.BLLaaa}LEEEMMOO!!! ++--KJ}kEEEbllnnbllnnbllnnMNN 
H 
H4039--//

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

%%&6GGGG
H 
Hr/   r}  returnc                    t          j        dddd          }|                    ddd|            |                                j                                         |                                }t          |t          j	        dd          }|
                    |           t          |t          j	        dd          }|                    |           |j                            |           |j        k    sJ |                                }t          j                            t$          t          j        j        ||           d	S )
zO
    Test vertical axis is respected when rotating the plot interactively.
    r   r3   r4   r   r  r  r1  r   N)rC   r  r   r  r   r   r  r   r   r  r  r  _axis_namesindex_vertical_axisr   r   assert_raisesAssertionErrorr  )r}  r'   proj_beforeevent_click
event_move
proj_afters         r-   test_on_move_vertical_axisr  	  s   
 
Q1	.	.	.BLLaaa}LEEEMMOO!!!++--KR(8KKKK[!!!B{'7s#NNNJKK
>.."2CCCCC JJ
2K    r/   zvertical_axis, aspect_expected)/0?F&H?r  )r  r  r  )r  r  r  c                 6   t          j        dddd          }|                    ddd|            |                                j                                         |                    d            t          j        	                    ||j
        d           d S )Nr   r3   r4   r   r  r  r  )rC   r  r   r  r   r   rz   r   r   r  _box_aspect)r}  aspect_expectedr'   s      r-   !test_set_box_aspect_vertical_axisr  
  s     
Q1	.	.	.BLLaaa}LEEEMMOO!!!dJTJJJJJr/   zarc_pathpatch.pngc                      t          j        dddd          } t          j        dddddd	
          }|                     |           t          j        |dd           d S )Nr   r3   r4   )r1  r1  r1  g?r   r   r  )r   heightrs  theta1theta2r   r[   r  )rC   r  mpatchArcrP  r   r  )r'   r  s     r-   test_arc_pathpatchr  
  sl     
Q1	.	.	.B
:SBs	4 	4 	4ALLOOO	Q!#......r/   zpanecolor_rcparams.pngc                      t          j        dddd          5  t          j        d          } |                     d           d d d            d S # 1 swxY w Y   d S )	Nr)   r   r   )zaxes3d.xaxis.panecolorzaxes3d.yaxis.panecolorzaxes3d.zaxis.panecolorr<  r   r3   r4   )rC   r  rD   rE   )rH   s    r-   test_panecolor_rcparamsr  $
  s     
336368 8 
9 
9 ) ) j(((4(((	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   ,AAAc                    |                      dd          }g d}g d}g d}|                    |||d           g d|dd<   g d|dd<   |                     dd          }g d}g d}g d}|                    |||d           dS )z~
    Test to see if the `z` axis does not get mutated
    after a call to `Axes3D.plot`

    test cases came from GH#8990
    rZ  r3   r4   r  )r[  r[  r[  zo-NrH  )r<   r=   rJ  rY   rZ   r[   rK  s          r-   "test_mutating_input_arrays_y_and_zr  /
  s     

st

4
4C		AAAHHQ1d 99AaaaD99AaaaD 

cd

3
3C		AAAHHQ1dr/   c                     t           j        dddg} dt           j        ddg}ddt           j         dg}g dg dg dg dg}t          j                    }|                    d          }|                    | |||          }t          |                                          t          t          t          |          |                                                    k    sJ dS )	zU
    Test color parameter usage with non-finite coordinate arrays.

    GH#26236
    r   r   r   )r[  r[  r[  r   r3   r4   r   N)r   r  r  rC   rD   rE   ru  r   get_offsetssuperrB  get_facecolors)rY   rZ   r[   r   rH   r'   path3ds          r-   test_scatter_masked_colorr  I
  s     
AA	
BFAA	
AwA	F *,,C	D	)	)BZZ1avZ..F v!!##$$uT&\\6**99;;<<= = = = = =r/   zsurface3d_zsort_inf.pngc                     dt           j        d<   t          j                    } |                     d          }t          j        ddddddf         \  }}t	          j        |          dz  t	          j        |          dz  z   }t          j        ||j	        d         dz  d |j	        d	         dz  d f<   |
                    |||d
           |                    dd           d S )NTr   r3   r4   r  r   r  r   r   r  r  r     )r   r   )rC   r   rD   rE   r   r  rA  rB  r  r  rf  r   rv  s        r-   test_surface3d_zsort_infr  c
  s    (,CL$%
*,,C	D	)	)B8BqHb3h&'DAq
q		1rvayy!|#A,.FAagajAo
a((()OOAq!%O(((LLbsL#####r/   c                      t          j        t          d          5  t          j        g dg dg dgt
                    } t          j        | gd          }d d d            d S # 1 swxY w Y   d S )NzCYou must provide facecolors, edgecolors, or both for shade to work.rN  r]  r^  r   Tr   )rP  rQ  r0  r   r    r  r   r`  )ra  r   s     r-   &test_Poly3DCollection_init_value_errorr  q
  s     
z5
6 
6 
6 7 7 xIIIyyy95AA"D6666	7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   ;A$$A(+A(c            	          t          j                    } |                     dd          }|                    dddt	          j        g d                     | j                                         d S )NrZ  r3   r4   r   r   r  r   )rC   rD   rE   ru  r   r    r   r   rG   s     r-   %test_ndarray_color_kwargs_value_errorr  {
  sd     *,,C		.	.BJJq!Qbh|||44J555JOOr/   )	functoolsr   platformsysrP  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.testing.widgetsr   matplotlib.collectionsr   r   matplotlib.patchesr   r   matplotlib.pathr   matplotlib.textr   matplotlib.pyplotpyplotrC   numpyr   partialr`  r.   r>   rI   rS   rg   r   r   r   r   r   r   r   r   r   machiner  r  r  r  markparametrizer-  r7  r=  rE  rL  rU  rk  rp  rw  r{  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  rH  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  r  r+  r-  rf  ri  rn  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r3  r  RIGHTrX  r   contextr_  rd  r{  r  r  r  r  r0  tuplerW  r  r  r  r  r  r  r  r  r  strr  r  r  r  r  r  r  r  r  r   r/   r-   <module>r     s8            



  > > > > > > > > > > > > A A A A A A    : : : : : : : : : :       ; ; ; ; ; ; ; ; O O O O O O O O 1 1 1 1 1 1 A A A A A A A A 0 0 0 0 0 0 0 0                                   +*$i9 9 9 H H H (((  )(
 (888  98 34GDDD% % ED% -.EQQQ@ @ RQ@ U'JJJ( ( KJ(  12$): : :4 4: :4
J 
J 
J 34G$'LH$<$<DD!E E E E E( W555J J 65J	/ 	/ 	/ +,G<<<  =<& ./w???	 	 @?	M M M6 W!!##'OOOUVX X XG GX XG 12'BBB  CB )*':::
 
 ;:
 ./w???  @? )VYYY,?-2LLL,A-2LLL,A,C D D (((  )(D D0 )*GDDD  ED   w777  87 (((  )($ $ $" +,G<<<  =<0 (((	* 	* )(	* )999
. 
. :9
. ./w???& & @?&  237CCC4 4 DC4 (((
- 
- )(
- (((9 9 )(9( e}55(((3C 3C )( 653Cl #s,,(((, , )( -,,& (((2 2 )(2. ./U'JJJ$ $ KJ$ 01AAAH H BAH, 34GDDD= = ED=$ )999- - :9-$ =>gNNN
 
 ON
 /0@@@  A@ /0@@@  A@4 (((  )(" (((! ! )(! 78HHH  IH EIII  JI0 (((H H )(H0 )uGDDD9 9 ED9" /0d'JJJ? ? KJ?" *+7;;;5 5 <;5 56gFFF4 4 GF4 56gFFF6 6 GF69 9 98 8 8 (UCCC  DC* (((I I )(I ./w???I I @?I" 237CCC	 	 DC	
D 
D 
D (((  )(6% % % 67wGGG+ + HG+   56gFFF+ + GF+$ 89III  JI8 9:'JJJ  KJ4S S SR R R ./$): : :1 1: :1* )*WMMM  NM -.$): : : : :	! 	! 	!
 
 
, , ,    " /0@@@  A@, 56gFFF  GF:	/ 	/ 	/9 9 9  11!455: : 65 21:( (((    )( 2 2 2 23$): : :5 5: :5 +,%wOOO  PO /0@@@  A@ (((#4 #4 )(#4L 2626"233+ . . .  & &  43&y+ y+ y+ y+ y+ y+ y+ y+xP P P$ (((< < )(<# # #(. . ." ((($A $A )($AN (((@ @ )(@ $%W555- - 65- 45W%PPP" " QP"" )*'$4H$4$6$6'$A$ADDqJ J J J J <.U;;;" " <;": )*':::". ". ;:".J3 3 3 % % %B# # #" (((
6 
6 )(
6	) 	) 	)[F [F [F| CE EAR ARE EARH$0 $0 $0N 3!;#3TDF!;#3SGI!;#3SFH!;#4dGI +"2DJL +"2CIK +"2CHJKL L:3 :3L L:3z 9(((@ @ )( @(D D D #4"54#WW7 7 7O O7 7OdJ J J>: : :' ' '# # # 3	UB DE	Z%IJ	Z%IJ	UUWWsBi)MN	UUWWsBi)MN	UUWWsBi)MN	EC8	2	4	E33	2	4	E++	2	4	FB LM6  $ $ $ (((
2 
2 )(
20 0 0 (((	 	 )(	 #7"8"! ! ! ! !       J //////&&&000	 j)K+EFz*[+,FG{+k:-FG
 II	
  //////&&&000	 z*Z,DEj)K+DE{+j*-EF
 II	
  //////&&&000	 {+j+-FGj)J
+CDk*Z,DE
 II	
?.1 1d%H %He1 1d%HP ///::c d    ;:0 $	,,,-	,,,-	,,,- K K K #6"7"! ! !/ /! !/ #;"<"! ! !) )! !) (((  )(2= = =4 237CCC
$ 
$ DC
$7 7 7    r/   