
    NgE                        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
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             Z- e*dgd          d             Z. e*dgdd          d             Z/ e*dgdd          d             Z0 e*dgdd          d             Z1d  Z2 e*d!gdej        d"k    rd#nd $          d%             Z3 e*d&gd          d'             Z4d( Z5 e*d)gd          d*             Z6 e*d+gd          d,             Z7d- Z8 e*d.gd ej9                    d/v rd0nd $          d1             Z: e*d2gd          d3             Z; e*d4gd          d5             Z< e*d6gd          d7             Z=ej>        ?                    d8d9g d:gd;g d<gd=g d>gg           edg          d?                         Z@ e*d@gdAdB          dC             ZAdD ZB e*dEgd          dF             ZC edg          dG             ZDdH ZE e*dIgd          dJ             ZF edg          dK             ZG e*dLgd          dM             ZH e*dNgd          dO             ZI e*dPgd          dQ             ZJ edg          dR             ZK edg          dS             ZLej>        ?                    dTddg           edg          dU                         ZMej>        ?                    dVdWdXg           edg          dY                         ZN edg          dZ             ZO e*d[gd\dB          d]             ZP e*d^gd          d_             ZQ ed`gd          da             ZR e*dbgd          dc             ZS e*ddgd          de             ZT edg          df             ZU edg          dg             ZV e*dhgd          di             ZW e*djgdd          dk             ZX edg          dl             ZY e*dmgdndB          do             ZZ e*dpgdqdB          dr             Z[ e*dsgd          dt             Z\ e*dugd          dv             Z] e*dwgd          dx             Z^dy Z_dz Z` e*d{gdd|$          d}             Za edg          d~             Zb e*dgd          d             Zc e*dgd          d             Zdd Ze edg          d             Zfd Zg e*dgd          d             Zhd Zi e*dgd          d             Zj e*dgd          d             Zk e*dgd          d             Zld Zmd Zn e*dgdd          d             Zo e*dgdd          d             Zp e*dgdd          d             Zqd Zrd Zsd ZtddZu e*dgd          d             Zv e*dgd          d             Zwd Zxd Zyej>        ?                    dd          ej>        ?                    dd          d                         Zzd Z{ e*dgdd          d             Z| e*dgdd          d             Z} e*dgd          d             Z~ej>        ?                    de(j        e(j        g          ej>        ?                    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j9                    dk    rdAnd $          d             Z edgdd¬$          dÄ             Z edgd          dń             ZdƄ ZdǄ ZdȄ Z edg          dɄ             Zdʄ Zd˄ Zd̄ Zej>        ?                    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j>        ?                    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             Zd Zd Zd Zej>        ?                    ddg dg dg dg dgddgd dgfddg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dgddgfddg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ddgdd	gfddgddgfgg dfg          d             Zej>        ?                    dg d          deddfd            Zej>        ?                    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)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         b/var/www/html/ai-engine/env/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 Nr2   r3   F)pltfigureadd_subplotgridfigr&   s     r,   test_grid_offrH   ,   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 rA   )rB   rC   rD   
set_xticks
set_yticks
set_zticksxaxisyaxiszaxisliner9   )rG   r&   axiss      r,   test_invisible_ticks_axisrR   3   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   r4   r2   r5   xyz)xlabelylabelzlabeltitle)
rB   r7   r%   flattenrM   rN   rO   set_label_positionset_ticks_positionset)	positionsrG   axsr&   posrQ   r^   s          r,   test_axis_positionsrf   >   s    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equalxzri   r      r4   r2   r5   r   )r   r      r'   r   r   r   r   rm      ro   datalim
adjustablezequal (cube))rB   r7   r_   r-   	enumerate	set_titleset_box_aspect
set_aspect)aspects_rd   r&   is        r,   test_aspectsr~   J   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)rh   ri   rj   rk   rl   r   r4   r2   )   rm   )r6   figsize)rs   rm   ro   rp   boxru   )rB   r7   lenrw   r-   rx   rz   )r{   rG   rd   r}   r&   s        r,   test_aspects_adjust_boxr   [   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 )	Nr2   r3   labelr^   rX   rY   rZ   zV<Axes3D: label='label', title={'center': 'title'}, xlabel='x', ylabel='y', zlabel='z'>)	rB   rC   rD   	set_labelrx   
set_xlabel
set_ylabel
set_zlabelreprrF   s     r,   test_axes3d_reprr   h   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   rm   r4   r2   r5   rX   rY   rZ   orthor   r   elevazimroll)
rB   r7   rw   flatr   r   r   set_proj_type	view_inittight_layout)viewsrG   rd   r}   r&   s        r,   test_axes3d_primary_viewsr   u   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 )Nr2   r3   )r(   gbrY   )      
   r   r   cr   rY   edge皙?)zszdiraligncoloralpha)rB   rC   rD   r%   r   aranger   bar)rG   r&   r   rZ   xsyscss          r,   
