o
    -hh                    @   s  d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ d dlZd dlmZmZmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZmZ d d
l m!Z!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z) d dl*Z+e j,edddZ-dd Z.edgddd Z/e-dgdddd Z0e-dgdddd Z1e-dgdddd d! Z2e-d"gdddd#d$ Z3e-d%gdddd&d' Z4d(d) Z5e-d*gdejd+krd,nd d-d.d/ Z6e-d0gddd1d2 Z7d3d4 Z8e-d5gddd6d7 Z9e-d8gddd9d: Z:d;d< Z;e-d=gde< d>krd nd?d-d@dA Z=e-dBgdddCdD Z>e-dEgdddFdG Z?e-dHgdddIdJ Z@ejABdKdLg dMgdNg dOgdPg dQggedgddRdS ZCe-dTgdUddVdWdX ZDdYdZ ZEe-d[gddd\d] ZFedgdd^d_ ZGd`da ZHe-dbgdddcdd ZIedgddedf ZJe-dggdddhdi ZKe-djgdddkdl ZLe-dmgdddndo ZMedgddpdq ZNedgddrds ZOejABdtddgedgddudv ZPejABdwdxdygedgddzd{ ZQedgdd|d} ZRe-d~gdddVdd ZSe-dgdddd ZTe-dgdddd ZUe-dgdddd ZVedgdddd ZWe-dgdddd ZXe-dgdddd ZYedgddd ZZedgddd Z[e-dgdddd Z\e-dgddddd Z]edgddd Z^e-dgdddVdd Z_e-dgdddVdd Z`e-dgdddd Zae-dgdddd Zbe-dgdddd Zcdd Zddd Zee-dgddd-dd Zfedgddd Zge-dgdddd Zhe-dgdddd Zidd ZjedgdddĄ ZkddƄ Zle-dgddddɄ Zmdd˄ Zne-dgdddd΄ Zoe-dgddddф Zpe-dgddddԄ Zqddք Zrdd؄ Zse-dgdddddۄ Zte-dgdddddބ Zue-dgddddd Zvdd Zwdd Zxdd ZyddddZze-dgdddd Z{e-dgdddd Z|dd Z}dd Z~ejABddejABdddd Zedgddd Zdd Ze-dgdddd d Ze-dgddddd Ze-dgdddd Zedgddd	 ZejABd
e+je+jgejABdg ddd ZG dd dZdd Zedgddd Zdd Zdd Zedgddd Zedgddd Zedgdddd Ze-d gddd-d!d" Ze-d#gde< d>krld ndUd-d$d% Zed&gdd'd-d(d) Zed*gddd+d, Zd-d. Zd/d0 Zd1d2 Zedgdd3d4 Zd5d6 Zd7d8 ZejABd9d:d;d< Zd=d> ZejABd?d@ejddAfd@ejdBdCfd@ejdDdEfd@ejddFfdGejddHfdGejdBdIfdGejdDdJfgdKdL ZejdedgddMdN ZdOdP ZedQgddgddRdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ ZejABd]ed^i d_fed`i d_fedai d_fee dBdbid_fee dDdbid_fee dcdbid_fedddBdidefedddddddefedddddfdefedgi dhff
didj Zedgddkdl Zdmdn Zedgddodp Zedqgdddrdsdt Zdudv Zdwdx Zdydz ZejABd{dcg d|g d}g d~g dgddgddgfddgddgfddgddgfgg dfdDg dg dg d~g dgddgddgfddgddgfddgddgfgg dfdBg dg dg d~g dgddgddgfddgddgfddgddgfgg dfgdd ZejABdg ddeddfddZejABddBg dfdDg dfdcg dfgdd Zedgdddrdd Zedgdddrdd Zedgddd Zdd Ze-dgdddd Zdd Zdd ZdS (      N)Axes3Daxes3dproj3dart3d)_Quaternion)MouseButton
MouseEventNavigationToolbar2)cm)colorspatches)image_comparisoncheck_figures_equal)
mock_event)LineCollectionPolyCollection)Circle	PathPatch)Path)TextTdefault)remove_textstylec              
   C   s   ddg}t ttt |||d}|D ](\}}tt|| |d |d  kr>| jt	|t| |t|   qd S )Nr         )
	itertoolscombinationsnparraylistproductsumabsplot3Dzip)axscalerptsstartend r+   Z/var/www/vscode/kcb/lib/python3.10/site-packages/mpl_toolkits/mplot3d/tests/test_axes3d.pyplot_cuboid   s    $$r-   png)
extensionsc                 C   s    | j tddd}|d d S )N3d
projection
subplot_kwF)subplotsdictset_visiblefig_testfig_refr%   r+   r+   r,   test_invisible_axes'   s   r;   zgrid_off.pngmpl20r   c                  C   "   t  } | jdd}|d d S Nr0   r1   F)pltfigureadd_subplotgridfigr%   r+   r+   r,   test_grid_off-      rF   zinvisible_ticks_axis.pngc                  C   sX   t  } | jdd}|g  |g  |g  |j|j|jfD ]}|j	
d q!d S r?   )r@   rA   rB   
set_xticks
set_yticks
set_zticksxaxisyaxiszaxisliner7   )rE   r%   axisr+   r+   r,   test_invisible_ticks_axis4   s   


rP   zaxis_positions.pngFc                  C   s~   g d} t jddddid\}}t| | D ]%\}}|j|j|jfD ]}|| || q#| }|j	ddd|d	 qd S )
N)upperlowerbothnoner   r2   r0   r3   xyz)xlabelylabelzlabeltitle)
r@   r5   r$   flattenrK   rL   rM   set_label_positionset_ticks_positionset)	positionsrE   axsr%   posrO   r[   r+   r+   r,   test_axis_positions?   s   
rc   zaspects.pngc                  C   s   d} t jddddid\}}| dd D ]
}t|g d	d
 qt|d d g dd
 t| D ]\}}|| |  |d |j| | dd q3|d d d d S )N)autoequalequalxyequalyzequalxzre   r      r2   r0   r3   r   )r   r      r&   r   r   r   r   ri      rk   datalim
adjustablezequal (cube))r@   r5   r\   r-   	enumerate	set_titleset_box_aspect
set_aspect)aspects_ra   r%   ir+   r+   r,   test_aspectsK   s   
rz   zaspects_adjust_box.pngc                  C   sh   d} t jdt| ddidd\}}t|D ]\}}t|g dd || |  |j| | d	d
 qd S )N)rd   re   rf   rg   rh   r   r2   r0   )   ri   )r4   figsize)ro   ri   rk   rl   boxrq   )r@   r5   lenrs   r-   rt   rv   )rw   rE   ra   ry   r%   r+   r+   r,   test_aspects_adjust_box\   s   
r   c                  C   sZ   t  } | jdd}|d |d |d |d |d t|dks+J d S )	Nr0   r1   labelr[   rU   rV   rW   zV<Axes3D: label='label', title={'center': 'title'}, xlabel='x', ylabel='y', zlabel='z'>)	r@   rA   rB   	set_labelrt   
set_xlabel
set_ylabel
set_zlabelreprrD   r+   r+   r,   test_axes3d_repri   s   




r   zaxes3d_primary_views.pngdarwin皙?)r   tolc                  C   s   g d} t jddddid\}}t|jD ],\}}|d |d |d	 |d
 |j| | d | | d | | d d qt 	  d S )N))Z   r   r   r   r   r   r   r   )r   r   r   r   r   r   r      r   r   ri   r2   r0   r3   rU   rV   rW   orthor   r   elevazimroll)
r@   r5   rs   flatr   r   r   set_proj_type	view_inittight_layout)viewsrE   ra   ry   r%   r+   r+   r,   test_axes3d_primary_viewsv   s   



*r   z	bar3d.pngc               
   C   sv   t  } | jdd}tg dg dD ]%\}}td}td}|gt| }d|d< |j|||dd	|d
d qd S )Nr0   r1   )r'   gbrV   )      
   r   r   cr   rV   edge皙?)zszdiraligncoloralpha)r@   rA   rB   r$   r   aranger~   bar)rE   r%   r   rW   xsyscsr+   r+   r,   
test_bar3d   s   

r   c               
   C   s\   t  } | jdd}dD ]}tt|}t|}t|}|j|||ddd|d qd S )Nr0   r1   )redgreenblueyellowr   r   )r@   rA   rB   r   r   r~   
zeros_likebar3d)rE   r%   r   r   r   r   r+   r+   r,   test_bar3d_colors   s   

r   zbar3d_shaded.pngc               
   C   s   t d} t d}t | |\}}| | }}|| d }g d}tjtdt| d}|jdt|t	ddd}t
||D ]\}\}	}
}|j|||d	 dd|d
d |j|	|
|d qD|j  d S )Nro   rk   r   ))r   r   )r   r   r   )r   r   ),  r   r   r|   r0   r1   r3   r   Tshader   )r   r   meshgridravelr@   rA   	figaspectr~   r5   r6   r$   r   r   canvasdraw)rU   rV   x2dy2drW   r   rE   ra   r%   r   r   r   r+   r+   r,   test_bar3d_shaded   s   

r   zbar3d_notshaded.pngc               	   C   s|   t  } | jdd}td}td}t||\}}| | }}|| }|j|||d dd|dd | j	  d S )	Nr0   r1   ro   rk   r   r   Fr   )
r@   rA   rB   r   r   r   r   r   r   r   )rE   r%   rU   rV   r   r   rW   r+   r+   r,   test_bar3d_notshaded   s   

r   c            
         s   t  } | jddddd}tjddd}d\}}||  tt|t|\}}| }| }|| } fdd	t	 D }|j
