o
    li\                     @   s   d dl Z d dlZd dlZd dlmZmZmZm	Z
mZmZmZ ddlmZmZ ejddddd	d
ZdddZejddddd Zdd ZG dd de
jZG dd deZG dd deZG dd deZdS )    N)_apiartistlinesaxispatches
transformscolors   )art3dproj3d3.6z$a vendored copy of _move_from_center)alternativeTTTc                 C   s   t | |||dS )g
    For each coordinate where *axmask* is True, move *coord* away from
    *centers* by *deltas*.
    )axmask)_move_from_centercoordcentersdeltasr    r   Y/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/mpl_toolkits/mplot3d/axis3d.pymove_from_center   s   r   c                 C   s&   t | } | |t d| |  |  S )r   r	   )npasarraycopysignr   r   r   r   r      s   
r   z(a vendored copy of _tick_update_positionc                 C   s   t | ||| dS ).Update tick line and label position and style.N)_tick_update_positionticktickxstickyslabelposr   r   r   tick_update_position"   s   r#   c                 C   sl   | j | | j| | jd | jd | jd | jd | j|| | j	dgdg dS )r   TF- r   N)
label1set_positionlabel2	tick1lineset_visible	tick2lineset_linestyle
set_markerset_datagridliner   r   r   r   r   (   s   r   c                       sz  e Zd ZdZdZddddddddddd	dd
ZddddZddddZ fddZe	
ee_ejdddedd Zdd Zejddddd Zd? fdd	Zd? fdd	Zedd d! Zd"d# Zd?d$d%Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zejd2d3 Zd?d4d5d6d7Z ejdd8dd9ed:d d;d Z!ejdd<dd9ed=d d>d Z"  Z#S )@AxiszAn Axis class for the 3D plots.))r            )r	            )r   r	   r6   r3   )r1   r4   r5   r2   )r   r	   r4   r1   )r3   r6   r5   r2   r   r	   )r	   r   r4   )itickdirjuggled)r   r	   r4   r4   )r   r4   r	   )xyzN)rotate_labelc                O      t  S Nlocals)selfadirv_intervalxd_intervalxaxesr=   argskwargsr   r   r   	_old_initE   s   zAxis._old_initc                K   r>   r?   r@   )rB   rF   r=   rH   r   r   r   	_new_initI   s   zAxis._new_initc                    s  t j| j| jgg|R i |}d|v r;t jddtt| j dd |d | j	kr;t
dt| j d|d |d }|d	 }|d
d}|d }| j	}| j|  | _| jddddtjd| d dddd tjd r| jdddddddd | jd d tjd! tjd! d"i nD| jtjd# tjd$ dtjd% tjd& tjd' dd | jd d |d(v rtjd) ntjd* |d(v rtjd+ ntjd, d"i t j|g|R i | d-|v r| j|d-   d.|v r| j|d.   | | |   d S )/NrC   r   zUThe signature of 3D Axis constructors has changed in %(since)s; the new signature is T)messagependingzCannot instantiate z with adir=rF   r=   rG   r   rH   centeranchor)vaharotation_modezaxes3d.zaxis.panecolorg?g?)inward_factoroutward_factor)labelcolorr   z_internal.classic_modeg      ?)r   r   r   r	   )	linewidthrU   )?rW   rW   r	   g      ?r$   )rU   rV   	linestyle)axislinegridr   rV   zlines.linewidth)TFzaxes.linewidthzaxes.edgecolorz
grid.colorzgrid.linewidthzgrid.linestylexzzxtick.major.widthzytick.major.widthzxtick.minor.widthzytick.minor.widthrE   rD   )r   select_matching_signaturerI   rJ   warn_deprecatedinspect	signaturetype__init__	axis_name
ValueError__name__get_AXINFOcopy_axinfoupdatemplrcParamssuperset_data_intervalset_view_intervalset_rotate_label_init3d)rB   rG   rH   paramsrF   r=   name	__class__r   r   ra   L   s   






zAxis.__init__r   T)rL   c                 C   s   | j S r?   )rb   rB   r   r   r   <lambda>   s    zAxis.<lambda>c                 C   s   t jdd| jd d | jd d dd| _tjddgddggd	d
| _| | jd  | j	| j | j	| j t
g | _| j	| j | j	| j | j	| j | jj| j_| jj| j_d S )N)r   r   rY   rV   rU   T)xdataydatarV   rU   antialiasedr   r	   F)closed)mlinesLine2Drh   linempatchesPolygonpaneset_pane_colorrF   _set_artist_propsr
   Line3DCollection	gridlinesrT   
