o
    jh                    @   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rZptsstartend r*   g/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/mpl_toolkits/mplot3d/tests/test_axes3d.pyplot_cuboid   s    $$r,   Z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   r9   zgrid_off.pngmpl20r   c                  C   "   t  } | jdd}|d d S Nr.   r/   F)pltfigureadd_subplotgridfigr%   r*   r*   r+   test_grid_off-      rD   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>   r?   r@   
set_xticks
set_yticks
set_zticksxaxisyaxiszaxisliner5   )rC   r%   axisr*   r*   r+   test_invisible_ticks_axis4   s   


rN   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   r0   r.   r1   xyz)ZxlabelZylabelZzlabeltitle)
r>   r3   r$   flattenrI   rJ   rK   Zset_label_positionZset_ticks_positionset)Z	positionsrC   axsr%   posrM   rV   r*   r*   r+   test_axis_positions?   s   
r[   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equalxzr]   r      r0   r.   r1   r   )r   r      r&   r   r   r   r   ra      rc   ZdatalimZ
adjustablezequal (cube))r>   r3   rW   r,   	enumerate	set_titleset_box_aspect
set_aspect)aspects_rY   r%   ir*   r*   r+   test_aspectsK   s   
rp   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)r\   r]   r^   r_   r`   r   r0   r.   )   ra   )r2   figsize)rg   ra   rc   rd   boxrh   )r>   r3   lenri   r,   rj   rl   )rm   rC   rY   ro   r%   r*   r*   r+   test_aspects_adjust_box\   s   
ru   c                  C   sZ   t  } | jdd}|d |d |d |d |d t|dks+J d S )	Nr.   r/   labelrV   rS   rT   rU   zV<Axes3D: label='label', title={'center': 'title'}, xlabel='x', ylabel='y', zlabel='z'>)	r>   r?   r@   Z	set_labelrj   
set_xlabel
set_ylabel
set_zlabelreprrB   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   ra   r0   r.   r1   rS   rT   rU   orthor   r   elevazimroll)
r>   r3   ri   flatrw   rx   ry   set_proj_type	view_inittight_layout)viewsrC   rY   ro   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 )Nr.   r/   )r'   gbrT   )      
   r   r   cr   rT   edge皙?)zszdiraligncoloralpha)r>   r?   r@   r$   r   arangert   bar)rC   r%   r   rU   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 )Nr.   r/   )redgreenblueyellowr   r   )r>   r?   r@   r   r   rt   
zeros_likebar3d)rC   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 )Nrg   rc   r   ))r   r   )r   r   r   )r   r   ),  r   r   rr   r.   r/   r1   r   Tshader   )r   r   meshgridravelr>   r?   	figaspectrt   r3   r4   r$   r   r   canvasdraw)rS   rT   x2dy2drU   r   rC   rY   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 )	Nr.   r/   rg   rc   r   r   Fr   )
r>   r?   r@   r   r   r   r   r   r   r   )rC   r%   rS   rT   r   r   rU   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   r.   r/   r   r   )ZazdegZaltdeg)ra   rg   c                    s   g | ]	}t |  qS r*   )r
   coolwarm).0ro   Zarear*   r+   
<listcomp>       z*test_bar3d_lightsource.<locals>.<listcomp>T)	rS   rT   rU   dxdydzr   r   Zlightsource   rg   )r>   r?   r@   mcolorsZLightSourcer   r   r   r   ranger   testingZassert_array_max_ulpZ_facecolor3d)
rC   r%   ZlslengthwidthrS   rT   r   r   Z
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.automarginr.   r/   r}   rU   r   offsetcmaprS   rT   (   d   )xminxmaxyminymaxzminzmax)
r>   rcParamsr?   r@   r   get_test_datacontourr
   r   rM   rC   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   r.   r/   r}   rU   r   )r   r   r   Zextend3dr   r   r   P   )r>   r   r?   r@   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   r.   r/   r}   rU   r   r   rS   r   rT   r   r   )r>   r   r?   r@   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   r.   r/   r         ?r   皙?rc   皙)r   levelsr   rb   r   )r>   r   r?   r@   r   r   r   clipr   r
   r   r   r   r   r   r*   r*   r+   test_contourf3d_fill  s   
$r   zextend, levelsrQ   )r   rg   r   min)r   rg   r      max)r   r   rg   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   r.   r/   r   )r   r   rg   r   r   extendr   )r   r   r   mpl	colormapscopyZ	set_underZset_overr@   r   r   r   r   )r7   r8   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   r.   r/   )
r>   r   r?   r   randomseedZrandr@   Z
tricontourZtricontourf)rC   rS   rT   rU   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 )	Nr.   r/   )r   r   r   r   r   r   r  )r>   r?   r@   r   linspacer  randintr   )rC   r%   nxnyrS   rT   rU   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 )	Nr.   r/   rg   r   r   r   r   )	r>   r?   r@   r   r  pisincosplot)rC   r%   thetarU   r'   rS   rT   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 )Nr.   r/   r   or@   r  r7   r8   ax1ax2r*   r*   r+   test_plot_scalarZ  s   r  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   ZLine3Dset_data_3d)rL   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   Zbozk--r   )markerfacecolorr.   r/   rc   r   r   r   F)rcountccount	linewidthantialiasedrb   )r   r   r>   r   r?   r   r@   r  rA   r   hypotr  plot_surface
set_zlim3d)	r#  t1t2rC   r%   r   r   Rr   r*   r*   r+   test_mixedsubplotss  s    
 
$
r3  c                 C   sP   | j dd}|jddddd |   |j dd}|  |jddddd d S )Nr.   r/   r  zsome strings)r@   textr   r  r*   r*   r+   test_tight_layout_text  s   r7  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   r.   r/   r   r'   r  )r   markerr   r   ^r   rb   r   r>   r   r?   r@   scatterr   r   rC   r%   rS   rT   rU   r*   r*   r+   test_scatter3d  s   
r=  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   r.   r/   r   r'   rR   r  )	facecolor	edgecolorr8  r   r   r5  )r   r8  r:  rB   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 )Nr.   r/   r   r  )r8  r+  )r>   r?   r@   r;  r   r   rB   r*   r*   r+   test_scatter3d_linewidth  s
   

rA  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 )Nr.   r/   r   r  r8  )r8  
linewidths)r@   r;  r   r   set_linewidthsr8   r7   r   r   r   r*   r*   r+   %test_scatter3d_linewidth_modification  s   
rF  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 )Nr.   r/   r   r  rB  C1C2333333?ffffff?rc   FK   ra   )r8  r>  r?  r   
depthshader5  rC  )r@   r;  r   r   set_facecolorset_edgecolor	set_alphaget_depthshadeset_depthshadeZ	set_sizesfullrD  rE  r*   r*   r+   test_scatter3d_modification  s"   




rS  rL  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   C0rG  rc   rH  r   rg   ZC3ZC4ZC5ZC6	   ZC7c                 s   s    | ]}|  V  qd S N)rW   r   ar*   r*   r+   	<genexpr>  s
    
z)test_scatter3d_sorting.<locals>.<genexpr>r.   r/   c                 s   s    | ]}t |V  qd S rW  )r   uniquerX  r*   r*   r+   rZ    s    Zdtype)r5  fceclwr   rL  )r   mgridr   sizereshapeshaperR  r@   r   r    maZmasked_arrayfloatrepeatr!   maskr;  )r8   r7   rL  rT   rS   rU   sizes
facecolors
edgecolorsrC  r   Zsetsr5  r]  r^  r_  Zsubsetr   r*   r*   r+   test_scatter3d_sorting  sN   
rk  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.
    rb   r   r   r   rT   r.   r/     r5  r   r   N)r@   r;  r   r7   r8   r   rS   rT   rU   r   r%   r*   r*   r+   $test_marker_draw_order_data_reversed  s   	<rq  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.
    rm  rb   r   r   r   rT   r.   r/   rn  ro  r   Nr   )r@   set_axis_offr;  r   rp  r*   r*   r+   #test_marker_draw_order_view_rotated2  s   rs  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 )	Nr.   r/   r   rc   r   rS   r   r   rT   )r>   r?   r@   r   r   r  )rC   r%   r   r   r*   r*   r+   test_plot_3d_from_2dJ  s   ru  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 )Nr.   r/   r   r   2   r   r   333333?ra   r\   r  k)wheremoder   r?  )	r>   r?   r@   r   r  r  r  r  fill_between)
rC   r%   r  x1y1z1x2y2z2ry  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 )Nr.   r/   r   r   rv  r   ra   r\   rx  )ry  rz  r?  )r>   r?   r@   r   r  r  r  r{  )
rC   r%   r  r|  r  r}  r  r~  r  ry  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.snapr.   r/   r(  rc   r   r   r   )r)  r*  r   r_  r,  Tr   )\()\(?r  )shrinkZaspect)r>   r   r?   r@   r   r   r   r-  r  r.  r
   r   r   colorbar)rC   r%   r   r   r2  r   Z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   r.   r/   r   r   r   rg   g     j@g    .Ag    חAautumnr   )r   cstriderstridezX labelzY labelzZ label)r>   r   r?   r@   r   r`  r  sqrtr"   r  r.  rw   rx   ry   )r%   rS   rT   rU   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 )Nr.   r/   r(  rc   r   r   )r   r   r   r   F)r  r  r   r_  r,  Tr   r  r  )r>   r?   r@   r   r   r   r  r  r.  r   r   )rC   r%   r   r   r2  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 )Nr.   r/   )r   r   ra   rg   rc   r   r   r   rV  r   rq   )r   r   ra   rg   rc   r   r   r   )rb   r   r   r   r   r   r   r   r   r   r   )rb   r   r   ra   rg   rg   rg   ra   r   r   r   )rb         rg   rc   r   r   r   rc   rg   ra   r  )rb   r  r   r   rq      rq   r   r   r  r  )rb   r  r   rV  r      r   rV  r   r   r  )rb   r  r  r  r  r   r  r  rq   r  r  )rb   r  r  r        r  r      r  r  )rb   r  r  r  r        rT  r  r  r  r   )r   r   Zplasmari  r   r   )r>   r?   r@   r   r   r   rd  masked_lessr   	Normalizer   r   r   r   r.  r   )rC   r%   rS   rT   matrixrU   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   )rg  r.   r/   )