||ddd||d
|d	}	tj||	jdd d d d S )Nr   r0   r1   r   r   )azdegaltdeg)ri   ro   c                    s   g | ]	}t |  qS r+   )r
   coolwarm).0ry   arear+   r,   
<listcomp>       z*test_bar3d_lightsource.<locals>.<listcomp>T)	rU   rV   rW   dxdydzr   r   lightsource   ro   )r@   rA   rB   mcolorsLightSourcer   r   r   r   ranger   testingassert_array_max_ulp_facecolor3d)
rE   r%   lslengthwidthrU   rV   r   r   
collectionr+   r   r,   test_bar3d_lightsource   s   
 r   zcontour3d.pngx86_64gMb`?c                  C   s   dt jd< t  } | jdd}td\}}}|j|||ddtjd |j|||d	d
tjd |j|||ddtjd |j	d
dd
dddd d S )NTaxes3d.automarginr0   r1   r   rW   r   offsetcmaprU   rV   (   d   )xminxmaxyminymaxzminzmax)
r@   rcParamsrA   rB   r   get_test_datacontourr
   r   rO   rE   r%   XYZr+   r+   r,   test_contour3d   s   
r   zcontour3d_extend3d.pngc               	   C   sp   dt jd< t  } | jdd}td\}}}|j|||ddtjdd |	d	d
 |
dd |dd d S )NTr   r0   r1   r   rW   r   )r   r   r   extend3dr   r   r   P   )r@   r   rA   rB   r   r   r   r
   r   set_xlimset_ylimset_zlimr   r+   r+   r,   test_contour3d_extend3d   s   
r   zcontourf3d.pngc                  C   s   dt jd< t  } | jdd}td\}}}|j|||ddtjd |j|||d	d
tjd |j|||ddtjd |	d
d |
d
d |dd d S )NTr   r0   r1   r   rW   r   r   rU   r   rV   r   r   )r@   r   rA   rB   r   r   contourfr
   r   r   r   r   r   r+   r+   r,   test_contourf3d   s   
r   zcontourf3d_fill.pngc                  C   s   dt jd< t  } | jdd}ttdddtddd\}}|dd}d	|d d d
d d d
f< |j|||dddgt	j
d |dd |dd |dd d S )NTr   r0   r1   r         ?r   皙?rk   皙)r   levelsr   rj   r   )r@   r   rA   rB   r   r   r   clipr   r
   r   r   r   r   r   r+   r+   r,   test_contourf3d_fill  s   
$r  zextend, levelsrS   )r   ro   r   min)r   ro   r      max)r   r   ro   r   c                 C   s   t t dddt ddd\}}|d |d  }tjd  }||d ||d dd|d	}|jd
d}	|	j	|||fdg di| | jd
d}
|
j	||||fd|i| |	|
fD ]}|
dd |dd |dd qbd S )Nr   r   r   viridisr      r      )vminvmaxr   r0   r1   r  )r   r   ro   r   r  extendr   )r   r   r   mpl	colormapscopy	set_underset_overrB   r   r   r   r   )r9   r:   r  r  r   r   r   r   kwargsax_refax_testr%   r+   r+   r,   test_contourf3d_extend  s   $r  ztricontour.png{Gz?)r   r   c                  C   s   dt jd< t  } tjd tjdd }tjdd }|d |d   }| jddddd	}|||| | jddddd	}|	||| d S )
NTr   i!N,        ?r   r   r0   r1   )
r@   r   rA   r   randomseedrandrB   
tricontourtricontourf)rE   rU   rV   rW   r%   r+   r+   r,   test_tricontour3  s   
r!  c                  C   sb   t  } | jdd}d\}}tdd|}tdd|}tjdd||g}||||dg d S )	Nr0   r1   )r   r   r  r   r   r   r  )r@   rA   rB   r   linspacer  randintr   )rE   r%   nxnyrU   rV   rW   r+   r+   r,   test_contour3d_1d_inputC  s   r&  zlines3d.pngc                  C   sv   t  } | jdd}tdtj dtj d}tddd}|d d }|t| }|t| }|||| d S )	Nr0   r1   ro   r   r   r   r   )	r@   rA   rB   r   r"  pisincosplot)rE   r%   thetarW   r'   rU   rV   r+   r+   r,   test_lines3dN  s   r-  c                 C   s<   | j dd}|dgdgd |j dd}|ddd d S )Nr0   r1   r   orB   r+  r9   r:   ax1ax2r+   r+   r,   test_plot_scalarZ  s   r3  c                  C   s|  t jtdd tdg g  W d    n1 sw   Y  t jtdd tg dg  W d    n1 s7w   Y  t jtdd tg g d W d    n1 sUw   Y  tg g g } t jtdd | dg g  W d    n1 szw   Y  t jtdd | g dg  W d    n1 sw   Y  t jtdd | g g d W d    d S 1 sw   Y  d S )Nz	x must bematchr   z	y must bez	z must be)pytestraisesRuntimeErrorr   Line3Dset_data_3d)rN   r+   r+   r,   test_invalid_line_datab  s&   "r;  zmixedsubplot.pngc            	   	   C   s   dd } t ddd}t ddd}dtjd< tjtd	d
}|ddd}|j|| |d|| |ddd |d |jddddd}t 	t dddt ddd\}}t 
||}t |}|j|||ddddd |dd d S )Nc                 S   s    t dt j |  t |   S )Nr   )r   r*  r(  exp)tr+   r+   r,   fu  s    ztest_mixedsubplots.<locals>.f              @r  r  Tr          @r   r   r   bozk--r   )markerfacecolorr0   r1   rk   r   r   r   F)rcountccount	linewidthantialiasedrj   )r   r   r@   r   rA   r   rB   r+  rC   r   hypotr)  plot_surface
set_zlim3d)	r>  t1t2rE   r%   r   r   Rr   r+   r+   r,   test_mixedsubplotss  s    
 
$
rO  c                 C   sP   | j dd}|jddddd |   |j dd}|  |jddddd d S )Nr0   r1   r  zsome strings)rB   textr   r0  r+   r+   r,   test_tight_layout_text  s   rS  zscatter3d.pngc                  C   s   dt jd< t  } | jdd}|jtdtdtdddd tdd	 } }}|j|||d
dd d|d< |jg g g ddd d S )NTr   r0   r1   r   r'   r.  )r   markerr   r   ^r   rj   r   r@   r   rA   rB   scatterr   r   rE   r%   rU   rV   rW   r+   r+   r,   test_scatter3d  s   
rY  zscatter3d_color.pngc                  C   s   dt jd< t  } | jdd}|jtdtdtddddd	 |jtdtdtddddd	 |jtdd
tdd
tdd
ddd d S )NTr   r0   r1   r   r'   rT   r.  )	facecolor	edgecolorrT  r   r   rQ  )r   rT  rV  rD   r+   r+   r,   test_scatter3d_color  s   
"
r\  zscatter3d_linewidth.pngc                  C   sD   t  } | jdd}|jtdtdtddtdd d S )Nr0   r1   r   r.  )rT  rG  )r@   rA   rB   rW  r   r   rD   r+   r+   r,   test_scatter3d_linewidth  s
   

r]  c                 C   s|   |j dd}|jtdtdtddd}|td | j dd}|jtdtdtddtdd d S )Nr0   r1   r   r.  rT  )rT  
linewidths)rB   rW  r   r   set_linewidthsr:   r9   r  r   r  r+   r+   r,   %test_scatter3d_linewidth_modification  s   
rb  c                 C   s   |j dd}|jtdtdtddd}|d |d |dd	gd
  | s1J |d | r<J |	t
dd |d | j dd}|jtdtdtdddddd	gd
 dddd
 d S )Nr0   r1   r   r.  r^  C1C2333333?ffffff?rk   FK   ri   )rT  rZ  r[  r   
depthshaderQ  r_  )rB   rW  r   r   set_facecolorset_edgecolor	set_alphaget_depthshadeset_depthshade	set_sizesfullr`  ra  r+   r+   r,   test_scatter3d_modification  s"   




rp  rh  c                 C   s0  t jddddf \}}t |j|j}t |jd}d|ddddddf< d|ddddddf< t |jd}d	|dd
dd
f< d|ddddf< d|ddddf< t |jd}d|dd
dd
f< d|d
ddd
f< d|d
dd
df< t |jd}	d
|	ddddddf< d
|	ddddddf< dd |||||||	fD \}}}}}}}	| jdd}
dd ||||	fD }tj	| D ]7\}}}}||k||kB ||kB |	|kB }t j
j||td}t |t|j }|
j|||||||d|d	 q|jdd}|j|||||||	d|d	 dS )z1Test that marker properties are correctly sorted.Nr      r   r   r   r   C0rc  rk   rd  r   ro   C3C4C5C6	   C7c                 s   s    | ]}|  V  qd S N)r\   r   ar+   r+   r,   	<genexpr>  s
    