offsetText	transData
_transformru   r   r   r   rp      s    zAxis._init3dc                 C   s   |    d S r?   )rp   ru   r   r   r   init3d   s   zAxis.init3dc                    F   t  |}|D ]}|j|j|j|j|jfD ]	}|| jj	 qq|S r?   )
rl   get_major_ticksr)   r+   r/   r&   r(   set_transformrF   r   rB   numtickstickstobjrs   r   r   r         zAxis.get_major_ticksc                    r   r?   )
rl   get_minor_ticksr)   r+   r/   r&   r(   r   rF   r   r   rs   r   r   r      r   zAxis.get_minor_ticksc                 C   s   |  | dS )zSet pane position.N)_set_pane_posrB   xysr   r   r   set_pane_pos   s   zAxis.set_pane_posc                 C   s0   t |}|d d d df }|| j_d| _d S )Nr4   T)r   r   r   xystaler   r   r   r   r      s   

zAxis._set_pane_posc                 C   sH   t ||}|| jd< | j| | j| | j|d  d| _dS )z
        Set pane color.

        Parameters
        ----------
        color : color
            Color for axis pane.
        alpha : float, optional
            Alpha value for axis pane. If None, base it on *color*.
        rU   TN)mcolorsto_rgbarh   r   set_edgecolorset_facecolor	set_alphar   )rB   rU   alphar   r   r   r      s   

zAxis.set_pane_colorc                 C   s   || _ d| _dS )z
        Whether to rotate the axis label: True, False or None.
        If set to None the label will be rotated if longer than 4 chars.
        TN)_rotate_labelr   )rB   valr   r   r   ro      s   
zAxis.set_rotate_labelc                 C   s   | j d ur| j S t|dkS )Nr3   )r   len)rB   textr   r   r   get_rotate_label   s   
zAxis.get_rotate_labelc                 C   s  t | j | j | j gj\}}d||  }|| d }|d| 8 }|d| 7 }|d |d |d |d |d |d f}| j|| jj}t 	d}t 	d}	t
dD ]$}
t || jd|
  df ||
< t || jd|
 d  df |	|
< qW||	k }t ||	 t tjk}t |dkrt | d d }|dkrt dd|d g}n|dkrt d|d d	g}n|dkrt |d d	d	g}||||||fS )
N      ?   g      ?r   r	   r4   r1   TF)r   arrayrF   
get_xbound
get_ybound
get_zboundT_tunit_cubeMzerosrangemean_PLANESabsfinfofloatepssumwhere)rB   rendererminsmaxsr   r   boundsbounds_projmeans_z0means_z1r7   highsequalsverticalr   r   r   _get_coord_info   s:   (

 &zAxis._get_coord_infoc           	      C   s   ||g}|ddd }|||g|||g|||gg}|| j j | jd  }| jd }|d  }|d |d  ||d < | }|d |d  ||d < ||fS )z3Get the edge points for the black bolded axis line.Nr   r7   r9   r   r	   )rF   _vertical_axisrh   rg   )	rB   minmaxmaxminmbmb_revmmr9   edge_point_0edge_point_1r   r   r   _get_axis_line_edge_points  s   