r   r  r  r  rd  r   r@   r;  r  nan)	r7   r8   rS   rT   rU   rg  Z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 )Nrc   r.   r/   r  )r   r   r   r@   r.  )r7   r8   rS   rT   rU   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 )Nr.   r/   igffffff@r   r   rg   r  r  <   r   )	r>   r?   r@   r   r`  rd  r  r.  r   r<  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 )Nr.   r/   NrS   rT   rU   r   r   r   re   r   r   rg   rV  r   r   r   rg   r   r   r   r   rg   r   rc   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>   r?   r@   r$   r6  Ztext2DZ	transAxesr   
set_xlim3d
set_ylim3dr/  rw   rx   ry   )rC   r%   zdirsr   r   r   r   rS   rT   rU   rv   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  r.   r/   r   r   (z, z), dir=)r   )r@   r  r  r/  r$   r6  Zset_position_3d)r8   r7   r  r   r   r   r   r   rS   rT   rU   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Zendpoint.r   rM   r.   r/   皙?)r   r+  )r   r  r  rf  newaxisappendr  rW   r  r>   r?   r@   plot_trisurfr
   jet	Zn_anglesZn_radiiZradiiZanglesrS   rT   rU   rC   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  r.   r/   )r   r  r   r  )r   r+  )r   r  r  rf  r  r  r  rW   r  r>   r?   r@   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 )Nr.   r/   r}      r)  r*  r>   r?   r@   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 )Nr.   r/   r}   r  r   r  r  r   r*   r*   r+   test_wireframe3dzerocstrideO  r  r  zwireframe3dzerorstride.pngc                  C   r  )Nr.   r/   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 )Nr.   r/   r}   r   r  )	r>   r?   r@   r   r   r  r  
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 )Nr.   r/   r}   r   rv  )r  r*  )r  r)  )
r>   r?   r@   r   r   r  r  r  r  r.  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   r.   r/   )tipmiddletail)ztab:bluez
tab:orangez	tab:green      r  r   r   )r   pivotr   r   ra   rb   rc   )r>   r   r?   r@   ri   r$   r   r   quiverr;  r   r   r   )rC   r%   Zpivotsr   ro   r  r   rS   rT   rU   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 )Nr.   r/   r   r  Tr   r  	normalize)r@   r  )	r7   r8   rS   rT   rU   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 )Nr.   r/   rb   r   y              $@rw  y              @g>,p ?皙ٿr   F)r   rJ  r  Tr  )r>   r?   r@   r   r`  r  r  r  rd  Zmasked_wherer  )rC   r%   rS   rT   rU   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 )Nr.   r/   r         $@)r   r   )r>   r?   r@   r   zerosr   r
   ZRedsr   r  r   )	rC   r%   rS   rT   r   r   rU   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 )Nr.   r/   r   r   )r  r$  r$  r   )r   r   r   r   )r>   r?   r@   r   	add_patchr   Zpatch_2d_to_3drM  r   Z