z)test_scatter3d_sorting.<locals>.<genexpr>r0   r1   c                 s   s    | ]}t |V  qd S ry  )r   uniquerz  r+   r+   r,   r|    s    dtype)rQ  fceclwr   rh  )r   mgridr   sizereshapeshapero  rB   r   r    mamasked_arrayfloatrepeatr!   maskrW  )r:   r9   rh  rV   rU   rW   sizes
facecolors
edgecolorsr_  r  setsrQ  r  r  r  subsetr  r+   r+   r,   test_scatter3d_sorting  sN   
r  r      c              	   C   s   ddg}ddg}ddg}ddg}| j dd}|j|||d|d	 |jd|dd
 |j dd}|j|ddd |ddd |ddd d|ddd d	 |j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.
    rj   r   r   r   rV   r0   r1     rQ  r   r   N)rB   rW  r   r9   r:   r   rU   rV   rW   r   r%   r+   r+   r,   $test_marker_draw_order_data_reversed  s   	<r  c              	   C   s   d}ddg}ddg}ddg}ddg}| j dd}|  |j|||d	|d
 |jd|dd |j dd}|  |j|||d	|ddd d
 |jd|d d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  rj   r   r   r   rV   r0   r1   r  r  r   Nr   )rB   set_axis_offrW  r   r  r+   r+   r,   #test_marker_draw_order_view_rotated2  s   r  zplot_3d_from_2d.pngg~jt?c                  C   sT   t  } | jdd}tdd}tdd}|j||ddd |j||ddd d S )	Nr0   r1   r   rk   r   rU   r   r   rV   )r@   rA   rB   r   r   r+  )rE   r%   r   r   r+   r+   r,   test_plot_3d_from_2dJ  s   r  zfill_between_quad.pngc            
      C   s   t  } | jdd}tddtj d}t|}t|}dtd|  }dt| }dt| }d}|tjd k |d	tj d kB }	|j|||||||	d
ddd
 d S )Nr0   r1   r   r   2   r  r   333333?ri   rd   r  k)wheremoder   r[  )	r@   rA   rB   r   r"  r(  r*  r)  fill_between)
rE   r%   r,  x1y1z1x2y2z2r  r+   r+   r,   test_fill_between_quadT  s   

 
r  zfill_between_polygon.pngc            
      C   s   t  } | jdd}tddtj d}| }}d }}t|}|d }|tjd k |dtj d kB }	|j|||||||	dd	d
	 d S )Nr0   r1   r   r   r  r   ri   rd   r  )r  r  r[  )r@   rA   rB   r   r"  r(  r*  r  )
rE   r%   r,  r  r  r  r  r  r  r  r+   r+   r,   test_fill_between_polygonk  s   
 
r  zsurface3d.pngc               
   C   s   dt jd< t  } | jdd}tddd}tddd}t||\}}t||}t|}|j	|||ddt
jd	dd
}dt jd< |dd | j|ddd d S )NFzpcolormesh.snapr0   r1   rD  rk   r   r   r   )rE  rF  r   r  rH  Tr   )\()\(?r  )shrinkaspect)r@   r   rA   rB   r   r   r   rI  r)  rJ  r
   r   r   colorbar)rE   r%   r   r   rN  r   surfr+   r+   r,   test_surface3d~  s   


r  z(surface3d_label_offset_tick_position.pngc                  C   s   dt jd< t  jdd} tjddtj dddtj df \}}ttt	|t	| }| j
|d	 |d
 |d dddd | d | d | d d S )NTr   r0   r1   r   r   r   ro   g     j@g    .Ag    חAautumnr   )r   cstriderstridezX labelzY labelzZ label)r@   r   rA   rB   r   r  r(  sqrtr"   r*  rJ  r   r   r   )r%   rU   rV   rW   r+   r+   r,   )test_surface3d_label_offset_tick_position  s   
* "

r  zsurface3d_shaded.pngc               
   C   s   t  } | jdd}tddd}tddd}t||\}}t|d |d  }t|}|j|||ddg ddd	d
 dt j	d< |
dd d S )Nr0   r1   rD  rk   r   r   )r   r   r   r   F)r  r  r   r  rH  Tr   r  r  )r@   rA   rB   r   r   r   r  r)  rJ  r   r   )rE   r%   r   r   rN  r   r+   r+   r,   test_surface3d_shaded  s   


r  zsurface3d_masked.pngc                  C   s   t  } | jdd}g d}g d}t||\}}tg dg dg dg dg d	g d
g dg dg}tj|d}tj	|
 | d}tjd ||}|j||||d |ddd d S )Nr0   r1   )r   r   ri   ro   rk   r   r  r  rw  r   r{   )r   r   ri   ro   rk   r   r  r  )rj   r   r   r   r   r   r   r   r   r   r   )rj   r   r   ri   ro   ro   ro   ri   r   r   r   )rj         ro   rk   r   r  r   rk   ro   ri   r  )rj   r  r  r  r{      r{   r  r  r  r  )rj   r  r  rw  r      r   rw  r   r  r  )rj   r  r  r  r  r   r  r  r{   r  r  )rj   r  r  r        r  r      r  r  )rj   r  r  r  r        rq  r  r  r  r   )r  r  plasmar  r   r   )r@   rA   rB   r   r   r   r  masked_lessr   	Normalizer  r  r  r  rJ  r   )rE   r%   rU   rV   matrixrW   normr   r+   r+   r,   test_surface3d_masked  s*   r  c           	      C   s   t ddd}t ddd}t |t | }|dk}t jj||d}| jdd}|||| |||| t j	 ||<  ||< ||< |jdd}|||| |||| d S )Nr   r   r   )r  r0   r1   )
r   r"  r)  r*  r  r   rB   rW  r+  nan)	r9   r:   rU   rV   rW   r  z_maskedr  r  r+   r+   r,   test_plot_scatter_masks  s   r  c                 C   s`   t t dt d\}}|| }| jdd}|j|||d d |jdd}|||| d S )Nrk   r0   r1   r  )r   r   r   rB   rJ  )r9   r:   rU   rV   rW   r  r  r+   r+   r,   test_plot_surface_None_arg  s   r  zsurface3d_masked_strides.pngc                  C   sj   t  } | jdd}tjddddddf \}}tj|| d}|j|||ddd |d	d
d d S )Nr0   r1   igffffff@r   r   ro   r  r  <   r   )	r@   rA   rB   r   r  r  r  rJ  r   rX  r+   r+   r,   test_surface3d_masked_strides  s   r  z
text3d.pngc                  C   s   t  } | jdd}d}d}d}d}t||||D ]\}}}}	d|||	|f }
||||	|
| q|jdddd	d	d
 |jddd|jd dt jd< |dd |	dd |
dd |d |d |d d S )Nr0   r1   NrU   rV   rW   r   r   r   rm   r   r   ro   rw  r  r   r   ro   r  r  r   r   ro   r   rk   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)r@   rA   rB   r$   rR  text2D	transAxesr   
set_xlim3d
set_ylim3drK  r   r   r   )rE   r%   zdirsr   r   r   r   rU   rV   rW   r   r+   r+   r,   test_text3d  s$   


r  c                 C   s  d}d}d}d}|j dd}|dd |dd |dd t||||D ]$\}}}	}
|dddd	| d
|	 d
|
 d| }|j||	|
f|d q'| j dd}|dd |dd |dd t||||D ]\}}}	}
|j||	|
d	| d
|	 d
|
 d| |d qkd S )Nr  r  r  r  r0   r1   r   r   (z, z), dir=)r   )rB   r  r  rK  r$   rR  set_position_3d)r:   r9   r  r   r   r   r  r   rU   rV   rW   r=  r  r+   r+   r,   test_text3d_modification
  s$   (.r  ztrisurf3d.pnggZd;?c            	      C   s   d} d}t dd|}t jddt j | dd}t j|d	t jf |d
d}|d d d
d df  t j|  7  < t d|t |  }t d|t |  }t | | }t	
 }|jdd}|j|||tjdd d S )N$   r        ?      ?r   r   Fendpoint.r   rO   r0   r1   皙?)r   rG  )r   r"  r(  r  newaxisappendr*  r\   r)  r@   rA   rB   plot_trisurfr
   jet	n_anglesn_radiiradiianglesrU   rV   rW   rE   r%   r+   r+   r,   test_trisurf3d#  s   $r  ztrisurf3d_shaded.pngQ?c            	      C   s   d} d}t dd|}t jddt j | dd}t j|d	t jf |d
d}|d d d
d df  t j|  7  < t d|t |  }t d|t |  }t | | }t	
 }|jdd}|j|||g ddd d S )Nr  r  r  r  r   r   Fr  .r   r  r0   r1   )r   r  r   r  )r   rG  )r   r"  r(  r  r  r  r*  r\   r)  r@   rA   rB   r  r  r+   r+   r,   test_trisurf3d_shaded5  s   $r  zwireframe3d.pngc                  C   s<   t  } | jdd}td\}}}|j|||ddd d S )Nr0   r1   r      rE  rF  r@   rA   rB   r   r   plot_wireframer   r+   r+   r,   test_wireframe3dG     r  zwireframe3dzerocstride.pngc                  C   <   t  } | jdd}td\}}}|j|||ddd d S )Nr0   r1   r   r  r   r  r  r   r+   r+   r,   test_wireframe3dzerocstrideO  r  r  zwireframe3dzerorstride.pngc                  C   r  )Nr0   r1   r   r   r   r  r  r   r+   r+   r,   test_wireframe3dzerorstrideW  r  r  c                  C   sh   t  } | jdd}td\}}}tt |j|||ddd W d    d S 1 s-w   Y  d S )Nr0   r1   r   r   r  )	r@   rA   rB   r   r   r6  r7  
ValueErrorr  r   r+   r+   r,    test_wireframe3dzerostrideraises_  s   "r  c                  C   s   t  } | jdd}td\}}}tt |j|||ddd W d    n1 s,w   Y  tt |j	|||ddd W d    d S 1 sLw   Y  d S )Nr0   r1   r   r   r  )r  rF  )r  rE  )
r@   rA   rB   r   r   r6  r7  r  r  rJ  r   r+   r+   r,   test_mixedsamplesraisesg  s   "r  zquiver3d.pngg~jth?c                  C   s   dt jd< t  } | jdd}g d}g d}tt||D ]<\}\}}tddgddgddg\}}}	| }
| }|	 }|	d	| 7 }	|j|||	|
||d
||d	 |j	|||	|d q|
dd |dd |dd d S )NTr   r0   r1   )tipmiddletail)ztab:bluez
tab:orangez	tab:green      r  r   r   )r   pivotr   r   ri   rj   rk   )r@   r   rA   rB   rs   r$   r   r   quiverrW  r   r   r   )rE   r%   pivotsr   ry   r   r   rU   rV   rW   uvwr+   r+   r,   test_quiver3dr  s    
 r  c           	      C   sP   |j dd g  } } } } }}| j dd}|j||||||dddd	 d S )Nr0   r1   r  r  Tr   r   	normalize)rB   r  )	r9   r:   rU   rV   rW   r  r  r  r%   r+   r+   r,   test_quiver3d_empty  s    r
  zquiver3d_masked.pngc                  C   s.  t  } | jdd}tjdddddddddf \}}}ttj| ttj|  ttj|  }ttj|  ttj|  ttj|  }dttj|  ttj|  ttj|  }tjj	d	|k |d