test_bar3dr      s    
*,,C	D	)	)B(((///:: 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 )Nr2   r3   )redgreenblueyellowr   r   )rB   rC   rD   r   r   r   
zeros_likebar3d)rG   r&   r   r   r   r   s         r,   test_bar3d_colorsr      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 )Nrs   ro   r   ))r   ir   )r   r   r   )r   r   ),  r   r   r   r2   r3   r5   r   Tshader   )r   r   meshgridravelrB   rC   	figaspectr   r7   r8   r%   r   r   canvasdraw)rX   rY   x2dy2drZ   r   rG   rd   r&   r   r   r   s               r,   test_bar3d_shadedr      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 )	Nr2   r3   rs   ro   r   r   Fr   )
rB   rC   rD   r   r   r   r   r   r   r   )rG   r&   rX   rY   r   r   rZ   s          r,   test_bar3d_notshadedr      s    
*,,C	D	)	)B
	!A
	!A{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   r2   r3   r   r   )azdegaltdeg)rm   rs   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)	rX   rY   rZ   dxdydzr   r   lightsource   rs   )rB   rC   rD   mcolorsLightSourcer   r   r   r   ranger   testingassert_array_max_ulp_facecolor3d)rG   r&   lslengthwidthrX   rY   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.automarginr2   r3   r   rZ   r   offsetcmaprX   rY   (   d   )xminxmaxyminymaxzminzmax)
rB   rcParamsrC   rD   r   get_test_datacontourr
   r   rQ   rG   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   r2   r3   r   rZ   r   )r   r   r   extend3dr   r   r   P   )rB   r   rC   rD   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   r2   r3   r   rZ   r   r   rX   r   rY   r   r   )rB   r   rC   rD   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   r2   r3   r         ?r   皙?ro   皙)r   levelsr   rn   r   )rB   r   rC   rD   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, levelsrV   )r   rs   r   min)r   rs   r      max)r   r   rs   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   r2   r3   r  )r   r   rs   r   r  extendr   )r   r   r   mpl	colormapscopy	set_underset_overrD   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   r2   r3   )
rB   r   rC   r   randomseedrandrD   
tricontourtricontourf)rG   rX   rY   rZ   r&   s        r,   test_tricontourr2  3  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 )	Nr2   r3   )r   r   r  r   r   r   r,  )rB   rC   rD   r   linspacer-  randintr   )rG   r&   nxnyrX   rY   rZ   s          r,   test_contour3d_1d_inputr8  C  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 )	Nr2   r3   rs   r   r  r   r   )	rB   rC   rD   r   r4  pisincosplot)rG   r&   thetarZ   r(   rX   rY   s          r,   test_lines3dr@  N  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 )Nr2   r3   r   orD   r>  r;   r<   ax1ax2s       r,   test_plot_scalarrG  Z  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)rP   s    r,   test_invalid_line_datarP  b  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   r=  r;  exp)ts    r,   fztest_mixedsubplots.<locals>.fu  s+    vagai  261"::--r.                 @r  r)  Tr          @r   r   r   bozk--r   )markerfacecolorr2   r3   ro   r  r   r   F)rcountccount	linewidthantialiasedrn   )r   r   rB   r   rC   r   rD   r>  rE   r   hypotr<  plot_surface
set_zlim3d)	rU  t1t2rG   r&   r   r   Rr   s	            r,   test_mixedsubplotsrf  s  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 )Nr2   r3   r,  zsome strings)rD   textr   rD  s       r,   test_tight_layout_textrk    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   r2   r3   r   r(   rB  )r   markerr   r   ^r   rn   r   rB   r   rC   rD   scatterr   r   rG   r&   rX   rY   rZ   s        r,   test_scatter3drr    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   r2   r3   r   r(   rW   rB  )	facecolor	edgecolorrm  r   r   ri  )r   rm  ro  rF   s     r,   test_scatter3d_colorrv    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 )Nr2   r3   r   rB  )rm  r^  )rB   rC   rD   rp  r   r   rF   s     r,   test_scatter3d_linewidthrx    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 )Nr2   r3   r   rB  rm  )rm  
linewidths)rD   rp  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 )Nr2   r3   r   rB  rz  C1C2333333?ffffff?ro   FK   rm   )rm  rt  ru  r   
depthshaderi  r{  )rD   rp  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  ro   r  r   rs   C3C4C5C6	   C7c                 6    g | ]}|                                 S r   )r_   r   as     r,   r   z*test_scatter3d_sorting.<locals>.<listcomp>  s0     : : : 	
		: : :r.   r2   r3   c              3   >   K   | ]}t          j        |          V  d S )N)r   uniquer  s     r,   	<genexpr>z)test_scatter3d_sorting.<locals>.<genexpr>  s*      NNQBIaLLNNNNNNr.   dtype)ri  fceclwr   r  )r   mgridr   sizereshapeshaper  rD   r   r!   mamasked_arrayfloatrepeatr"   maskrp  )r<   r;   r  rY   rX   rZ   sizes
facecolors
edgecolorsr{  r&  setsri  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   i   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.
    rn   r   r   r   rY   r2   r3     ri  r   r   N)rD   rp  r   r;   r<   r   rX   rY   rZ   r   r&   s           r,   $test_marker_draw_order_data_reversedr    s     