same_colorget_facecolorr   r   )rC   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  ra   )rC  r.   r/   rH  rJ  F)rC  r?  r>  r   rL  )r   r   r   r   ZPatch3DCollectionr@   add_collection3drN  rM  rO  rP  rQ  )r7   r8   Zpatch1Zpatch2ri  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-liker  r\  )r  r  r  r   Poly3DCollectionr   r   re  )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 )Nr.   r/   r  r  r   re   r  ra   rx  )r  r  r   r  TrC  r?  r>  closed)r   r  r  r  FZautolim)	r>   r?   r@   r   r   re  r   r  r  rC   r%   Zpoly1Z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 )Nr.   r/   r1   )r   r   Zpoly_collection_2d_to_3d
isinstancer  	get_pathsr>   r3   r4   
add_artistZdo_3d_projectionr   isnanr   r   )r  rC   r%   Zminzr*   r*   r+   #test_poly_collection_2d_to_3d_empty  s   

r  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 )Nr.   r/   r  r  r   re   r  ra   rx  r  r  r   Tr  r  F)rC  r  )r   r  r  r  )r>   r?   r@   r   r   re  r   r  rO  rM  rN  r  r  r*   r*   r+   test_poly3dcollection_alpha   s   



r  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  rg   r   r   r   r   rb   ra   r  r.   r/   r   twilightr   r  r   Tr   r(  rc   r   )r   r  r  r  r  column_stackrb  concatenater>   r?   r@   r  r   	set_arraymodr  r   r   r   r   r  rU   r'   rS   rT   ZpointssegmentsrC   r%   r  lcrL   r*   r*   r+   test_add_collection3d_zs_array  s$   "$ 
r  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   rb   r  r.   r/   r  r  r  Tr   r(  rc   r  r   )r   r  r  r  r  r  rb  r  r>   r?   r@   r  r   r  r  r   r   r   r   r  r*   r*   r+   test_add_collection3d_zs_scalar0  s$   "