k @ |dd}tjj	d
|k |dk @ |dd}|j
||||||d
ddd	 d S )Nr0   r1   rj   r   y              $@r  y              @g>,p ?皙ٿr  F)r  rf  r  Tr  )r@   rA   rB   r   r  r)  r(  r*  r  masked_wherer  )rE   r%   rU   rV   rW   r  r  r  r+   r+   r,   test_quiver3d_masked  s   (024 r  zquiver3d_colorcoded.pngc            	   	   C   st   t  } | jdd}td } } }}td }}t j||  }|j	|||||||d |
dd d S )Nr0   r1   r         $@)r   r   )r@   rA   rB   r   zerosr   r
   Redsr  r  r   )	rE   r%   rU   rV   r   r   rW   r   r   r+   r+   r,   test_quiver3d_colorcoded  s   r  c                  C   sp   t  } | jdd}td}|| t| |d t	|
 ds'J | j  t	|
 ds6J d S )Nr0   r1   r   r   )r  r?  r?  r   )r   r   r   r   )r@   rA   rB   r   	add_patchr   patch_2d_to_3dri  r   
same_colorget_facecolorr   r   )rE   r%   circler+   r+   r,   test_patch_modification  s   



r  c                 C   s   t dd}t dd}tg dg dg}tj||gdd}| jd	d
}|| |d || |	d |
 s>J |d |
 rIJ t dd}t dd}tg dg dg}tj||gdd|ddd}|jd	d
}|| d S )Nr  r   )r  r  r  )r?  r  r?  r  )r  r?  r?  r  ri   )r_  r0   r1   rd  rf  F)r_  r[  rZ  r   rh  )r   r   r   r   Patch3DCollectionrB   add_collection3drj  ri  rk  rl  rm  )r9   r:   patch1patch2r  r   r  r  r+   r+   r,   "test_patch_collection_modification  s*   








r  c                  C   s   g dg dg dg dg} t jtdd t|  W d    n1 s%w   Y  tj| td} t jtdd t|  W d    d S 1 sIw   Y  d S )Nr   r   r   r   r   r   r   r   r   r   zlist of \(N, 3\) array-liker4  r~  )r6  r7  r  r   Poly3DCollectionr   r   r  )polyr+   r+   r,   &test_poly3dcollection_verts_validation  s   "r#  zpoly3dcollection_closed.pngc                  C   s   t  } | jdd}tg dg dg dgt}tg dg dg dgt}tj|gdd	d
dd}tj|gdd	ddd}|j|dd |j|dd d S )Nr0   r1   r  r  r   rm   r  ri   r  )r  r  r   r  Tr_  r[  rZ  closed)r   r  r  r  Fautolim)	r@   rA   rB   r   r   r  r   r!  r  rE   r%   poly1poly2c1c2r+   r+   r,   test_poly3dcollection_closed  s   r-  c                  C   sv   t g } t|  t| tjsJ |  g ksJ tjtddd\}}|	|  | 
 }t|s4J |j  d S )Nr0   r1   r3   )r   r   poly_collection_2d_to_3d
isinstancer!  	get_pathsr@   r5   r6   
add_artistdo_3d_projectionr   isnanr   r   )r"  rE   r%   minzr+   r+   r,   #test_poly_collection_2d_to_3d_empty  s   

r5  zpoly3dcollection_alpha.pngc                  C   s   t  } | jdd}tg dg dg dgt}tg dg dg dgt}tj|gdd	d
dd}|d tj|gddd}|	d |
d	 |d |j|dd |j|dd d S )Nr0   r1   r  r  r   rm   r  ri   r  r  r  r   Tr$  r  F)r_  r%  )r   r  r  r&  )r@   rA   rB   r   r   r  r   r!  rk  ri  rj  r  r(  r+   r+   r,   test_poly3dcollection_alpha   s   



r7  zadd_collection3d_zs_array.pngc                  C   sL  t dt j dt j d} t ddd}|d d }|t |  }|t |  }t |||gddd}t j|d d |dd  gdd	}t	 }|j
d
d}tddt j }	t|d d d d d df d|	d}
|
t | dt j  |j|
|d d d d df d}|d usJ dtjd< |dd |dd |dd d S )Nr'  ro   r   r   r   r   rj   ri   r  r0   r1   r   twilightr   r  r   Tr   rD  rk   r   )r   r"  r(  r)  r*  column_stackr  concatenater@   rA   rB   r  r   	set_arraymodr  r   r   r   r   r,  rW   r'   rU   rV   pointssegmentsrE   r%   r  lcrN   r+   r+   r,   test_add_collection3d_zs_array  s$   "$ 
rC  zadd_collection3d_zs_scalar.pngc                  C   s  t ddt j d} d}|d d }|t |  }|t |  }t ||gddd}t j|d d |dd  gdd}t	 }|j
dd}tddt j }	t|d	|	d
}
|
|  |j|
|d}|d usiJ dtjd< |dd |dd |dd d S )Nr   r   r   r   rj   r  r0   r1   r8  r9  r:  Tr   rD  rk   r'  r   )r   r"  r(  r)  r*  r;  r  r<  r@   rA   rB   r  r   r=  r  r   r   r   r   r?  r+   r+   r,   test_add_collection3d_zs_scalar0  s$   "

rD  c                  C   s~   t  } | jdd}ddgddgddgg}t|}|| t| d	s)J t|	 d
s3J t|
 ds=J d S )Nr0   r1   r   )r   ro   r   r   r   ri   )r   r   r   r   r   ro   )r   ro   rk   )gUUUUUUgUUUUUU @)gUUUUUUUUUUUU@)ggj@)r@   rA   rB   r   Line3DCollectionr  r   allclose
get_xlim3d
get_ylim3d
get_zlim3d)rE   r%   linesrB  r+   r+   r,   !test_line3dCollection_autoscalingK  s   

rN  c                  C   s   t  } | jdd}tg dg dg dg}t|g}|| t|	 ds-J t|
 ds7J t| dsAJ d S )Nr0   r1   r   rE  rF  UUUUUUgUUUUUU?)gSUUUUUrG  )r@   rA   rB   r   r   r   r!  r  rI  rJ  rK  rL  )rE   r%   r"  colr+   r+   r,   !test_poly3dCollection_autoscalingZ  s   
rR  zaxes3d_labelpad.pngc                  C   s   t  } | t| }|jjtjd ksJ |jddd |jjdks%J |	d |j
ddd |jjdks9J | dksAJ d|j_d|j_t|j D ]\}}|| d	 |d	   qPd S )
Nzaxes.labelpadzX LABELr   )labelpadzY LABELzZ LABELr   r   rk   )r@   rA   add_axesr   rK   rS  r  r   r   r   r   rM   
get_zlabelrL   rs   get_major_ticksset_padget_pad)rE   r%   ry   tickr+   r+   r,   test_axes3d_labelpade  s   
rZ  zaxes3d_cla.pngc                  C   s.   t  } | jddddd}|  |  d S )Nr   r0   r1   )r@   rA   rB   r  clarD   r+   r+   r,   test_axes3d_cla|  s   r\  zaxes3d_rotated.pngc                  C   s,   t  } | jddddd}|ddd d S )Nr   r0   r1   r   -   r   )r@   rA   rB   r   rD   r+   r+   r,   test_axes3d_rotated  s   r^  c                  C   s   t jdddd} t jdddd}t | |\}}t jd}tjdd}|jdddd	d
}t	t
 |||| W d    d S 1 sEw   Y  d S )Nr  r   r   )num)   r   r   r   r   r0   r1   )r   r"  r   r  randnr@   rA   rB   r6  r7  r  rJ  )rU   rV   r   r   rW   rE   r%   r+   r+   r,   test_plotsurface_1d_raises  s   "rb  c            
      C   sr   t g d} t g d}t g d}d}t| |||\}}}t|||| }tddd}t ||}	|	S )N)r  ii  )r   r   r   r  r   r   r   r   )r   r   r   