QA	
BA	
AA#JE					.	.B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  rn   r   r   r   rY   r2   r3   r  r  r   Nr   )rD   set_axis_offrp  r   r  s           r,   #test_marker_draw_order_view_rotatedr  2  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 )	Nr2   r3   r   ro   r   rX   r   r   rY   )rB   rC   rD   r   r   r>  )rG   r&   r   r   s       r,   test_plot_3d_from_2dr  J  sz    
*,,C	D	)	)B	1aB	1b		BGGBqsG###GGBqsG#####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.snapr2   r3   r[  ro   r  r   r   )r\  r]  r   r  r_  Tr   )\()\(?r,  )shrinkaspect)rB   r   rC   rD   r   r   r   r`  r<  ra  r
   r   r  colorbar)rG   r&   r   r   re  r   surfs          r,   test_surface3dr  T  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           | j        j                                         d S )NTr   r2   r3   r   r   r  rs   g     j@g    .Ag    חAautumnr   )r   cstriderstridezX labelzY labelzZ label)rB   r   rC   rD   r   r  r;  sqrtr#   r=  ra  r   r   r   r   r   )r&   rX   rY   rZ   s       r,   )test_surface3d_label_offset_tick_positionr  g  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)I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 )Nr2   r3   r[  ro   r  r   )r  r   r  r   F)r  r  r   r  r_  Tr   r  r  )rB   rC   rD   r   r   r   r  r<  ra  r   r  )rG   r&   r   r   re  r   s         r,   test_surface3d_shadedr  w  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 )Nr2   r3   )r   r   rm   rs   ro   r   r  r  r  r   r   )r   r   rm   rs   ro   r   r  r  )rn   r   r   r   r   r   r   r   r   r   r   )rn   r   r   rm   rs   rs   rs   rm   r   r   r   )rn         rs   ro   r   r  r   ro   rs   rm   r  )rn   r  r  r  r      r   r  r  r  r  )rn   r  r  r  r      r   r  r   r  r  )rn   r  r  r  r  r   r  r  r   r  r  )rn   r  r  r        r  r      r  r  )rn   r  r  r  r        r  r  r  r  r   )r  r  plasmar  r   r  )rB   rC   rD   r   r   r   r  masked_lessr   	Normalizer  r  r   r!  ra  r   )rG   r&   rX   rY   matrixrZ   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  r2   r3   )
r   r4  r<  r=  r  r   rD   rp  r>  nan)	r;   r<   rX   rY   rZ   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 )Nro   r2   r3   r  )r   r   r   rD   ra  )r;   r<   rX   rY   rZ   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 )Nr2   r3   igffffff@r   r   rs   r  r  <   r   )	rB   rC   rD   r   r  r  r  ra  r   rq  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 )Nr2   r3   NrX   rY   rZ   r   r   r   rq   r   r   rs   r  r  r   r   rs   r  r  r   r   rs   r   ro   r   r   r  z(%d, %d, %d), dir=%sr   r   r   r   gffffff?z2D Text)	transformTr   r   r   zX axiszY axiszZ axis)rB   rC   rD   r%   rj  text2D	transAxesr   
set_xlim3d
set_ylim3drb  r   r   r   )rG   r&   zdirsr   r   r   r   rX   rY   rZ   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  r2   r3   r   r   (z, z), dir=)r   )rD   r  r  rb  r%   rj  set_position_3d)r<   r;   r  r   r   r   r'  r   rX   rY   rZ   rT  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   rQ   r2   r3   皙?)r   r^  )r   r4  r;  r  newaxisappendr=  r_   r<  rB   rC   rD   plot_trisurfr
   jet	n_anglesn_radiiradiianglesrX   rY   rZ   rG   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  r2   r3   )r   r,  r   r   )r   r^  )r   r4  r;  r  r  r  r=  r_   r<  rB   rC   rD   r  r  s	            r,   test_trisurf3d_shadedr    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 )Nr2   r3   r      r\  r]  rB   rC   rD   r   r   plot_wireframer   s        r,   test_wireframe3dr    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 )Nr2   r3   r   r  r   r  r  r   s        r,   test_wireframe3dzerocstrider  '  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 )Nr2   r3   r   r   r   r  r  r   s        r,   test_wireframe3dzerorstrider  /  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 )Nr2   r3   r   r   r  )	rB   rC   rD   r   r   rK  rL  
ValueErrorr  r   s        r,    test_wireframe3dzerostrideraisesr  7  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 )Nr2   r3   r   r   2   )r  r]  )r  r\  )
rB   rC   rD   r   r   rK  rL  r  r  ra  r   s        r,   test_mixedsamplesraisesr  ?  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   r2   r3   )tipmiddletail)ztab:bluez
tab:orangez	tab:green      r,  r   r   )r   pivotr   r   rm   rn   ro   )rB   r   rC   rD   rw   r%   r   r   quiverrp  r  r  r  )rG   r&   pivotsr   r}   r#  r   rX   rY   rZ   uvws                r,   test_quiver3dr*  J  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 )Nr2   r3   r  r  Tr   r#  	normalize)rD   r%  )	r;   r<   rX   rY   rZ   r'  r(  r)  r&   s	            r,   test_quiver3d_emptyr.  `  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 )Nr2   r3   rn   r   y              $@g333333?y              @g>,p ?皙ٿr  F)r"  r  r  Tr,  )rB   rC   rD   r   r  r<  r;  r=  r  masked_wherer%  )rG   r&   rX   rY   rZ   r'  r(  r)  s           r,   test_quiver3d_maskedr2  h  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 )Nr2   r3   r         $@)r   r   )rB   rC   rD   r   zerosr   r
   Redsr  r%  r  )	rG   r&   rX   rY   r   r   rZ   r   r   s	            r,   test_quiver3d_colorcodedr7  z  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 )Nr2   r3   r   r   )r  rV  rV  r   )r   r   r   r   )rB   rC   rD   r   	add_patchr   patch_2d_to_3dr  r   