r  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 )Nr.   r/   r   )r   rg   r   r   r   ra   )r   r   r   r   r   rg   )r   rg   rc   )gUUUUUUgUUUUUU @)gUUUUUUUUUUUU@)ggj@)r>   r?   r@   r   ZLine3DCollectionr  r   allclose
get_xlim3d
get_ylim3d
get_zlim3d)rC   r%   linesr  r*   r*   r+   !test_line3dCollection_autoscalingK  s   

r  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 )Nr.   r/   r   r  r  UUUUUUgUUUUUU?)gSUUUUUr  )r>   r?   r@   r   r   r   r  r  r  r  r	  r
  )rC   r%   r  colr*   r*   r+   !test_poly3dCollection_autoscalingZ  s   
r  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   rc   )r>   r?   Zadd_axesr   rI   r  r   r   rw   rx   ry   rK   Z
get_zlabelrJ   ri   get_major_ticksZset_padZget_pad)rC   r%   ro   tickr*   r*   r+   test_axes3d_labelpade  s   
r  zaxes3d_cla.pngc                  C   s.   t  } | jddddd}|  |  d S )Nr   r.   r/   )r>   r?   r@   rr  clarB   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   r.   r/   r   -   r   )r>   r?   r@   r   rB   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   r.   r/   )r   r  r   r  randnr>   r?   r@   r  r  r  r.  )rS   rT   r   r   rU   rC   r%   r*   r*   r+   test_plotsurface_1d_raises  s   "r  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_uvwZ_persp_transformationdot)
Er2  Vr   r  r  r  viewMZperspMMr*   r*   r+   _test_proj_make_M  s   r$  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   )
r$  r   Zlinalginvr   r   proj_transformZinv_transformr   Zassert_almost_equal)r#  ZinvMr   r   r   txstystzsZixsZiysZ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  rS   rT   rU   )r   r*  r$   r>   r3   r   Zadd_collectionr6  )r#  r5  argsr   r   r   r   r+  r,  r-  r  r%   Zayazr  rC   ZlinecrS   rT   r"  r*   r*   r+   _test_proj_draw_axes  s   
r1  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 4r%  r&  r'  r(  i  r4  r   r'   Tr   皙ɿr  )r$  splitr   r   r   r*  r1  r;  r  r$   r6  r>   r   r   r   )r#  tsr   r   r   r+  r,  r-  rC   r%   rS   rT   r"  r*   r*   r+   test_proj_axes_cube  s   
r7  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   rb   r   r2  r%  r   r'  r(     r4  r   r'   r3  Tr   i8r8  )r   r   r   r  r  Z_ortho_transformationr  r5  r*  r1  r;  r  r$   r6  r>   r   r   r   )r   r2  r!  r   r  r  r  r"  ZorthoMr#  r6  r   r   r   r+  r,  r-  rC   r%   rS   rT   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   r(  )r   g{Gzt?r   r  )r   r   r  rb   r   r   r   r   )r   Zworld_transformationr   r   assert_allclose)r   r   r   r   r   r   r#  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 )Nr0   r.   r1   Zlinearr   r   r  rS   rT   rU   r   )r   r   r   皙?r4  g333333?FTr   )r   r   r   r@  r  333333@rS   r  )r   r   r   r@  r  rA  )	r>   r3   Z
get_zscaleZ_view_marginmarginsr  Z
get_w_limsZ	autoscaleZset_autoscalez_onrB   r*   r*   r+   test_autoscale  s   

rC  rM   r?  r\   )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 )Nr.   r/   r   r   r   Zget_autoscaleZ_onZset_Zlimget_)r  r  )r\   )r>   r?   r@   r   r   r  r;  getattrr   r   r   assert_array_equal)
rM   r\   rC   r%   rS   rT   Zget_autoscale_onZset_limZget_limZ	post_autor*   r*   r+   test_unautoscale  s   

rG  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   rl  r.   r/   r   r   rx  )r(  rc   xlimylimzlimrc   r   )
r$   r@   r"   r   r  onesr  r  rX   r   )
r7   r8   ZxminsrC   r   r%   nr   r   r   r*   r*   r+   test_culling.  s   