_view_axes_view_transformation_uvw_persp_transformationdot)
ErN  Vr   r  r  r  viewMperspMMr+   r+   r,   _test_proj_make_M  s   rl  c                  C   s   t  } tj| }tg dd }tg dd }tg dd }t|||| \}}}t||||\}}	}
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   )
rl  r   linalginvr   r   proj_transforminv_transformr   assert_almost_equal)rk  invMr   r   r   txstystzsixsiysizsr+   r+   r,   test_proj_transform  s   r}  r   c                 O   s   d|ddg}dd|dg}ddd|g}t |||| \}}}	t||\}
}}}|
|f|
|f|
|fg}tj|i |\}}t|}|| t||g dD ]\}}}|||| qL||fS )Nr   )r.  rU   rV   rW   )r   rs  r$   r@   r5   r   add_collectionrR  )rk  rQ  argsr  r   r   r   rw  rx  ry  r.  r%   ayazrM  rE   linecrU   rV   r=  r+   r+   r,   _test_proj_draw_axes  s   
r  zproj3d_axes_cube.pngc                  C   s   t  } d }tg dd }tg dd }tg dd }t|||| \}}}t| dd\}}	|	j|||d |	j||d	d t	|||D ]\}
}}|	
|
|| qKd
tjd< |	dd |	dd d S )N0 1 2 3 0 4 5 6 7 4rm  rn  ro  rp  i  rP  r   r'   Tr   皙ɿr  )rl  splitr   r   r   rs  r  rW  r+  r$   rR  r@   r   r   r   )rk  tsr   r   r   rw  rx  ry  rE   r%   rU   rV   r=  r+   r+   r,   test_proj_axes_cube  s   
r  zproj3d_axes_cube_ortho.pngc                  C   s@  t g d} t g d}t g d}d}t| |||\}}}t|||| }tdd}t ||}	d }
t g dd	 }t g d
d	 }t g dd	 }t||||	\}}}t	|	dd\}}|j
||d| d |j||dd t|||
D ]\}}}|||| qdtjd< |dd |dd d S )N)   r   r   r   r  r   rj   r   r  rm  r   ro  rp     rP  r   r'   r  Tr   i8r  )r   r   r   rc  rd  _ortho_transformationrf  r  rs  r  rW  r+  r$   rR  r@   r   r   r   )rg  rN  rh  r   r  r  r  ri  orthoMrk  r  r   r   r   rw  rx  ry  rE   r%   rU   rV   r=  r+   r+   r,   test_proj_axes_cube_ortho  s*   
r  c                  C   sV   d\} }d\}}d\}}t | |||||}tj|g dg dg dg dg d S )N)r   x   )r   r   )r  r  )r   r   r   rD  )r   g{Gzt?r   r  )r   r   r  rj   r   r   r   r   )r   world_transformationr   r   assert_allclose)r   r   r   r   r   r   rk  r+   r+   r,   
test_world  s   r  c                  C   s   t jddid\} }| dksJ d|_|jdddd |dd	gdd	gdd	g | d
ks2J |d |d |ddgddgddg | dksQJ |jdd |ddgddgddg | dkslJ d S )Nr2   r0   r3   linearr   r  r  rU   rV   rW   r   )r   r   r  皙?r  g333333?FTr   )r   r   r  r  r  333333@rU   r  )r   r   r  r  r  r  )	r@   r5   
get_zscale_view_marginmarginsr+  
get_w_lims	autoscaleset_autoscalez_onrD   r+   r+   r,   test_autoscale  s   

r  rO   r  rd   )TFNc           
      C   s   t  }|jdd}td}tddd}||| t|d|  d}t|d|  d	}t|d
|  d	}|d u r>| n|}	|d|d |	| ksMJ |j	  tj
| d d S )Nr0   r1   r   r  r  get_autoscale_onset_limget_)r  r  )rd   )r@   rA   rB   r   r   r"  rW  getattrr   r   r   assert_array_equal)
rO   rd   rE   r%   rU   rV   get_autoscale_onset_limget_lim	post_autor+   r+   r,   test_unautoscale  s   

r  c           
      C   s   d}t | |f|D ]8\}}|jdd}t|d }td||}t|}t|}	||||	d |jdddd |	d	d
d q	d S )N)r   r  r0   r1   r   r   r  )rD  rk   xlimylimzlimrk   r   )
r$   rB   r"   r   r"  onesr  r+  r_   r   )
r9   r:   xminsrE   r   r%   nr   r   r   r+   r+   r,   test_culling.  s   

r  c                  C   s   t  } | jdd}tt |jddd W d    n1 s!w   Y  tt |jddd W d    d S 1 s>w   Y  d S )Nr0   r1   perspr   focal_lengthr   r   )r@   rA   rB   r6  r7  r  r   rD   r+   r+   r,   test_axes3d_focal_length_checks=  s   "r  zaxes3d_focal_length.pngc                  C   sB   t jddddid\} }|d jdtjd |d jdd	d d S )
Nr   r   r2   r0   r3   r   r  r  333333?)r@   r5   r   r   inf)rE   ra   r+   r+   r,   test_axes3d_focal_lengthF  s   r  zaxes3d_ortho.pngc                  C   r>   )Nr0   r1   r   )r@   rA   rB   r   rD   r+   r+   r,   test_axes3d_orthoN  rG   r  zaxes3d_isometric.pngc               	   C   s   ddl m} m} tjtddddd\}}d}| tt||||d	D ]\}}t	|| 
 |d
 |d  krD|jt||ddi q%|jttdtd	 ddd |d d S )Nr   )r   r    r0   r   )ro   ro   ro   )r2   	proj_type
box_aspectr3   )rj   r   r   r   r   r  r  r  r   T)r   r   r    r@   r5   r6   r   r   r   r"   r!   r#   r$   r   degreesarctanr  rC   )r   r    rE   r%   r'   rQ  er+   r+   r,   test_axes3d_isometricU  s   $ &r  c           	   
   C   sP  | j dd}tddd}tddd}t||\}}|| }|j|||dd dddd	 |jd
d
gddgd
dgddddd |j| | | d dd |j| | | d d|  d|  d|  d ddd |j|d |d |d d ddd |j	dd
dddd |j
dddd |j dd}|d
k}|| dd}|| dd}|| dd}|j|||dd dddd	 |jd
d
gddgd
dgddddd |j| | | d dd |j| | | d d|  d|  d|  d ddd |j|d |d |d d ddd |j
dddd d S )Nr0   r1   r   r   r{   rc  r  T)rZ  r  rE  rF  
axlim_clipr        ?r  ri   rk   )r   rG  zorderr  )r  r   )arrow_length_ratior  rd  )r   r  r  ro   test)r   r  r   r   )r   rk   r  r   F)rB   r   r"  r   rJ  r+  rW  r   r  rR  r_   r  )	r9   r:   r%   rU   rV   r   r   r   idxr+   r+   r,   test_axlim_clipe  sJ   ""$""$r  value)setterside))r  left)r  right)r  bottom)r  top)rK  r  )rK  r  c                 C   s`   ||i}t  }|jdd}tt t|| di | W d    d S 1 s)w   Y  d S )Nr0   r1   r+   )r@   rA   rB   r6  r7  r  r  )r  r  r  limitrE   objr+   r+   r,   test_invalid_axes_limits  s   
"r  c                   @   s   e Zd Zedgdddd Zedgdddd Zed	gddd
d Zedgdddd Zedgdddd Zedgdddddd Z	dd Z
dS )
TestVoxelszvoxels-simple.pngr<   r=   c                 C   sB   t jddid\}}td\}}}||k||kB }|| d S )Nr2   r0   r3   )rk   ro   ri   )r@   r5   r   indicesvoxels)selfrE   r%   rU   rV   rW   r  r+   r+   r,   test_simple  s   zTestVoxels.test_simplezvoxels-edge-style.pngc                 C   sv   t jddid\}}td\}}}|d d |d d  |d d  dk }|j|dd	d
}|t|  d d S )Nr2   r0   r3   )rk   rk   ro   r   r  g](\@ri   rc  )r_  r[  rd  )r@   r5   r   r  r  r  keysrj  )r  rE   r%   rU   rV   rW   r  r  r+   r+   r,   test_edge_style  s
   (zTestVoxels.test_edge_stylezvoxels-named-colors.pngc                 C   s   t jddid\}}td\}}}||k||kB }||| | dk  @ }tjddtjd}d||d	k |d	k @ < d
||| dk < |j||d dS )z5Test with colors set to a 3D object array of strings.r2   r0   r3   r   r   r   r   rr  r~  z0.25rk   cyanr   r  N)r@   r5   r   r  ro  object_r  r  rE   r%   rU   rV   rW   r  r   r+   r+   r,   test_named_colors  s   zTestVoxels.test_named_colorszvoxels-rgb-data.pngc                 C   st   t jddid\}}td\}}}||k||kB }td}|d |d< |d |d< |d |d	< |j||d
 dS )z5Test with colors set to a 4d float array of rgb data.r2   r0   r3   r  )r   r   r   ri   rw  .r   .r   .r   r  N)r@   r5   r   r  r  r  r  r+   r+   r,   test_rgb_data  s   
zTestVoxels.test_rgb_datazvoxels-alpha.pngc                 C   s   t jddid\}}td\}}}||k}t|| dk }||B }td}	g d|	|< g d|	|< |j||	d	}
t|
tu sCJ |
	 D ]\}}|| sSJ d
t
|tjs[J qGd S )Nr2   r0   r3   r  r   )r   r   r   ro   )r   r   r   r  )r   r   r   r  r  zfaces returned for absent voxel)r@   r5   r   r  r"   r  r  typer6   itemsr/  r   r!  )r  rE   r%   rU   rV   rW   v1v2r  r   r  coordr"  r+   r+   r,   
test_alpha  s   
zTestVoxels.test_alphazvoxels-xyz.png{Gz?F)r   r   r   c                 C   s   t jddid\}}dd }tdd \}}}||}||}||}	|d d	 |d d	  |	d d	  d
k }
t|
jd }||d< ||d< |	|d< |j||||
|td	| d dddd d S )Nr2   r0   r3   c                 S   sZ   d}t | jD ]#}| |tjd d   | |tjdd     d } |tjd d  7 }q| S )Nr+   rj   r   rA  )r   ndimr   	index_exp)rU   slry   r+   r+   r,   	midpoints  s   z&TestVoxels.test_xyz.<locals>.midpoints)   r  r  g      0@r  r   r   )ri   r  r  r  r   r   )r  r  rG  )r@   r5   r   r  r  r  r  r  )r  rE   r%   r  r'   r   r   rcgcbcspherer   r+   r+   r,   test_xyz  s    	(
zTestVoxels.test_xyzc           	      C   sl  t d\}}}t d}tjddid\}}t tddfD ].}|j|fi | |jdd|i| |j||||fi | |j|||fd|i| qtjt	d	d
 |j|||||d W d    n1 sjw   Y  tjt	d	d
 ||| W d    n1 sw   Y  tjt