same_colorget_facecolorr   r   )rG   r&   circles      r,   test_patch_modificationr?    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 )Nr9  r   )r  r  r  )rV  r,  rV  r  )r,  rV  rV  r,  rm   )r{  r2   r3   r  r  F)r{  ru  rt  r   r  )r   r   r   r   Patch3DCollectionrD   add_collection3dr  r  r  r  r  )r;   r<   patch1patch2r  r   r'  r&  s           r,   "test_patch_collection_modificationrE    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-likerI  r  )rK  rL  r  r   Poly3DCollectionr   r   r  )polys    r,   &test_poly3dcollection_verts_validationrK    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 )Nr2   r3   rG  rH  r   rq   r  rm   k)r,  r,  r   r,  Tr{  ru  rt  closed)r   r,  r,  r,  Fautolim)	rB   rC   rD   r   r   r  r   rI  rB  rG   r&   poly1poly2c1c2s         r,   test_poly3dcollection_closedrW    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 )Nr2   r3   r5   )r   r   poly_collection_2d_to_3d
isinstancerI  	get_pathsrB   r7   r8   
add_artistdo_3d_projectionr   isnanr   r   )rJ  rG   r&   minzs       r,   #test_poly_collection_2d_to_3d_emptyr`    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 )Nr2   r3   rG  rH  r   rq   r  rm   rM  r,  r,  r   TrN  r,  F)r{  rO  )r   r,  r,  rP  )rB   rC   rD   r   r   r  r   rI  r  r  r  rB  rR  s         r,   test_poly3dcollection_alpharc    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:  rs   r   r  r   r   rn   rm   r  r2   r3   r   twilightr   r  r   Tr   r[  ro   r   )r   r4  r;  r<  r=  column_stackr  concatenaterB   rC   rD   r  r   	set_arraymodrB  r   r  r  r  r?  rZ   r(   rX   rY   pointssegmentsrG   r&   r  lcrP   s               r,   test_add_collection3d_zs_arrayrp    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   rn   r  r2   r3   re  rf  rg  Tr   r[  ro   r:  r   )r   r4  r;  r<  r=  rh  r  ri  rB   rC   rD   r  r   rj  rB  r   r  r  r  rl  s               r,   test_add_collection3d_zs_scalarrr    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 )Nr2   r3   r   )r   rs   r   r   r   rm   )r   r   r   r   r   rs   )r   rs   ro   )gUUUUUUgUUUUUU @)gUUUUUUUUUUUU@)ggj@)rB   rC   rD   r   Line3DCollectionrB  r   allclose
get_xlim3d
get_ylim3d
get_zlim3d)rG   r&   linesro  s       r,   !test_line3dCollection_autoscalingr}  #  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 )Nr2   r3   r   rt  ru  UUUUUUgUUUUUU?)gSUUUUUrv  )rB   rC   rD   r   r   r   rI  rB  rx  ry  rz  r{  )rG   r&   rJ  cols       r,   !test_poly3dCollection_autoscalingr  2  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   ro   )rB   rC   add_axesr   rM   r  r   r   r   r   r   rO   
get_zlabelrN   rw   get_major_ticksset_padget_pad)rG   r&   r}   ticks       r,   test_axes3d_labelpadr  =  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   r2   r3   )rB   rC   rD   r  clarF   s     r,   test_axes3d_clar  T  sI     *,,C	AqT	2	2BOOFFHHHHHr.   zaxes3d_rotated.pngc                      t          j                    } |                     dddd          }|                    ddd           d S )Nr   r2   r3   r   -   r   )rB   rC   rD   r   rF   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 )Nr,  r   r   )num)   r   r   r   r   r2   r3   )r   r4  r   r-  randnrB   rC   rD   rK  rL  r  ra  )rX   rY   r   r   rZ   rG   r&   s          r,   test_plotsurface_1d_raisesr  e  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)r+  ii  )r   r   r   rG  r   r   r   r   )r   r   r   
_view_axes_view_transformation_uvw_persp_transformationdot)
Ere  Vr   r'  r(  r)  viewMperspMMs
             r,   _test_proj_make_Mr  q  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   )rB  rX   rY   rZ   )r   r  r%   rB   r7   r   add_collectionrj  )r  ri  argsr%  r   r   r   r  r  r  rB  r&   ayazr|  rG   linecrX   rY   rT  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  rh  r   r(   Tr   皙ɿr   )r  splitr   r   r   r  r  rp  r>  r%   rj  rB   r   r  r  )r  tsr   r   r   r  r  r  rG   r&   rX   rY   rT  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   rG  r   rn   r   r  r  r   r  r     rh  r   r(   r  Tr   i8r  )r   r   r   r  r  _ortho_transformationr  r  r  r  rp  r>  r%   rj  rB   r   r  r  )r  re  r  r   r'  r(  r)  r  orthoMr  r  r   r   r   r  r  r  rG   r&   rX   rY   rT  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   r,  )r   r   r4  rn   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 )Nr4   r2   r5   linearr   r  r   rX   rY   rZ   r   )r   r   r  皙?r  g333333?FTr   )r   r   r  r  r0  333333@rX   r  )r   r   r  r  r0  r  )	rB   r7   