rN  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 )Nr.   r/   perspr   Zfocal_lengthr   r   )r>   r?   r@   r  r  r  r   rB   r*   r*   r+   test_axes3d_focal_length_checks=  s   "rQ  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   r0   r.   r1   r   rO  rP  333333?)r>   r3   r   r   inf)rC   rY   r*   r*   r+   test_axes3d_focal_lengthF  s   rT  zaxes3d_ortho.pngc                  C   r<   )Nr.   r/   r   )r>   r?   r@   r   rB   r*   r*   r+   test_axes3d_orthoN  rE   rU  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    r.   r   )rg   rg   rg   )r0   Z	proj_typeZ
box_aspectr1   )rb   r   r   r   r   rx  r  r  r   T)r   r   r    r>   r3   r4   r   r   r   r"   r!   r#   r$   r   degreesZarctanr  rA   )r   r    rC   r%   r'   r5  er*   r*   r+   test_axes3d_isometricU  s   $ &rX  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 )Nr.   r/   r   r   rq   rG  rv  T)r>  rj  r)  r*  
axlim_clipr        ?rx  ra   rc   )r   r+  zorderrY  )rY  r   )Zarrow_length_ratiorY  rH  )r   rY  r@  rg   test)r   r  r   r   )r   rc   rH  r   F)r@   r   r  r   r.  r  r;  r   r  r6  rX   rb  )	r7   r8   r%   rS   rT   r   r   r   idxr*   r*   r+   test_axlim_clipe  sJ   ""$""$r_  value)setterside))r  left)r  right)r  bottom)r  top)r/  re  )r/  rf  c                 C   s`   ||i}t  }|jdd}tt t|| di | W d    d S 1 s)w   Y  d S )Nr.   r/   r*   )r>   r?   r@   r  r  r  rE  )ra  rb  r`  limitrC   objr*   r*   r+   test_invalid_axes_limits  s   
"ri  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 )Nr0   r.   r1   )rc   rg   ra   )r>   r3   r   indicesvoxels)selfrC   r%   rS   rT   rU   rl  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 )Nr0   r.   r1   )rc   rc   rg   r   rZ  g](\@ra   rG  )rC  r?  rH  )r>   r3   r   rk  rl  r   keysrN  )rm  rC   r%   rS   rT   rU   rl  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.r0   r.   r1   r   r   r   r   rU  r\  z0.25rc   cyanr   r  N)r>   r3   r   rk  rR  Zobject_rl  rm  rC   r%   rS   rT   rU   rl  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.r0   r.   r1   rq  )r   r   r   ra   rV  .r   .r   .r   r  N)r>   r3   r   rk  r  rl  rs  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 )Nr0   r.   r1   rq  r   )r   r   r   rg   )r   r   r   r  )r   r   r   r  r  zfaces returned for absent voxel)r>   r3   r   rk  r"   r  rl  typer4   itemsr  r   r  )rm  rC   r%   rS   rT   rU   Zv1Zv2rl  r   r  Z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 )Nr0   r.   r1   c                 S   sZ   d}t | jD ]#}| |tjd d   | |tjdd     d } |tjd d  7 }q| S )Nr*   rb   r   r&  )r   ndimr   Z	index_exp)rS   slro   r*   r*   r+   	midpoints  s   z&TestVoxels.test_xyz.<locals>.midpoints)   r  r  g      0@r  r   r   )ra   ru  rv  rw  r   r   )ri  rj  r+  )r>   r3   r   rk  r  rc  rl  r   )rm  rC   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 )Nrf   )r   ra   rg   r0   r.   r1   rx  )r?  filledrl  r  )r  zkeyword argument 'x')r  rS   rT   rU   rS   r*   )r   rk  rL  r>   r3   r4   rl  r  r  	TypeErrorAttributeErrorr`  name)	rm  rS   rT   rU   r  rC   r%   kwZ	exec_infor*   r*   r+   test_calling_conventions  s$   
z#TestVoxels.test_calling_conventionsN)__name__
__module____qualname__mpl3d_image_comparisonrn  rp  rt  rx  r{  r  r  r*   r*   r*   r+   rj    s     






 rj  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   ra   rg   rc   r   r   r   rV  r   rq   r.   r/   rU   rt  )r>   r?   r@   r  r   r   rF  Zget_data_3dr  Z	set_xdataZ	set_ydataZset_3d_propertiesr   )