dd
}|j||||d W d    n1 sw   Y  |jjdksJ d S )Nrn   )r   ri   ro   r2   r0   r3   r  )r[  filledr  r4  )r  zkeyword argument 'x')r  rU   rV   rW   rU   r+   )r   r  r  r@   r5   r6   r  r6  r7  	TypeErrorAttributeErrorr  name)	r  rU   rV   rW   r  rE   r%   kw	exec_infor+   r+   r,   test_calling_conventions  s$   
z#TestVoxels.test_calling_conventionsN)__name__
__module____qualname__mpl3d_image_comparisonr  r  r  r  r  r  r  r+   r+   r+   r,   r    s     






 r  c            
      C   s
  ddgddgddg} }}ddgd	d
gddg}}}t  }|jdd}|| ||}|d }	tj| ||f|	  |	||| tj|||f|	  |		|  |	
| |	j|dd tj| ||f|	  |	jddd tj| |t|f|	  d S )Nr   r   r   ri   ro   rk   r   r  r  rw  r   r{   r0   r1   rW   r  )r@   rA   rB   r+  r   r   r  get_data_3dr:  	set_xdata	set_ydataset_3d_propertiesr   )
rU   rV   rW   r  r  r  rE   r%   rM  rN   r+   r+   r,   test_line3d_set_get_data_3d  s   

"r  c                 C   s`   | j dd}|g dg dg d |  |j dd}|  |g dg dg d d S )Nr0   r1   )r   r   r   r   )r   r   r   r   )r   r   r   r   )rB   r+  invert_yaxisr8   r+   r+   r,   test_inverted+  s   r  c                  C   s   t jddid\} }| rJ | rJ | rJ |dd |dd |dd | s4J | s:J | s@J |  | rJJ | rPJ | rVJ d S )Nr2   r0   r3   r   r   )	r@   r5   xaxis_invertedyaxis_invertedzaxis_invertedr   r   r   r[  rD   r+   r+   r,   test_inverted_cla7  s   r	  c                  C   s   t  } t| }|jddd |jddd |jddd | j  |j D ]
}|jj	dks1J q'|j
 D ]
}|jj	dksAJ q7|j D ]
}|jj	dksQJ qGd S )NrU   r   )rO   r   rV   rW   )r@   rA   r   tick_paramsr   r   rK   rV  	tick1line_colorrL   rM   )rE   r%   rY  r+   r+   r,   test_ax3d_tickcolourK  s   
r  c           	      C   s  | j ddddid}|jD ]}|dd qt|g dD ]=\}}|d	 j|d
d |d j|dd |d j|tjd  d |d j|tjd  d |d j|tjd  d qdd }|j ddddid}|jD ]}|dd qlt|dgdgdgg dgD ][\}}||d	 |D ]}|d q||d |D ]}|d q||d |D ]}|	tjd   q||d |D ]}|
tjd   q||d |D ]}|tjd   qqd S )Nro   rk   r2   r0   r3   g    cAg   @cA)rU   rV   rW   rS   r   plain)rO   r   r   )r   r   )rO   	scilimitsr   zaxes.formatter.useoffset)rO   	useOffsetri   zaxes.formatter.use_locale)rO   	useLocalezaxes.formatter.use_mathtext)rO   useMathTextc                    s    fdd|D S )Nc                    s   g | ]	}t  | qS r+   )r  get_major_formatter)r   r  r%   r+   r,   r   o  r   zAtest_ticklabel_format.<locals>.get_formatters.<locals>.<listcomp>r+   )r%   namesr+   r  r,   get_formattersn  s   z-test_ticklabel_format.<locals>.get_formattersrK   rL   rM   )rK   rL   rM   F)r5   r   r   r$   ticklabel_formatr  r   set_scientificset_powerlimitsset_useOffsetset_useLocaleset_useMathText)	r9   r:   ra   r%   rowr  r  r  fmtr+   r+   r,   test_ticklabel_format\  sR   



r  c                 C   s   d}t t dddt dddt ddd\}}}t | } }}t|| fdD ]\}	}
|	jdd}|j|||||||
|d	 q+d S )
Nr  gr   r  r   )r   r  r0   r1   )r   r   )r   r   r   	ones_liker$   rB   r  )r9   r:   r   rU   rV   rW   r  r  r  rE   r   r%   r+   r+   r,   test_quiver3D_smoke  s   
r!  zminor_ticks.pngc                  C   st   t  jdd} | jdgdd | jdgdd | jdgdd | jdgdd | jd	gdd | jd
gdd d S )Nr0   r1   r   T)minorquartergQ?thirdr  half)	r@   rA   rB   rH   set_xticklabelsrI   set_yticklabelsrJ   set_zticklabelsr  r+   r+   r,   test_minor_ticks  s   r)  zerrorbar3d_errorevery.pngc            
   	   C   s   t ddt j d d} t | t d|  t d|  }}}t }|jdd}d	}t | j}|| dk|| d dk@ }|| dk|| d dk@ }	|j	|||d
||	|d dS )z0Tests errorevery functionality for 3D errorbars.r   r   r  r  ri   rk   r0   r1      r  )zuplimszlolims
erroreveryN)
r   r   r(  r)  r*  r@   rA   rB   r  errorbar)
r=  rU   rV   rW   rE   r%   estepry   r+  r,  r+   r+   r,   test_errorbar3d_errorevery  s   *
r0  zerrorbar3d.pngc                  C   sZ   t  } | jdd}g d}g d}|j||||||dg dg ddd	d
d |  dS )z9Tests limits, color styling, and legend for 3D errorbars.r0   r1   )r   r   ri   ro   rk   )r  r  r  r  r  ri   )FTFTT)TFFTFTpurplezError lines)rU   rV   rW   xerryerrzerrcapsizer+  r,  yuplimsecolorr   N)r@   rA   rB   r.  legend)rE   r%   dr  r+   r+   r,   test_errorbar3d  s   r:  z
stem3d.pngg;On?c               
   C   s8  dt jd< t jddddddid\} }td	dtj }t|tjd  }t|tjd  }|}t|d	 g d
D ]\}}|j	||||d |
d|  q;ttj d tjd d}t|}t|}t|d g d
D ]'\}}|j	|||ddd|d\}}	}
|
d|  |jddd |
d qrd S )NTr   r   ri   )r  r   r2   r0   r|   constrained_layoutr4   r   r  )orientationzorientation=r   r   zC4-.C1Drd  )linefmt	markerfmtbasefmtr=  rT   )rC  markeredgewidth)r@   r   r5   r   r"  r(  r*  r)  r$   stemrt   r   r_   set_linewidth)rE   ra   r,  rU   rV   rW   r%   r   
markerline	stemlinesbaseliner+   r+   r,   test_stem3d  s2   




rH  zequal_box_aspect.pngc                  C   s  ddl m} m} t }|jdd}tddtj d}tdtjd}t	t
|t|}t	t|t|}t	t|t
|}|||| ddg}	|tt| |	|	|	dD ]!\}
}tt|
| |	d |	d  kr|jt|
|d	d
i qat| | | g}t|d t|d g}|| || || |d |d tj t!dd |jddd W d    d S 1 sw   Y  d S )Nr   )r    r   r0   r1   r   r   rj   r   r   r   offrm   zArgument zoom =r4  )zoom)"r   r    r   r@   rA   rB   r   r"  r(  outerr*  r)  r   rJ  r   r   r!   r"   r#   r$   r;  rJ  rK  rL  r  r  r  r  rK  rO   ru   r6  r7  r  )r    r   rE   r%   r  r  rU   rV   rW   r'   rQ  r  xyzlimXYZlimr+   r+   r,   test_equal_box_aspect  s4   $$




"rN  c                  C   s   d} t jd| ddddid\}}|D ]}|tjdtjdtjd}qt j||d	d
}|j  |j	
 jd dk sAJ d S )Nr   r   )ro   rk   Tr2   r0   r;  rk   
horizontal)r%   r=  r  )r@   r5   r  r   r  ra  r  r   r   r%   get_positionextents)	num_plotsrE   ra   r%   p_tricbarr+   r+   r,   test_colorbar_pos  s   



rU  c                  C   s*  t  } | jdd}|dd | rJ | dksJ | dks&J |d | r1J | dks9J | dksAJ |  | sKJ | dksSJ | dks[J |jdd | sgJ | d	ksoJ | dkswJ |jd
d | sJ | dksJ | dksJ d S )Nr0   r1   r   r   r  )r   r   )r   r   )rQ   )r   r   r   )rR   )r   r   r   r   )	r@   rA   rB   r   r  get_zlim
get_zbound
set_zboundinvert_zaxisrD   r+   r+   r,   test_inverted_zaxis  s,   
r[  c                  C   s   t  } | jdd}t| dsJ |jdd t| ds$J |jdd | d	ks2J tjt	d
d |jddd W d    n1 sKw   Y  tjt	dd |jddd W d    d S 1 sjw   Y  d S )Nr0   r1   rO  r   )r   )rP  r   r   )r   rV  z"Cannot pass both 'lower' and 'min'r4  r   )r  r   z"Cannot pass both 'upper' and 'max')r  r   )
r@   rA   rB   r   rI  rW  r   r6  r7  r  rD   r+   r+   r,   test_set_zlim8  s"   "r\  c           
      C   s~   d\}}}| j ddd}| j dd|d}| j ddd}|| |j|||dd	 d