zAxis._get_axis_line_edge_pointsc                 C   s`   dd | j  D }dd | j  D }| jd }| jjd }t|| t|| | }|S )z
        Get the direction of the tick.

        Returns
        -------
        tickdir : int
            Index which indicates which coordinate the tick line will
            align with.
        c                 S      g | ]}|d  qS )r8   r   .0vr   r   r   
<listcomp>;      z%Axis._get_tickdir.<locals>.<listcomp>c                 S   r   )r7   r   r   r   r   r   r   <  r   r7   r4   )rf   valuesrh   rF   r   r   roll)rB   tickdirs_baseinfo_ir7   jr8   r   r   r   _get_tickdir0  s   
zAxis._get_tickdirc                    s   |j d|  d | |\}}}} }| j}|d }|| s'| jd|  }	n	| jd| d  }	 fdd|	D }
| |
 | j| |d dS )	z
        Draw pane.

        Parameters
        ----------
        renderer : `~matplotlib.backend_bases.RendererBase` subclass
        pane3dgidr7   r4   r	   c                    s   g | ]} | qS r   r   )r   ptcr   r   r   V  r   z"Axis.draw_pane.<locals>.<listcomp>N)	
open_groupget_gidr   rh   r   r   r   drawclose_group)rB   r   r   r   r   r   r   infoindexplaner   r   r   r   	draw_paneD  s   
zAxis.draw_panec           ?      C   s  | j j| j_|jd|  d |  }| j}|d }|d }| |\}}}}	}
}t	
|||}t	
| ||}| ||\}}t||g| j j}t	|}| j|d |d  | j| | j j|dddf g| j j|dddf g d \}}d||  }| jj }|| j jj}td	| }d
| }d}| j| | |	 }g d}d||< t||||}tjg || j jR  \}}}| j||f | | j  rt!"t	#t	$||}| j%| | j&|d d  | j'|d d  | j(|d d  | j| |d dkr|}d} n|}d} t||||}!tjg |!| j jR  \}"}#}$| j)*| j+j,-  | j)|"|#f t!"t	#t	$||}| j)%| | j)(d tjg || j jR  }%|%|d  ||d | f kr|%| ||| f krt	.|d dkr|/ g dkr|dv rd}&n'd}&n$d}&n!|%| ||| f krt	.|d dkr|dkrdnd}&nd}&| j)&d | j)'|& | j)| | j j0rMt1|rMt	2|t1|df}'dd |D |'d d |f< t	j3|'|'|'gdd}(||d  |(d d d|d f< ||d  |(d d d|d f< | j45|( |d })| j46|)d  | j47|)d  | j48|)d  | j49  | j4| | : }*||* rZ|	|* n|	|*  }+|d  },|,d! |+ }-|,d" |+ }.|,d }/||* }0|0|- }1|0|. }2d#}3||	 }4|D ]p}5|; }!|5< |!|< |1|!|*< tjg |!| j jR  \}6}7}8|2|!|*< tjg |!| j jR  \}9}:};|5= |3 |4 }|0|!|*< t|!|||}!tjg |!| j jR  \}<}=}>t>|5|6|9f|7|:f|<|=f |5j?7|/|5j@  |5| q|Ad d| _Bd S )$Naxis3dr   r7   r9   r   r	   r4   r   g      R@0   g      5@r   FrT   rO   rP   rQ   rN   r8   )FTT)r	   r4   leftrightrM   c                 S   s   g | ]}|  qS r   )get_loc)r   r   r   r   r   r     r   zAxis.draw.<locals>.<listcomp>)r   rZ   rU   rV   rX   r   rS   rR   g       @)CrF   r   rT   r   r   r   _update_ticksrh   r   r   r   r   r   proj_trans_pointsr   r   r}   r.   r   	transAxes	transformfiguredpi_scale_transinvertedbboxsizer   labelpadr   proj_transformr'   r   get_textr
   _norm_text_anglerad2degarctan2set_rotationset_vaset_haset_rotation_moder   set_textmajor	formatter
get_offsetcount_nonzerotolist
_draw_gridr   tilestackr   set_segments	set_colorset_linewidthr,   do_3d_projectionr   rg   r   get_padr   r)   _majorr   r   )?rB   r   r   r   r   r9   r   r   r   r   r   r   r   r   edgep1edgep2pepdxdylxyzreltoinches	ax_inchesax_points_estimatedeltas_per_pointdefault_offsetlabeldeltasr   tlxtlytlzangle
outeredgep
outerindexposolxolyolzcentptalignxyz0r   gridinfor8   	tickdelta	tick_infotick_outtick_intick_lwedgep1_tickdirout_tickdir
in_tickdirdefault_label_offsetpointsr   x1y1z1x2y2z2lxlylzr   r   r   r   \  s   




z	Axis.drawF)for_layout_onlyc             	   C   s0  |   sd S |  }|  }g | t|| t|}|  \}}||kr-||}}|  ||g}g }	|D ]"}
z|  |
	 }W n	 t
yP   Y q:w t||r\|	|
 q:|	}| ||\}}g }| j  rw|| j| | j  r|s| j r|| j| tjg |||S r?   )get_visibleget_majorticklocsget_minorticklocsr   r   r   get_view_intervalget_transformr   r   AssertionErrormtransforms_interval_contains_closeappend_get_ticklabel_bboxesr}   get_window_extentrT   r   Bboxunion)rB   r   r:  
major_locs
minor_locsr   view_low	view_high
interval_tticks_to_drawr   loc_tbb_1bb_2otherr   r   r   get_tightbbox  s>   


zAxis.get_tightbboxget_data_interval)r   rL   c                 C      |   S r?   )rS  ru   r   r   r   rv   D      c                 C   
   | j | S r?   )rm   rB   r   r   r   r   rv   E     
 r>  c                 C   rT  r?   )r>  ru   r   r   r   rv   H  rU  c                 C   rV  r?   )rn   rW  r   r   r   rv   I  rX  r?   )$rd   
__module____qualname____doc__r   rf   rI   rJ   ra   r^   r_   __signature__r   
deprecatedpropertyrC   rp   r   r   r   r   r   r   ro   r   r   r   r   r   r   allow_rasterizationr   rR  
d_interval
v_interval__classcell__r   r   rs   r   r0   5   s`    


P



)
 8.r0   c                   @   4   e Zd ZdZeddd\ZZeddd\ZZ	dS )XAxisr:   view
xy_viewLim	intervalxdata
xy_dataLimN
rd   rY  rZ  rb   maxis_make_getset_intervalr>  rn   rS  rm   r   r   r   r   rd  L      rd  c                   @   rc  )YAxisr;   re  rf  	intervalyrh  ri  Nrj  r   r   r   r   rn  T  rm  rn  c                   @   rc  )ZAxisr<   re  
zz_viewLimrg  rh  
zz_dataLimNrj  r   r   r   r   rp  \  rm  rp  )r   )r^   numpyr   
matplotlibrj   r   r   r   r{   r   rk  r   r~   r   rA  r   r   r%   r
   r   r]  r   r   r#   r   rd  r0   rn  rp  r   r   r   r   <module>   s&   $
	
    