rS   rT   rU   r  r  r  rC   r%   r  rL   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 )Nr.   r/   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r@   r  Zinvert_yaxisr6   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 )Nr0   r.   r1   r   r   )	r>   r3   Zxaxis_invertedZyaxis_invertedzaxis_invertedr   r   r   r  rB   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 )NrS   r   )rM   r   rT   rU   )r>   r?   r   Ztick_paramsr   r   rI   r  Z	tick1line_colorrJ   rK   )rC   r%   r  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 )Nrg   rc   r0   r.   r1   g    cAg   @cA)rS   rT   rU   rQ   r   plain)rM   r   r   )r   r   )rM   Z	scilimitsr   zaxes.formatter.useoffset)rM   Z	useOffsetra   zaxes.formatter.use_locale)rM   Z	useLocalezaxes.formatter.use_mathtext)rM   ZuseMathTextc                    s    fdd|D S )Nc                    s   g | ]	}t  | qS r*   )rE  Z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_formattersrI   rJ   rK   )rI   rJ   rK   F)r3   r   r   r$   Zticklabel_formatr   r   Zset_scientificZset_powerlimitsZset_useOffsetZset_useLocaleZset_useMathText)	r7   r8   rY   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  r.   r/   )r   r  )r   r   r   	ones_liker$   r@   r  )r7   r8   r  rS   rT   rU   r  r  r  rC   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 )Nr.   r/   r   T)minorZquartergQ?thirdr  Zhalf)	r>   r?   r@   rF   Zset_xticklabelsrG   Zset_yticklabelsrH   Z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|  ra   rc   r.   r/      r  )zuplimszlolimsZ
erroreveryN)
r   r   r  r  r  r>   r?   r@   ra  errorbar)
r"  rS   rT   rU   rC   r%   Zestepro   r  r  r*   r*   r+   test_errorbar3d_errorevery  s   *
r  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.r.   r/   )r   r   ra   rg   rc   )r  r  r  r  r  ra   )FTFTT)TFFTFTpurplezError lines)rS   rT   rU   ZxerrZyerrZzerrZcapsizer  r  ZyuplimsZecolorrv   N)r>   r?   r@   r  Zlegend)rC   r%   drW  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   ra   )r   r   r0   r.   rr   Zconstrained_layoutr2   r   r?  )orientationzorientation=r   r   zC4-.ZC1DrH  )linefmtZ	markerfmtZbasefmtr  rR   )r'  Zmarkeredgewidth)r>   r   r3   r   r  r  r  r  r$   stemrj   r  rX   Zset_linewidth)rC   rY   r  rS   rT   rU   r%   r   Z
markerlineZ	stemlinesZbaseliner*   r*   r+   test_stem3d  s2   




r  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   r.   r/   r   r   rb   r   r   r   offre   zArgument zoom =r  )zoom)"r   r    r   r>   r?   r@   r   r  r  outerr  r  r  r.  r   r   r!   r"   r#   r$   r  r  r	  r
  r   r   r  r  r/  rM   rk   r  r  r  )r    r   rC   r%   r  r  rS   rT   rU   r'   r5  rW  ZxyzlimZXYZlimr*   r*   r+   test_equal_box_aspect  s4   $$




"r  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   )rg   rc   Tr0   r.   r  rc   
horizontal)r%   r  r  )r>   r3   r  r   r  r  r  r   r   r%   Zget_positionZextents)Z	num_plotsrC   rY   r%   Zp_triZcbarr*   r*   r+   test_colorbar_pos  s   



r  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 )Nr.   r/   r   r   r]  )r   r   )r   r   )rO   )r   r   r   )rP   )r   r   r   r   )	r>   r?   r@   r   r  get_zlimZ
get_zboundZ
set_zboundZinvert_zaxisrB   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 )Nr.   r/   r  r   )r   )r  r   r   )r   r  z"Cannot pass both 'lower' and 'min'r  r   )re  r   z"Cannot pass both 'upper' and 'max')rf  r   )
r>   r?   r@   r   r  r  r   r  r  r  rB   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)rc   r   r      r.   r/      )r0   	shareview   T)r   r   r   Zshare)r  r  r  r   )r@   r  r   )
r7   r8   r   r   r   r  r  ax3Zsubplot_numr%   r*   r*   r+   test_shared_viewI  s   

r  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   r.   r/      )r0   Zsharezr   r   r   )r  r   r         @)r  r  )r>   r?   r@   r  rH   r  )rC   r  r  r*   r*   r+   test_shared_axes_retickW  s   r  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   rb   r   r   r   r   r  r  r   rf   r   )r   r   rV  i)r  0   ,   )ra   r   r   )r   rg   r   )r   r   rc   r   r   ra   )r   r   r  r  re   )r   )r   r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )/   rq   ir  ư>Zatol)
QuaternionZscalarZvectorall	conjugater  r  Z
reciprocalrotater   r   r  Zrotate_from_tor  ZwarnsUserWarningiscloser  Zfrom_cardan_anglesZdeg2radr   r=  Zrad2degZas_cardan_angles)q1ZqiZqjZ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   ra   r   )r   r   r   r   r.   r/   buttonZxdataZ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@r  r  N)r   r   
rc_contextr   r  r>   r?   r@   r   r   r   _button_pressr   r   LEFT_on_moveZ	_pseudo_wZ	_pseudo_hr  r   r=  r   r   r   )r   r5  r   r   r   rC   r%   r   ZexpectationsZnew_elevZnew_azimZ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*   )ZdminZdmaxcenterZrange_r*   r*   r+   convert_lim
  s   ztest_pan.<locals>.convert_limr.   r/   r   r  r   N)r>   r?   r@   r;  r   r   r  r	  r
  r  r   r   ZMIDDLEr  r  approx)r  rC   r%   Z	x_center0Zx_range0Z	y_center0Zy_range0Z	z_center0Zz_range0Zx_centerZx_rangeZy_centerZy_rangeZz_centerZz_ranger*   r*   r+   test_pan  s.   