get_zscale_view_marginmarginsr>  
get_w_lims	autoscaleset_autoscalez_onrF   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.   rQ   r  rh   )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 )Nr2   r3   r   r  r  get_autoscale_onset_limget_)r"  r,  )rh   )rB   rC   rD   r   r   r4  rp  getattrr   r   r   assert_array_equal)
rQ   rh   rG   r&   rX   rY   get_autoscale_onset_limget_lim	post_autos
             r,   test_unautoscaler    s&    *,,C	D	)	)B
	#A
D#s##AJJq!r#<4#<#<#<==b****++Gb****++G&*l  """IGKd####((******JOOJ!!''))[99999r.   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 )Nr2   r3   perspr   focal_lengthr   r   )rB   rC   rD   rK  rL  r  r   rF   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   r4   r2   r5   r   r  r  333333?)rB   r7   r   r   inf)rG   rd   s     r,   test_axes3d_focal_lengthr    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 )Nr2   r3   r   )rB   rC   rD   r   rF   s     r,   test_axes3d_orthor    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!   r2   r   )rs   rs   rs   )r4   	proj_type
box_aspectr5   )rn   r   r   r   r   rM  r  r  r   T)r   r   r!   rB   r7   r8   r   r   r    r#   r"   r$   r%   r   degreesarctanr  rE   )r   r!   rG   r&   r(   ri  es          r,   test_axes3d_isometricr    s*   ////////ld' ' '   GC
 	ARXd771a+;+;&<&<==qAA ) )1q1u::>>qtad{**BIs1ayy(C(((LLbj2

?!;!;<<3QLOOOGGDMMMMMr.   value)setterside))r  left)r  right)r  bottom)r  top)rb  r  )rb  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 )Nr2   r3   r   )rB   rC   rD   rK  rL  r  r  )r  r  r  limitrG   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 )Nr4   r2   r5   )ro   rs   rm   )rB   r7   r   indicesvoxels)selfrG   r&   rX   rY   rZ   r  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 )Nr4   r2   r5   )ro   ro   rs   r   g      ?g](\@rm   r  )r{  ru  r  )rB   r7   r   r  r  r  keysr  )r	  rG   r&   rX   rY   rZ   r  r(  s           r,   test_edge_stylezTestVoxels.test_edge_styleH  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.r4   r2   r5   r   r   r   r   r  r  z0.25ro   cyanr   r  N)rB   r7   r   r  r  object_r  r	  rG   r&   rX   rY   rZ   r  r   s           r,   test_named_colorszTestVoxels.test_named_colorsS  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.r4   r2   r5   r  )r   r   r   rm   r  .r   .r   .r   r  N)rB   r7   r   r  r5  r  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 )Nr4   r2   r5   r  r   )r   r   r   rs   )r   r   r   r,  )r   r   r   r,  r  zfaces returned for absent voxel)rB   r7   r   r  r#   r5  r  typer8   itemsrZ  r   rI  )r	  rG   r&   rX   rY   rZ   v1v2r  r   r(  coordrJ  s                r,   
test_alphazTestVoxels.test_alpham  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 )Nr4   r2   r5   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   rn   r   rX  )r   ndimr   	index_exp)rX   slr}   s      r,   	midpointsz&TestVoxels.test_xyz.<locals>.midpoints  sx    B16]] & &rBL"--.rBL,,-.145bl111o%Hr.   )   r'  r'  g      0@r,  r   r  )rm   r  r  r  r   r   )r  r  r^  )rB   r7   r   r  r5  r  r  r  )r	  rG   r&   r&  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                    5  |                    ||||           d d d            d S # 1 swxY w Y   d S )Nrr   )r   rm   rs   r4   r2   r5   rM  )ru  filledr  rI  )r.  )r.  rX   rY   rZ   r   )r   r  onesrB   r7   r8   r  rK  rL  	TypeErrorAttributeError)r	  rX   rY   rZ   r.  rG   r&   kws           r,   test_calling_conventionsz#TestVoxels.test_calling_conventions  sx   *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	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]>** 	4 	4IIVqAI333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s6   C**C.1C.D33D7:D7E>>FFN)__name__
__module____qualname__mpl3d_image_comparisonr
  r  r  r  r  r,  r3  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!@4 4 4 4 4r.   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   rm   rs   ro   r   r  r  r  r   r   r2   r3   rZ   r  )rB   rC   rD   r>  r   r   r  get_data_3drO  	set_xdata	set_ydataset_3d_propertiesr   )