D ]}|j |dd}	|	j|||d q+d S )N)rk   r   r      r0   r1      )r2   	shareview   T)r   r   r   share)r]  r^  r`  r   )rB   r_  r   )
r9   r:   r   r   r   r1  r2  ax3subplot_numr%   r+   r+   r,   test_shared_viewI  s   

rd  c                  C   s   t  } | jddd}| j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sDJ d S )N   r0   r1      )r2   sharezr   r   r   )r  r   r         @)r  rh  )r@   rA   rB   r+  rJ   rW  )rE   r1  r2  r+   r+   r,   test_shared_axes_retickW  s   ri  c               	   C   sX  t dg d} | jdksJ | jg dkjsJ |  jdks J |  jg dkjs+J t dg d}|jdks9J |jg dkjsCJ t dg d}|jdksQJ |jg dkjs[J t dg d}|jdksiJ |jg dkjssJ || |  ks|J || |  ksJ || |  ksJ | | |ksJ | | |ksJ | | |ksJ || |ksJ || |ksJ || |ksJ || | ksJ || | ksJ || | ksJ t dg d	t d
g d t dg dksJ | |||fD ]2}| j|jksJ | j|j kjsJ |  |ksJ ||  jdkjs(J qt dg d}|jdks8J | jdks@J |jdksHJ |jdksPJ |jdksXJ || |||fD ]}|j||  jksnJ q_t dg dt dg dt dg dt dg dt d
g dfD ]}| jdksJ q| |||fD ]}||  | ksJ | | | ksJ q|g dt	
g dkjsJ g dg dt t	dddt	dgfg dg dt t	ddt	d dgfg dg dt dg dffD ]\}}}t |||ksJ qg dg dg dg dfD ];}t	
|}tt t || }W d    n	1 sGw   Y  t	|jdsVJ t	|j|dksbJ q(dD ]C\}}	}
dD ]:}t t	|t	|	t	|
}t	|jdsJ t ||j ||j }t	jjt	t |||	|
fdd qmqfd S )Nr   r   rj   r   r   r   r   r   r  r   rn   r   )r  r  rw  i)r  0   ,   )ri   r   r   )r   ro   r   )r   r   rk   r   r   ri   )r   r   r  r  rm   )r   )r   r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )/   r{   irV  ư>atol)
Quaternionscalarvectorall	conjugater  r	  
reciprocalrotater   r   r  rotate_from_tor6  warnsUserWarningiscloserf  from_cardan_anglesdeg2radr   r  rad2degas_cardan_angles)q1qiqjqkqq0r1r2r   r   r   magr+   r+   r,   test_quaternionc  s   $(* 


r  r   )azel	trackballr  arcballc                 C   sj  | dkrd}nt jd d }|d9 }dt jd< t d| i g dg d	g d
g dddtdd gddtdd gg dfD ]\}}}t }|jddddd}|dd| |jj	
  |t|tjddd |t|tj|| |j || |j d |jj	
  tdd }i ddddddd|fdddddddddd|fddd d!d"d#dd|fd$d%dd&tj dfd'd(d)d*d#dd|fd+d,d-d.d/d0dd|fd1d2dd3d4d5d6d0dd|fd7d8d9d:d;d<dd|fd=d>d?d@dAdBdCd<dd|fdDi}|| |||f \}	}
}tjj|j|j|jf|	|
|fdEdF qCW dG   dGS 1 s.w   Y  dGS )Hz*Test rotating using the left mouse button.r  r  zaxes3d.trackballsizer   r   zaxes3d.trackballborderzaxes3d.mouserotationstyler   )r   r   r   r  )r   r   r   ri   r   )r   r   r   r   r0   r1   buttonxdataydata)r  r   r   r   )r   r  r   )r  r   r   r   )r  r   r   )^iN|C     6r   )r  r   r   r   r   )r  r   r   r   )g     6@r  r   )r  r   r   r   )r  r  r   )r  r  r   )r  r   r   r   )r   gyܥ<r   )r  r   r   r   )r  r   r   r  )E~8o.2.gC5%
@)r  r   r   r   iL)r  r   r   r   )gi:+@=!7Q9gX:@)r  r   r   r   )r  r  g:TS@@)gi:+r  gT7@@)r  r   r   r   )r   r   r   )r  r   r   r   )r   r   r   r  )`#I9v$$0g! _B@)r  r   r   r   )r  r   r   r   )g&s|,@u.:gu.:@)r  r   r   r   )r  r  g%T@@)g&s|,r  g6h@@)r  r   r   r   )r   r   r   )r  r   r   r   )r   r   r   r  )#KHxqZrDgwJ3@)r  r   r   r   r   )r  r   r   r   )g`#I9@ګ'Lgv$$0@)r  r   r   r   )r  r  gK;H@)r  r  gĮE@ro  rp  N)r  r   
rc_contextr   r  r@   rA   rB   r   r   r   _button_pressr   r   LEFT_on_move	_pseudo_w	_pseudo_hr(  r   r  r   r   r   )r   rQ  r   r   r   rE   r%   r   expectationsnew_elevnew_azimnew_rollr+   r+   r,   test_rotate  s   
	
 
$r  c                  C   s4  dd } t  }|jdd}|ddd |j  | |  \}}| |  \}}| |  \}}|	t
|tjddd |t
|tjddd | |  \}	}
| |  \}}| |  \}}|
t|kskJ |t|kstJ |t|ks}J |	t|ksJ |t|ksJ |t|ksJ dS )	z1Test mouse panning using the middle mouse button.c                 S   s   | | d }||  }||fS )z+Convert min/max limits to center and range.r   r+   )dmindmaxcenterrange_r+   r+   r,   convert_lim
  s   ztest_pan.<locals>.convert_limr0   r1   r   r  r   N)r@   rA   rB   rW  r   r   rJ  rK  rL  r  r   r   MIDDLEr  r6  approx)r  rE   r%   	x_center0x_range0	y_center0y_range0	z_center0z_range0x_centerx_rangey_centery_rangez_centerz_ranger+   r+   r,   test_pan  s.   
r  ztool,button,key,expectedrJ  ))r?  Q?)r  gQ?)r  {Gz?rU   ))g{Gzr  )gQr  gQr  rV   ))Q뱿r   )g{Gzr  )r?  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                 C   s^  t  }|jd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ru|  || || || n|  || || || |\}}}| tj|d
dksJ | tj|d
dksJ | tj|d
dksJ |  | t|ksJ | t|ksJ | t|ksJ |  | tj|d
dksJ | tj|d
dksJ | tj|d
dksJ |  | t|ksJ | t|ks!J | t|ks-J d S )Nr0   r1   r   r  r   r   button_press_eventkeybutton_release_eventrJ  r  )r"   )r@   rA   rB   rW  r   r   rJ  rK  rL  	transDatar  astypeintr   r	   rJ  
press_zoom	drag_zoomrelease_zoomr  	press_pandrag_panrelease_panr6  r  backforwardhome)toolr  r  expectedrE   r%   xlim0ylim0zlim0d0d1s0s1start_event
stop_eventtbr  r  r  r+   r+   r,   test_toolbar_zoom_pan.  sj   







r  c           
      C   s   t ttjt dddt dddt dddg j\}}}|| }| jddd}|j||||ddd	}| j	
  |  |jddd}|j||||ddd	}	d S )
Nr   rk   r   o   r0   r1   r   r	  )r   rQ  r   )r   r   r   r   r    r   TrB   rW  r   r   changed)
r9   r:   rU   rV   rW   r   r  sc_testr  sc_refr+   r+   r,   test_scalarmap_updatez  s   
r  c                  C   sF   t  } | dd}|d jddddd}|d jdddddd}d S )Nr   r   r   r0   r1   other)r2   r   )r@   rA   
subfiguresrB   )rE   sfr%   r+   r+   r,   test_subfigure_simple  s   r  computed_zorder)baseline_imagesr   r/   r   c               
   C   s  dt jd< t  } | jddd}| jddd}d|_d}||fD ]4}tj|gd	d
dd}|| |jdddddd |j	dddddd |
d |d |d q | jddd}| jddd}d|_d}t| |f| |f\}	}
td}d}t| |fd|f\}}|| }t| |f| df\}}|| }d}d}tddtj |}|t| |t| || t| }}}||fD ]|}|j|||ddddd |j||dk  ||dk  ||dk  d d!d"dd# |j|	|
|ddddd |j|t| |t| t|d d!d
dd# |j|||dddd$d |j||dk ||dk ||dk d d!d"d%d# |jd&d'dd( |d) qd S )*NTr      r0   r1      F)r   )r   rk   r   )rk   rk   r   )rk   r   r   whiteblackr   )r  r  r  )r   r   )r   ro   r   r   )r   r  )ri   ri   )r   ri   r   )r   r@  )r   rh        r  r   r  r  r   rj   )r   r   rG  r  rk   z--r   )r  	linestyler   r  ri   ro   r   r   r   rI  )r@   r   rA   rB   r  r   r!  r  r+  rW  r   r   r   r   r   r  r"  r(  r*  r)  rJ  r   rO   )rE   r1  r2  cornersr%   trirb  ax4dimr   r   r   angleX2Y2Z2X3Y3Z3r'   rk  thrU   rV   rW   r+   r+   r,   test_computed_zorder  s   




2
"
$
$r   c                  C   s   t  } | jdd}td}||t| d}d}| j  |	||dks+J |j
ddd | j  |	||d	ksAJ |
  | j  |	||dksTJ |d
 | j  |	||dkshJ |jddd | j  |	||dks~J d S )Nr0   r1   r   r  z"x=10.5227, y pane=1.0417, z=0.1444r   rV   )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)r@   rA   rB   r   r   r+  r)  r   r   format_coordr   r   )rE   r%   rU   xvyvr+   r+   r,   test_format_coord  s(   