r  ztool,button,key,expectedr  ))r$  Q?)r|  gQ?)r  {Gz?rS   ))g{Gzr   )gQr  gQr  rT   ))Q뱿r}   )g{Gzr  )r$  gQ?))g
ףp=
rR  )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 )Nr.   r/   r   r  r   r   Zbutton_press_eventkeyZbutton_release_eventr  r|  )r"   )r>   r?   r@   r;  r   r   r  r	  r
  Z	transDatar  Zastypeintr   r	   r  Z
press_zoomZ	drag_zoomZrelease_zoomr  Z	press_panZdrag_panZrelease_panr  r  backforwardhome)toolr  r  expectedrC   r%   Zxlim0Zylim0Zzlim0Zd0Zd1s0s1Zstart_eventZ
stop_eventtbrI  rJ  rK  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   rc   r   o   r.   r/   r   r   )r   r5  r   )r   r   r   r   r    r   Tr@   r;  r   r   changed)
r7   r8   rS   rT   rU   r   r   Zsc_testr   Z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   r.   r/   other)r0   rv   )r>   r?   Z
subfiguresr@   )rC   Z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      r.   r/      F)r   )r   rc   r   )rc   rc   r   )rc   r   r   whiteblackr   )ri  rj  r[  )r   r   )r   rg   r   r   )r   r[  )ra   ra   )r   ra   r   )r   r%  )r   r        r  r   r   r  r   rb   )r   r   r+  r[  rc   z--r   )r_  Z	linestyler   r[  ra   rg   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   rM   )rC   r  r  Zcornersr%   Ztrir  Zax4dimr   r   r   angleZX2ZY2ZZ2ZX3ZY3ZZ3r'   r#  thrS   rT   rU   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 )Nr.   r/   r   r   z"x=10.5227, y pane=1.0417, z=0.1444r   rT   )r   vertical_axisz!x pane=9.1875, y=0.9761, z=0.1291r   z"x=10.8869, y pane=1.0417, z=0.1528rO  rP  z!x=9.0620, y pane=1.0417, z=0.1110)r>   r?   r@   r   r   r  r  r   r   Zformat_coordr   r   )rC   r%   rS   ZxvZ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 )Nr.   r/   r   )FTF)
r>   r?   r@   r   r   r  r  r   r   Zget_axis_position)rC   r%   rS   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 )Nr.   r/   r  )r  r  r  r   rI  )r   r  rI  r   )rS   )r   r  rI  )rT   )r   r   rI  rU   )r   r   r   )r>   r?   r@   rB  rB   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 )Nr.   r/   r   r  rI  )r>   r?   r@   rB  Zget_xmarginZget_ymarginZget_zmarginrB   r*   r*   r+   test_margin_getters$	  s   r  zerr, args, kwargs, match)rb   z!margin must be greater than -0\.5)r   rb   r   )r   r   rb   rb   rU   )r   z'Cannot pass both positional and keyword)rS   rT   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 )Nr  r.   r/   )r  r  r>   r?   r@   rB  )errr/  r   r  rC   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 )Nr.   r/   r  zFoo bar $\int$r   r  r  )r@   r   r   Ztext_2d_to_3dr  Zget_position_3dZText3D)r7   r8   r%   txtZ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 )Nr.   r/   r   r   )r>   r?   r@   r  rB   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 )Nr.   r/   )r   r  rJ  r   r   rT   rU   r   rt  )r@   r   Zunit_rectangler   r   pathpatch_2d_to_3dr  ZPathPatch3D)r7   r8   r%   pathpatchZ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   r.   r/   r   r   r      r   rc   ro  )r>   r   r?   r@   r   r  r  r;  r  r  r   r   )rC   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 )Nr0   r.   r1   r  r  )r>   r3   r   r  r   r"  get_path)rC   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@ra   r   r  r.   r/   Zhotr   )	r   ogridr  r  r>   r?   r@   r.  r  rT   rS   r  rC   r%   r'   r*   r*   r+   #test_Poly3DCollection_get_facecolor}	     r1  c                  C   r,  r-  )	r   r/  r  r  r>   r?   r@   r.  Zget_edgecolorr0  r*   r*   r+   #test_Poly3DCollection_get_edgecolor	  r2  r3  zDvertical_axis, proj_expected, axis_lines_expected, tickdirs_expected)r$  #k$I?r$  ._x%I)r$  r$  (m?@mۿ)r$  r$  r$  g      $)#k$Ir$  r$  W$%@g˗ì?g2m 3?g溾IgMg2m 3gM?r  )r4  r$  r$  r5  )r$  r6  r$  r7  )r$  r$  r8  r9  g˗ìg溾I?)r   r   r   )r$  r$  r4  r5  )r6  r$  r$  r7  )r$  r8  r$  r9  )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   r.   r/   r   r   r   r   r  rtolr   N)r>   subplotr   
get_figurer   r   get_projr   r   r=  ri   Z	get_xaxisZ	get_yaxisZ	get_zaxisrL   get_dataZ_get_tickdirrF  )r  Zproj_expectedZaxis_lines_expectedZtickdirs_expectedr<  r%   Zproj_actualro   rM   Zaxis_line_expectedZaxis_line_actualZtickdir_expectedZtickdir_actualr*   r*   r+   test_view_init_vertical_axis	  s    D"