rX   rY   rZ   x2y2z2rG   r&   r|  rP   s
             r,   test_line3d_set_get_data_3dr@    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 )Nr2   r3   )r   r   r   r   )r   r   r   r   )r   r   r   r   )rD   r>  invert_yaxisr:   s      r,   test_invertedrC    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 )Nr4   r2   r5   r   r   )	rB   r7   xaxis_invertedyaxis_invertedzaxis_invertedr  r  r  r  rF   s     r,   test_inverted_clarH    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 )NrX   r   )rQ   r   rY   rZ   )rB   rC   r   tick_paramsr   r   rM   r  	tick1line_colorrN   rO   )rG   r&   r  s      r,   test_ax3d_tickcolourrM    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 )Nrs   ro   r4   r2   r5   g    cAg   @cA)rX   rY   rZ   rV   r   plain)rQ   r   r   )r  r   )rQ   	scilimitsr   zaxes.formatter.useoffset)rQ   	useOffsetrm   zaxes.formatter.use_locale)rQ   	useLocalezaxes.formatter.use_mathtext)rQ   useMathTextc                        fd|D             S )Nc                 T    g | ]$}t          |                                          %S r   )r  get_major_formatter)r   namer&   s     r,   r   zAtest_ticklabel_format.<locals>.get_formatters.<locals>.<listcomp>  s/    JJJDD!!5577JJJr.   r   )r&   namess   ` r,   get_formattersz-test_ticklabel_format.<locals>.get_formatters  s    JJJJEJJJJr.   rM   rN   rO   )rM   rN   rO   F)r7   r   r  r%   ticklabel_formatr   r   set_scientificset_powerlimitsset_useOffsetset_useLocaleset_useMathText)	r;   r<   rd   r&   rowrW  rY  rX  fmts	            r,   test_ticklabel_formatrb    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 )
Nr   gr   r   r   )r   r  r2   r3   )r   r#  )r   r   r   	ones_liker%   rD   r%  )r;   r<   r#  rX   rY   rZ   r'  r(  r)  rG   r   r&   s               r,   test_quiver3D_smokere  %  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 )Nr2   r3   r  T)minorquartergQ?thirdr,  half)	rB   rC   rD   rJ   set_xticklabelsrK   set_yticklabelsrL   set_zticklabels)r&   s    r,   test_minor_ticksrn  5  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  r   rm   ro   r2   r3      r   )zuplimszlolims
erroreveryN)
r   r   r;  r<  r=  rB   rC   rD   r  errorbar)
rT  rX   rY   rZ   rG   r&   estepr}   rq  rr  s
             r,   test_errorbar3d_erroreveryrv  A  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.r2   r3   )r   r   rm   rs   ro   )r,  r,  r,  r,  r,  rm   )FTFTT)TFFTFTpurplezError lines)rX   rY   rZ   xerryerrzerrcapsizerq  rr  yuplimsecolorr   N)rB   rC   rD   rt  legend)rG   r&   dr  s       r,   test_errorbar3dr  S  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   rm   )r  r   r4   r2   r   constrained_layoutr6   r   r  )orientationzorientation=r   r   zC4-.C1Dr  )linefmt	markerfmtbasefmtr  rW   )rZ  markeredgewidth)rB   r   r7   r   r4  r;  r=  r<  r%   stemrx   rd  rb   set_linewidth)rG   rd   r?  rX   rY   rZ   r&   r   
markerline	stemlinesbaselines              r,   test_stem3dr  d  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   r2   r3   r   r   rn   r   r   r   offrq   zArgument zoom =rI  )zoom)"r   r!   r   rB   rC   rD   r   r4  r;  outerr=  r<  rd  ra  r   r    r"   r#   r$   r%   rh  ry  rz  r{  r  r  r  r  rb  rQ   ry   rK  rL  r  )r!   r   rG   r&   r'  r(  rX   rY   rZ   r(   ri  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   )rs   ro   Tr4   r2   r  ro   
horizontal)r&   r  r   )rB   r7   r  r   r-  r  r  r   r   r&   get_positionextents)	num_plotsrG   rd   r&   p_tricbars         r,   test_colorbar_posr    s    I|Ay&/3(4d';= = =HC  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 )Nr2   r3   r   r   )r   r   )r   r   )r   r   )rT   )r   r   r   )rU   )r   r   r   r   )	rB   rC   rD   r  rG  get_zlim
get_zbound
set_zboundinvert_zaxisrF   s     r,   test_inverted_zaxisr    s   
*,,C	D	)	)BKK1  """"";;==F""""==??f$$$$ MM&  """"";;==F""""==??f$$$$ OO;;==F""""==??f$$$$ MMM;;==F""""==??f$$$$ MMM;;==F""""==??f$$$$$$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 )Nr2   r3   r  r   )r   )r  r   r   )r   r  z"Cannot pass both 'lower' and 'min'rI  r   )r  r   z"Cannot pass both 'upper' and 'max')r  r   )
rB   rC   rD   r   rx  r  r  rK  rL  r0  rF   s     r,   test_set_zlimr    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)ro   r   r      r2   r3      )r4   	shareview   T)r   r   r   share)r  r  r  r   )rD   r  r   )
r;   r<   r   r   r   rE  rF  ax3subplot_numr&   s
             r,   test_shared_viewr    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   r2   r3      )r4   sharezr   r   r   )r"  r   r         @)r"  r  )rB   rC   rD   r>  rL   r  )rG   rE  rF  s      r,   test_shared_axes_retickr    s    
*,,C
//#$/
/
/C
//#$s/
;
;CHHaVaVaV$$$HHaVaVaV$$$NN$$$%%%<<>>[((((<<>>[((((((r.   c            
      
   dD ]~} t          j                    }|                    dddd          }|                    dd|            |j        j                                         d}d}|                    t          |t          j	        dd                     |
                    t          |t          j	        ||j        z  ||j        z                       |j        j                                         t          j        |j                  }t          j        |          }t          j        |          }|j        | d	z  |z  |d	z  |z  z   k    sJ |j        | d	z  |z  |d	z  |z  z
  k    sJ |j        | k    sJ d
S )z*Test rotating using the left mouse button.)r   r   r   r2   r3   r   r  r   buttonxdataydatar   N)rB   rC   rD   r   r   r   _button_pressr   r   LEFT_on_move	_pseudo_w	_pseudo_hr   deg2radr   r=  r<  r   r   )r   rG   r&   r   r   roll_radiansr   sns           r,   test_rotater    s     jll__Q1_66
Q4   
	 
r+"2!1EEE	G 	G 	G
r+"2!#BL2<I I I	J 	J 	J 		z"'**VL!!VL!!wB3s72:3r	12222wB3s72:3r	12222w$) r.   c                     d } t          j                                        d          }|                    ddd           |j        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.   r2   r3   r   r  r   N)rB   rC   rD   rp  r   r   ry  rz  r{  r  r   r   MIDDLEr  rK  approx)r  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_panr    s      
	!	!T	!	2	2BJJq!QI%+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  ))rV  Q?)r   gQ?)r)  {Gz?rX   ))g{Gzr  )gQr  gQr  rY   ))Q뱿r   )g{Gzr  )rV  gQ?))g
ףp=
r  )g{Gzg(\?)r  g
ףp=
?pan))gffffff(\)gp=
ףgQgRQgffffff))g
ףp=
gzG)r  gq=
ףpݿr  ))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 )Nr2   r3   r   r9  r   r   button_press_eventkeybutton_release_eventr  r   )r#   )rB   rC   rD   rp  r   r   ry  rz  r{  	transDatar  astypeintr   r	   r  
press_zoom	drag_zoomrelease_zoomr  	press_pandrag_panrelease_panrK  r  backforwardhome)toolr  r  expectedrG   r&   xlim0ylim0zlim0d0d1s0s1start_event
stop_eventtbxlimylimzlims                      r,   test_toolbar_zoom_panr  C  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   ro   r   o   r2   r3   r   r  )r   ri  r   )r   r   r    r   r!   r   TrD   rp  r   r   changed)
r;   r<   rX   rY   rZ   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   r2   r3   other)r4   r   )rB   rC   
subfiguresrD   )rG   sfr&   s      r,   test_subfigure_simpler    sf    
*,,C	1		B	A		1at		4	4B	A		1at7		C	CBBBr.   computed_zorder)baseline_imagesr   r0   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      r2   r3      F)r   )r   ro   r   )ro   ro   r   )ro   r   r   whiteblackr   )r  r  zorder)r   r   )r   rs   r   r   )r   r  )rm   rm   )r   rm   r   )r   rW  )r   r        r,  r   r  r+  r   rn   )r   r   r^  r  ro   z--r   )r  	linestyler   r  rm   rs   r   r  r   r  )rB   r   rC   rD   r  r   rI  rB  r>  rp  r  r  r  r   r   r5  r4  r;  r=  r<  ra  r   rQ   )rG   rE  rF  cornersr&   trir  ax4dimr   r   r   angleX2Y2Z2X3Y3Z3r(   r  thrX   rY   rZ   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 )Nr2   r3   r   r  z"x=10.5227, y pane=1.0417, z=0.1444r   rY   )r   vertical_axisz!x pane=9.1875, y=0.9761, z=0.1291r   z"x=10.8869, y pane=1.0417, z=0.1528r  r  z!x=9.0620, y pane=1.0417, z=0.1110)rB   rC   rD   r   r   r>  r<  r   r   format_coordr   r   )rG   r&   rX   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 )Nr2   r3   r   )FTF)
rB   rC   rD   r   r   r>  r<  r   r   get_axis_position)rG   r&   rX   s      r,   test_get_axis_positionr0  !  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 )Nr2   r3   r   )r   r   r   r  r  )r  r   r  r   )rX   )r   r   r  )rY   )r   r  r  rZ   )r   r  r   )rB   rC   rD   r  rF   s     r,   test_marginsr3  *  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 )Nr2   r3   r  r   r  )rB   rC   rD   r  get_xmarginget_ymarginget_zmarginrF   s     r,   test_margin_gettersr8  9  s    
*,,C	D	)	)BJJsC>>s"""">>s"""">>s""""""r.   zerr, args, kwargs, match)rn   z!margin must be greater than -0\.5)r   rn   r   )r   r   rn   rn   rZ   )r   z'Cannot pass both positional and keyword)rX   rY   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 )NrI  r2   r3   )rK  rL  rB   rC   rD   r  )errr  r%  rJ  rG   r&   s         r,   test_margins_errorsr;  B  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 )Nr2   r3   r,  zFoo bar $\int$r   r2  rb  )rD   r   r   text_2d_to_3dr\  get_position_3dText3D)r;   r<   r&   txtt3ds        r,   test_text_3drB  X  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 )Nr2   r3   r   r   )rB   rC   rD   r>  rF   s     r,   test_draw_single_lines_from_Nx1rD  f  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 )Nr2   r3   )r   r,  r  r   r   rY   rZ   r   r  )rD   r   unit_rectangler   r   pathpatch_2d_to_3dr\  PathPatch3D)r;   r<   r&   pathpatchpp3ds         r,   test_pathpatch_3drM  m  s    					-	-B  DdOOE	U&9DDDDMM%					.	.BT&9DDDDMM$r.   zscatter_spiral.png)r  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   r2   r3   r   r   r      r   ro   r  )rB   r   rC   rD   r   r4  r;  rp  r<  r=  r   r   )rG   r&   r&  scs       r,   test_scatter_spiralrQ  z  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 )Nr4   r2   r5   r9  r  )rB   r7   r   r:  r   rH  get_path)rG   r&   ps      r,   test_Poly3DCollection_get_pathrU    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@rm   r   r  r2   r3   hotr   )	r   ogridr=  r<  rB   rC   rD   ra  r=  rY   rX   r?  rG   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 rW  )	r   rZ  r=  r<  rB   rC   rD   ra  get_edgecolorr[  s         r,   #test_Poly3DCollection_get_edgecolorr`    r]  r.   zDvertical_axis, proj_expected, axis_lines_expected, tickdirs_expected)rV  #k$I?rV  ._x%I)rV  rV  (m?@mۿ)rV  rV  rV  g      $)#k$IrV  rV  W$%@g˗ì?g2m 3?g溾IgMg2m 3gM?)r   r   r   )ra  rV  rV  rb  )rV  rc  rV  rd  )rV  rV  re  rf  g˗ìg溾I?)r   r   r   )rV  rV  ra  rb  )rc  rV  rV  rd  )rV  re  rV  rf  )r   r   r   c                    d}t          j        dddd          }|                    ddd|            |j        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   r2   r3   r   r   r   r   r)  rtolr   N)rB   subplotr   rC   r   r   get_projr   r   r  rw   	get_xaxis	get_yaxis	get_zaxisrP   get_data_get_tickdirr  )r)  proj_expectedaxis_lines_expectedtickdirs_expectedrj  r&   proj_actualr}   rQ   axis_line_expectedaxis_line_actualtickdir_expectedtickdir_actuals                r,   test_view_init_vertical_axisrz    sJ   H D	Q1	.	.	.BLLaaa}LEEEI ++--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                 r   t          j        dddd          }|                    ddd|            |j        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   r2   r3   r   rh  r  r,  r   N)rB   rk  r   rC   r   r   rl  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I++--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                    t          j        dddd          }|                    ddd|            |j        j                                         |                    d            t          j        	                    ||j
        d           d S )Nr   r2   r3   r   rh  gư>ri  )rB   rk  r   rC   r   r   ry   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I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   r2   r3   )r,  r,  r,  g?r   r   r  )r   heightr  theta1theta2r   rZ   rF  )rB   rk  mpatchArcr:  r   rH  )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   r2   r3   )rB   