r  c                  C   sN   t  } | jdd}td}||t| | j  |	 dks%J d S )Nr0   r1   r   )FTF)
r@   rA   rB   r   r   r+  r)  r   r   get_axis_position)rE   r%   rU   r+   r+   r,   test_get_axis_position	  s   

r  c                  C   s   t  } | jdd}|d | dksJ |ddd | dks&J |jdd	 | d
ks4J |jdd | dksBJ |jdd | dksPJ d S )Nr0   r1   r  )r  r  r  r  re  )r  r  re  r   )rU   )r   r  re  )rV   )r   r  re  rW   )r   r  r   )r@   rA   rB   r  rD   r+   r+   r,   test_margins	  s   
r	  c                  C   sV   t  } | jdd}|ddd | dksJ | dks!J | dks)J d S )Nr0   r1   r  r  re  )r@   rA   rB   r  get_xmarginget_ymarginget_zmarginrD   r+   r+   r,   test_margin_getters$	  s   r  zerr, args, kwargs, match)rj   z!margin must be greater than -0\.5)r   rj   r   )r   r   rj   rj   rW   )r   z'Cannot pass both positional and keyword)rU   rV   r  z*Must pass a single positional argument forc                 C   sX   t j| |d t }|jdd}|j|i | W d    d S 1 s%w   Y  d S )Nr4  r0   r1   )r6  r7  r@   rA   rB   r  )errr  r  r5  rE   r%   r+   r+   r,   test_margins_errors-	  s
   "r  c                 C   sz   |j dd}tddd}tj|dd || | dks J | j dd}tdddd}|| | dks;J d S )Nr0   r1   r  zFoo bar $\int$r   r  r6  )rB   r   r   text_2d_to_3dr1  get_position_3dText3D)r9   r:   r%   txtt3dr+   r+   r,   test_text_3dC	  s   

r  c                  C   s>   t  } | jdd}|dgdggdgdggdgdgg d S )Nr0   r1   r   r   )r@   rA   rB   r+  rD   r+   r+   r,   test_draw_single_lines_from_Nx1Q	  s   *r  c                 C   s`   |j dd}t }t|}tj|ddd || | j dd}tj|ddd}|| d S )Nr0   r1   )r   r  rf  r   r   rV   rW   r   r  )rB   r   unit_rectangler   r   pathpatch_2d_to_3dr1  PathPatch3D)r9   r:   r%   pathpatchpp3dr+   r+   r,   test_pathpatch_3dX	  s   
r  zscatter_spiral.png)r  r   r   c                  C   sp   dt jd< t  } | jdd}tddtj d d}|jt|t	||d	|d
  |d d}| j
  d S )NTr   r0   r1   r   r   r      r   rk   r  )r@   r   rA   rB   r   r"  r(  rW  r)  r*  r   r   )rE   r%   r  scr+   r+   r,   test_scatter_spirale	  s   
,r!  c                  C   s>   t jddid\} }tdd}|| t| |  d S )Nr2   r0   r3   r  r  )r@   r5   r   r  r   r  get_path)rE   r%   pr+   r+   r,   test_Poly3DCollection_get_paths	  s
   


r$  c                  C   n   t jddddddf \} }t |d t | d  }t }|jddd}|j|| |d	d
}|  d S Nr   r   y              Y@ri   r   r  r0   r1   hotr   )	r   ogridr*  r)  r@   rA   rB   rJ  r  rV   rU   r  rE   r%   r'   r+   r+   r,   #test_Poly3DCollection_get_facecolor}	     r+  c                  C   r%  r&  )	r   r)  r*  r)  r@   rA   rB   rJ  get_edgecolorr*  r+   r+   r,   #test_Poly3DCollection_get_edgecolor	  r,  r.  zDvertical_axis, proj_expected, axis_lines_expected, tickdirs_expected)r?  #k$I?r?  ._x%I)r?  r?  (m?@mۿ)r?  r?  r?  g      $)#k$Ir?  r?  W$%@g˗ì?g2m 3?g溾IgMg2m 3gM?rj  )r/  r?  r?  r0  )r?  r1  r?  r2  )r?  r?  r3  r4  g˗ìg溾I?)r   r   r   )r?  r?  r/  r0  )r1  r?  r?  r2  )r?  r3  r?  r4  )r   r   r   c                 C   s   d}t jddddd}|jddd| d | j  | }tjj	|||d t
| | | gD ]&\}}|| }	|j }
tjj	|	|
|d || }|d}tj|| q5d	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   r0   r1   r   r   r   r   r  rtolr   N)r@   subplotr   
get_figurer   r   get_projr   r   r  rs   	get_xaxis	get_yaxis	get_zaxisrN   get_data_get_tickdirr  )r  proj_expectedaxis_lines_expectedtickdirs_expectedr7  r%   proj_actualry   rO   axis_line_expectedaxis_line_actualtickdir_expectedtickdir_actualr+   r+   r,   test_view_init_vertical_axis	  s    D"


rH  r  returnc                 C   s   t jddddd}|jddd| d | j  | }t|tj	ddd}|
| t|tj	ddd}|| |j| |jksDJ | }tjttjj|| d	S )
zO
    Test vertical axis is respected when rotating the plot interactively.
    r   r0   r1   r   r5  r  r  r   N)r@   r8  r   r9  r   r   r:  r   r   r  r  r  _axis_namesindex_vertical_axisr   r   assert_raisesAssertionErrorr  )r  r%   proj_beforeevent_click
event_move
proj_afterr+   r+   r,   test_on_move_vertical_axis	  s   

rS  zvertical_axis, aspect_expected)/0?F&H?rT  )rU  rT  rT  )rT  rT  rU  c                 C   sT   t jddddd}|jddd| d | j  |d  tjj	||j
dd d S )Nr   r0   r1   r   r5  ro  r6  )r@   r8  r   r9  r   r   ru   r   r   r  _box_aspect)r  aspect_expectedr%   r+   r+   r,   !test_set_box_aspect_vertical_axis
  s
   	
rX  zarc_pathpatch.pngc                  C   sF   t jddddd} tjdddddd	d
}| | tj|ddd d S )Nr   r0   r1   )r  r  r  g?r   r   r  )r   heightr  theta1theta2r   rW   r  )r@   r8  mpatchArcr  r   r  )r%   r{  r+   r+   r,   test_arc_pathpatch
  s   

r^  zpanecolor_rcparams.pngc                  C   sP   t dddd t jdd} | jdd W d    d S 1 s!w   Y  d S )	Nr'   r   r   )zaxes3d.xaxis.panecolorzaxes3d.yaxis.panecolorzaxes3d.zaxis.panecolorr  r   r0   r1   )r@   r  rA   rB   )rE   r+   r+   r,   test_panecolor_rcparams#
  s   
"r_  c                 C   s   | j ddd}g d}g d}g d}||||d g d|dd< g d|dd< |j 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  r0   r1   rm  )r?  r?  r?  zo-Nr/  )r9   r:   r1  rU   rV   rW   r2  r+   r+   r,   "test_mutating_input_arrays_y_and_z.
  s   r`  c                  C   s   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d}|j| |||d}t| tt	t
|| ksJJ dS )	zU
    Test color parameter usage with non-finite coordinate arrays.

    GH#26236
    r   r   r   )r?  r?  r?  r   r0   r1   r   N)r   r  r  r@   rA   rB   rW  r~   get_offsetssuperr  get_facecolors)rU   rV   rW   r   rE   r%   path3dr+   r+   r,   test_scatter_masked_colorH
  s   
re  zsurface3d_zsort_inf.pngc                  C   s   dt jd< t  } | jdd}tjddddddf \}}t|d t|d  }tj||j	d d d |j	d	 d d f< |j
|||d
d |jddd d S )NTr   r0   r1   r   r   r  r   r   r  r(  r]     )r   r   )r@   r   rA   rB   r   r  r)  r*  r  r  rJ  r   rX  r+   r+   r,   test_surface3d_zsort_infb
  s   
*rg  c                  C   sb   t jtdd  tg dg dg dgt} tj| gdd}W d    d S 1 s*w   Y  d S )NzCYou must provide facecolors, edgecolors, or both for shade to work.r4  r  r  r   Tr   )r6  r7  r  r   r   r  r   r!  )r"  r   r+   r+   r,   &test_Poly3DCollection_init_value_errorp
  s   "rh  c                  C   s@   t  } | jddd}|jdddtg dd | j  d S )Nr  r0   r1   r   r   r  r   )r@   rA   rB   rW  r   r   r   r   rD   r+   r+   r,   %test_ndarray_color_kwargs_value_errorz
  s   ri  )	functoolsr   platformsysr6  mpl_toolkits.mplot3dr   r   r   r   mpl_toolkits.mplot3d.axes3dr   rr  
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pyplotr@   numpyr   partialr  r-   r;   rF   rP   rc   rz   r   r   r   r   r   r   r   r   machiner   r   r   r  markparametrizer  r!  r&  r-  r3  r;  rO  rS  rY  r\  r]  rb  rp  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-  r5  r7  rC  rD  rN  rR  rZ  r\  r^  rb  rl  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r!  r)  r0  r:  rH  rN  rU  r[  r\  rd  ri  r  r  r  r  RIGHTr  r   contextr  r  r   r  r  r	  r  r  tupler  r  r  r  r  r!  r$  r+  r.  rH  strrS  rX  r^  r_  r`  re  rg  rh  ri  r+   r+   r+   r,   <module>   s   
	




























	



6



	









	



























	
&|


'
%!

^D
'



=

	R	
	


2(