rA  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   r.   r/   r   r:  r  r  r   N)r>   r=  r   r>  r   r   r?  r   r   r  r  r  Z_axis_namesindexZ_vertical_axisr   r   Zassert_raisesAssertionErrorr=  )r  r%   Zproj_beforeZevent_clickZ
event_moveZ
proj_afterr*   r*   r+   test_on_move_vertical_axis	  s   

rE  zvertical_axis, aspect_expected)/0?F&H?rF  )rG  rF  rF  )rF  rF  rG  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   r.   r/   r   r:  r  r;  )r>   r=  r   r>  r   r   rk   r   r   r=  Z_box_aspect)r  Zaspect_expectedr%   r*   r*   r+   !test_set_box_aspect_vertical_axis
  s
   	
rH  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   r.   r/   )r  r  r  g?r   r   rm  )r   heightr  Ztheta1Ztheta2r   rU   r!  )r>   r=  mpatchZArcr  r   r"  )r%   rY  r*   r*   r+   test_arc_pathpatch
  s   

rK  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   r.   r/   )r>   r  r?   r@   )rC   r*   r*   r+   test_panecolor_rcparams#
  s   
"rL  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  r.   r/   r  )r$  r$  r$  zo-Nr  )r7   r8   r  rS   rT   rU   r  r*   r*   r+   "test_mutating_input_arrays_y_and_z.
  s   rM  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   r.   r/   r   N)r   r  rS  r>   r?   r@   r;  rt   Zget_offsetssuperry  Zget_facecolors)rS   rT   rU   r   rC   r%   Zpath3dr*   r*   r+   test_scatter_masked_colorH
  s   
rO  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   r.   r/   r   r   r   r   r   r  r.  r     )r   r   )r>   r   r?   r@   r   r`  r  r  rS  rc  r.  r   r<  r*   r*   r+   test_surface3d_zsort_infb
  s   
*rQ  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.r  r  r  r   Tr   )r  r  r  r   r   re  r   r  )r  r   r*   r*   r+   &test_Poly3DCollection_init_value_errorp
  s   "rR  c                  C   s@   t  } | jddd}|jdddtg dd | j  d S )Nr  r.   r/   r   r   r<  r   )r>   r?   r@   r;  r   r   r   r   rB   r*   r*   r+   %test_ndarray_color_kwargs_value_errorz
  s   rS  )	functoolsr   platformsysr  Zmpl_toolkits.mplot3dr   r   r   r   Zmpl_toolkits.mplot3d.axes3dr   r  Z
matplotlibr   Zmatplotlib.backend_basesr   r   r	   r
   r   r   r   rJ  Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing.widgetsr   Zmatplotlib.collectionsr   r   Zmatplotlib.patchesr   r   Zmatplotlib.pathr   Zmatplotlib.textr   Zmatplotlib.pyplotZpyplotr>   numpyr   partialr  r,   r9   rD   rN   r[   rp   ru   r{   r   r   r   r   r   r   machiner   r   r   r   markZparametrizer  r  r  r  r  r   r3  r7  r=  r@  rA  rF  rS  rk  rq  rs  ru  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  r  r  r  r$  r.  r1  r7  r:  r>  rC  rG  rN  rQ  rT  rU  rX  r_  rS  r  ri  rj  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ZRIGHTr  r   contextr  r	  r  r  r  r  r  r  tupler  r  r  r   r%  r(  r+  r1  r3  rA  strrE  rH  rK  rL  rM  rO  rQ  rR  rS  r*   r*   r*   r+   <module>   s   
	




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

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