rc_contextrC   rD   )rG   s    r,   test_panecolor_rcparamsr  8	  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
    r  r2   r3   )r   r   rm   )rV  rV  rV  zo-NrC  )r;   r<   rE  rX   rY   rZ   rF  s          r,   "test_mutating_input_arrays_y_and_zr  C	  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   )rV  rV  rV  r   r2   r3   r   N)r   r  r  rB   rC   rD   rp  r   get_offsetssuperr  get_facecolors)rX   rY   rZ   r   rG   r&   path3ds          r,   test_scatter_masked_colorr  ]	  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   r2   r3   r  r   r  r   r   r  rY  r     )r   r   )rB   r   rC   rD   r   r  r<  r=  r  r  ra  r   rq  s        r,   test_surface3d_zsort_infr  w	  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.rI  rG  rH  r   Tr   )rK  rL  r  r   r   r  r   rI  )rJ  r   s     r,   &test_Poly3DCollection_init_value_errorr  	  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 )Nr  r2   r3   r   r   r  r   )rB   rC   rD   rp  r   r   r   r   rF   s     r,   %test_ndarray_color_kwargs_value_errorr  	  sd     *,,C		.	.BJJq!Qbh|||44J555JOOr.   )	functoolsr   platformsysrK  mpl_toolkits.mplot3dr   r   r   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pyplotrB   numpyr   partialr7  r-   r=   rH   rR   rf   r~   r   r   r   r   r   r   r   r   machiner   r	  r  r  markparametrizer(  r2  r8  r@  rG  rP  rf  rk  rr  rv  rx  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r*  r.  r2  r7  r?  rE  rK  rW  r`  rc  rp  rr  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r@  rC  rH  rM  rb  re  rn  rv  r  r  r  r  r  r  r  r  r  r  r  RIGHTr  r   contextr
  r  r'  r-  r0  r3  r8  r  tupler0  r;  rB  rD  rM  rQ  rU  r\  r`  rz  strr  r  r  r  r  r  r  r  r  r   r.   r,   <module>r     s!            



  > > > > > > > > > > > >    : : : : : : : : : :       ; ; ; ; ; ; ; ; 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$ )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@ 2626"233+ . . .  & &  43&x4 x4 x4 x4 x4 x4 x4 x4v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	) 	) 	)  2#0 #0 #0L 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.   