
    G8c\                     4   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       Zdd	Z ej(                  dd
      d        Zd Z G d de
j2                        Z G d de      Z G d de      Z G d de      Zy)    N)_apiartistlinesaxispatches
transformscolors   )art3dproj3d3.6z$a vendored copy of _move_from_center)alternativec                      t        | |||      S )g
    For each coordinate where *axmask* is True, move *coord* away from
    *centers* by *deltas*.
    )axmask)_move_from_centercoordcentersdeltasr   s       =/usr/lib/python3/dist-packages/mpl_toolkits/mplot3d/axis3d.pymove_from_centerr      s     UGVFCC    c                 p    t        j                  |       } | |t        j                  d| |z
        z  |z  z   S )r   r
   )npasarraycopysignr   s       r   r   r      s6    
 JJuE6BKK57?;;fDDDr   z(a vendored copy of _tick_update_positionc                      t        | |||       y).Update tick line and label position and style.N)_tick_update_positionticktickxstickyslabelposs       r   tick_update_positionr&   "   s     $9r   c                    | j                   j                  |       | j                  j                  |       | j                  j	                  d       | j
                  j	                  d       | j                  j                  d       | j                  j                  d       | j                  j                  ||       | j                  j                  dd       y)r   TF- r   N)
label1set_positionlabel2	tick1lineset_visible	tick2lineset_linestyle
set_markerset_datagridliner!   s       r   r    r    (   s     	KKX&KKX&NNt$NNu%NN  %NNb!NNFF+MM1a r   c                   N    e Zd ZdZdZddddddddd	dd
dddddZdddZdddZ fdZ e	j                  e      e_          ej                  dd       ed             Zd Z ej                  dd      d        Zd/ fd	Zd/ fd	Z ej                  d      d        Zd Zd/dZd Zd Zd  Zd! Zd" Zd# Zej<                  d$        Zd/d%d&d'Z   ej                  dd(d)       ed* d+             Z!  ej                  dd,d)       ed- d.             Z" xZ#S )0AxiszAn Axis class for the 3D plots.))r            )r
            )r   r
   r;   r8   )r6   r9   r:   r7   )r   r
   r9   r6   )r8   r;   r:   r7   r   r
   )r
   r   r9   )ffffff?r<   r<         ?)itickdirjuggledcolor)r   r
   r9   )?rB   rB   r=   r9   )r   r9   r
   )皙?rC   rC   r=   )xyzN)rotate_labelc                    t               S Nlocals)selfadirv_intervalxd_intervalxaxesrG   argskwargss           r   	_old_initzAxis._old_initH   s	    xr   c                    t               S rI   rJ   )rL   rP   rG   rR   s       r   	_new_initzAxis._new_initL   s	    xr   c           	      8   t        j                  | j                  | j                  gg|i |}d|v rzt        j                  ddt        j                  t        |       j                         d       |d   | j                  k7  r't        dt        |       j                   d|d         |d   }|d	   }|j                  d
d      }|d   }| j                  }| j                  |   j                         | _        t         j"                  d   rT| j                  j%                  dddddt         j"                  d   t         j"                  d   dddddddddd       n| j                  j%                  ddddd|dv rt         j"                  d   nt         j"                  d   |dv rt         j"                  d    nt         j"                  d!   ddt         j"                  d"   t         j"                  d#   dt         j"                  d$   t         j"                  d%   t         j"                  d&   dd       t'        |    |g|i | d'|v r | j(                  |d'     d(|v r | j*                  |d(     | j-                  |       | j/                          y ))NrM   r   zUThe signature of 3D Axis constructors has changed in %(since)s; the new signature is T)messagependingzCannot instantiate z with adir=rP   rG   rQ    rR   z_internal.classic_modecenter)vahag?g?zlines.linewidth)TF)inward_factoroutward_factor	linewidthg      ?)r   r   r   r
   )r_   rA   )rB   rB   rB   r
   g      ?r(   )rA   r_   	linestyle)labelr"   axislinegridxzzxtick.major.widthzytick.major.widthzxtick.minor.widthzytick.minor.widthzaxes.linewidthzaxes.edgecolorz
grid.colorzgrid.linewidthzgrid.linestylerO   rN   )r   select_matching_signaturerS   rU   warn_deprecatedinspect	signaturetype__init__	axis_name
ValueError__name__get_AXINFOcopy_axinfomplrcParamsupdatesuperset_data_intervalset_view_intervalset_rotate_label_init3d)rL   rQ   rR   paramsrP   rG   name	__class__s          r   rj   zAxis.__init__O   s   //^^T^^,?/3?7=?V   ">$$T$Z%8%89: <EIK f~/ #6tDz7J7J6K L..4Vn-?"A B Bf~n-zz&"%!~~ ||D)..0<<01LL (9%(&)!ll+<="||,=>" +/F/!$!$! $ LL (9%(&) BFCLL)<=!$.A!BAECLL)<=!$.A!B" "%.>!? \\*:;
 !\\,7!$.>!?!$.>!?%! 2 	/// F""D""F=$9:F""D""F=$9:l+r   r   T)rX   c                     | j                   S rI   )rk   rL   s    r   <lambda>zAxis.<lambda>   s
    dnn r   c                 b   t        j                  dd| j                  d   d   | j                  d   d   d      | _        t	        j
                  t        j                  ddgddgg      d	
      | _        | j                  | j                  d          | j                  j                  | j                         | j                  j                  | j                         t        j                  g       | _        | j                  j                  | j                         | j                  j                  | j                         | j                  j                  | j                          | j                  j"                  | j                  _        | j                  j"                  | j                   _        y )N)r   r   rb   r_   rA   T)xdataydatar_   rA   antialiasedr   r
   F)closed)mlinesLine2Drq   linempatchesPolygonr   arraypaneset_pane_colorrP   _set_artist_propsr   Line3DCollection	gridlinesra   
offsetText	transData
_transformr~   s    r   ry   zAxis._init3d   s.   MMll:.{;,,z*73		 $$HHq!fq!f%&u6	DLL12		##DII.		##DII.//3		##DNN3		##DJJ/		##DOO4 $		 3 3

%)YY%8%8"r   c                 $    | j                          y rI   )ry   r~   s    r   init3dzAxis.init3d   s    r   c                     t         |   |      }|D ]e  }|j                  |j                  |j                  |j
                  |j                  fD ]'  }|j                  | j                  j                         ) g |S rI   )
ru   get_major_ticksr-   r/   r3   r*   r,   set_transformrP   r   rL   numtickstickstobjr|   s        r   r   zAxis.get_major_ticks   q    '1 	7AKKajj!((AHHN 7!!$))"5"567	7 r   c                     t         |   |      }|D ]e  }|j                  |j                  |j                  |j
                  |j                  fD ]'  }|j                  | j                  j                         ) g |S rI   )
ru   get_minor_ticksr-   r/   r3   r*   r,   r   rP   r   r   s        r   r   zAxis.get_minor_ticks   r   r   c                 &    | j                  |       y rI   )_set_pane_posrL   xyss     r   set_pane_poszAxis.set_pane_pos   s    3r   c                 t    t        j                  |      }|d d d df   }|| j                  _        d| _        y )Nr9   T)r   r   r   xystaler   s     r   r   zAxis._set_pane_pos   s2    jjo!RaR%j		
r   c                    t        j                  ||      }|| j                  d<   | j                  j	                  |       | j                  j                  |       | j                  j                  |d          d| _        y)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*.
        rA   TN)mcolorsto_rgbarq   r   set_edgecolorset_facecolor	set_alphar   )rL   rA   alphas      r   r   zAxis.set_pane_color   sc     u- %W		&		&		E"I&
r   c                      || _         d| _        y)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   )rL   vals     r   rx   zAxis.set_rotate_label   s    
 !
r   c                 N    | j                   | j                   S t        |      dkD  S )Nr8   )r   len)rL   texts     r   get_rotate_labelzAxis.get_rotate_label   s(    )%%%t9q= r   c                    t        j                  | j                  j                         | j                  j	                         | j                  j                         g      j                  \  }}d||z   z  }||z
  dz  }|d|z  z  }|d|z  z  }|d   |d   |d   |d   |d   |d   f}| j                  j                  || j                  j                        }t        j                  d      }t        j                  d      }	t        d      D ]_  }
t        j                  || j                  d|
z     df         ||
<   t        j                  || j                  d|
z  dz      df         |	|
<   a ||	k  }t        j                  ||	z
        t        j                  t              j                   k  }t        j"                  |      dk(  r~t        j$                  |       d   d   }|dk(  rt        j                  dd|d   g      }nA|dk(  rt        j                  d|d   d	g      }n |dk(  rt        j                  |d   d	d	g      }||||||fS )
Nr=      g      ?r   r
   r9   r6   TF)r   r   rP   
get_xbound
get_ybound
get_zboundT
tunit_cubeMzerosrangemean_PLANESabsfinfofloatepssumwhere)rL   rendererminsmaxsr   r   boundsbounds_projmeans_z0means_z1r>   highsequalsverticals                 r   _get_coord_infozAxis._get_coord_info   s1   XXII  "II  "II  "
  1	 	d % +#vv a$q'47DGT!Wd1gEii**6499;;? 88A;88A;q 	KA''+dll1q5.A1.D"EFHQK''+dll1q519.Eq.H"IJHQK	K 8# 8+,0C0CC66&>Qxx(+A.H1}$eAh!78Q$a%!89Q%(E5!9:T7FK>>r   c                 8   ||g}|ddd   }|||g|||g|||gg}|| j                   j                     | j                  d      }| j                  d   }|d   j                         }|d   |d      ||d   <   |j                         }|d   |d      ||d   <   ||fS )z3Get the edge points for the black bolded axis line.Nr   r>   r@   r   r
   )rP   _vertical_axisrq   rp   )	rL   minmaxmaxminmbmb_revmmr@   edge_point_0edge_point_1s	            r   _get_axis_line_edge_pointszAxis._get_axis_line_edge_points  s    
 fDbD66"VVR$82r2,G		(()$,,s*;<,,y)!uzz|#%a5#4WQZ #((*#%a5#4WQZ \))r   c                 t   | j                   j                         D cg c]  }|d   	 }}| j                   j                         D cg c]  }|d   	 }}| j                  d   }| j                  j                  dz
  }t        j                  ||       t        j                  ||         |   }|S c c}w c c}w )z
        Get the direction of the tick.

        Returns
        -------
        tickdir : int
            Index which indicates which coordinate the tick line will
            align with.
        r?   r>   r9   )ro   valuesrq   rP   r   r   roll)rL   vtickdirs_baseinfo_ir>   jr?   s          r   _get_tickdirzAxis._get_tickdir.  s     04||/B/B/DE!9EE"&,,"5"5"78Q!C&88LLII$$q(''&1"%bggmQ&?@C F8s   B0B5c                    |j                  d| j                                | j                  |      \  }}}}}}| j                  }|d   }	||	   s| j                  d|	z     }
n| j                  d|	z  dz      }
|
D cg c]  }||   	 }}| j                  |       | j                  j                  |       |j                  d       y c c}w )Npane3dgidr>   r9   r
   )	
open_groupget_gidr   rq   r   r   r   drawclose_group)rL   r   r   r   r   r   tcr   infoindexplanepr   s                r   	draw_panezAxis.draw_paneB  s    H$,,.9151E1Eh1O.dGVR||S	U|LLU+ELLUQ/E#$r!u$$3		x X&	 %s   <Cc                 &   | j                   j                  | j                  _        |j	                  d| j                                | j                         }| j                  }|d   }|d   }| j                  |      \  }}}}	}
}t        j                  |||      }t        j                  | ||      }| j                  ||      \  }}t        j                  ||g| j                   j                        }t        j                  |      }| j                   j#                  |d   |d          | j                   j%                  |       | j                   j&                  j)                  |dddf   g      | j                   j&                  j)                  |dddf   g      z
  d   \  }}d||z   z  }| j*                  j,                  j/                         }|j)                  | j                   j0                  j2                        }t5        d	|z        }d
|z  }d}| j6                  |z   |z  |	z  }g d}d||<   t9        ||||      }t        j:                  g || j                   j                   \  }}}| j                  j=                  ||f       | j?                  | j                  jA                               rWtC        jD                  t        jF                  t        jH                  ||                  }| j                  jK                  |       | j                  jM                  |d   d          | j                  jO                  |d   d          | j                  j%                  |       |d   dk(  r|}d} n|}d} t9        ||||      }!t        j:                  g |!| j                   j                   \  }"}#}$| jP                  jS                  | jT                  jV                  jY                                | jP                  j=                  |"|#f       tC        jD                  t        jF                  t        jH                  ||                  }| jP                  jK                  |       | jP                  j[                  d       t        j:                  g || j                   j                   }%|%|d      ||d   | f   kD  rJ|%|   ||| f   k  r:t        j\                  |      dz  dk(  r|j_                         g dk(  r|dv rd}&n:d}&n7d}&n4|%|   ||| f   kD  r%t        j\                  |      dz  dk(  r
|dk(  rdnd}&nd}&| jP                  jM                  d       | jP                  jO                  |&       | jP                  j%                  |       | j                   j`                  rAtc        |      r5t        jd                  |tc        |      df      }'|D (cg c]  }(|(jg                          c}(|'d d |f<   t        jh                  |'|'|'gd      })||dz
     |)d d d|dz
  f<   ||dz
     |)d d d|dz
  f<   | jj                  jm                  |)       |d   }*| jj                  jo                  |*d          | jj                  jq                  |*d          | jj                  js                  |*d          | jj                  ju                          | jj                  j%                  |       | jw                         }+||+   r|	|+   n|	|+    },|d   }-|-d   |,z  }.|-d   |,z  }/|-d   }0||+   }1|1|.z   }2|1|/z
  }3d }4||	z  }5|D ]3  }(|jy                         }!|(jg                         |!|<   |2|!|+<   t        j:                  g |!| j                   j                   \  }6}7}8|3|!|+<   t        j:                  g |!| j                   j                   \  }9}:};|(j{                         |4z   |5z  }|1|!|+<   t9        |!|||      }!t        j:                  g |!| j                   j                   \  }<}=}>t}        |(|6|9f|7|:f|<|=f       |(j~                  jq                  |0|(j                            |(j%                  |       6 |j                  d       d| _B        y c c}(w )!Naxis3dr   r>   r@   r   r
   r9   r=   g      R@0   g      5@TTTFra   r[   r\   anchorr?   )FTT)r
   r9   leftrightrZ   )r   rc   rA   r_   r`   r"   r^   r]   g       @)CrP   r   ra   r   r   r   _update_ticksrq   r   r   r   r   r   proj_trans_pointsr   r   r   r2   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_har   set_textmajor	formatter
get_offsetset_rotation_modecount_nonzerotolist
_draw_gridr   tileget_locstackr   set_segments	set_colorset_linewidthr0   do_3d_projectionr   rp   get_padr    r-   _majorr   r   )?rL   r   r   r   r   r@   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"   r   gridinfor?   	tickdelta	tick_infotick_outtick_intick_lwedgep1_tickdirout_tickdir
in_tickdirdefault_label_offsetpointsx1y1z1x2y2z2lxlylzs?                                                                  r   r   z	Axis.drawS  s    $		 3 3

H$,,.9""$ ||S	y/151E1Eh1O.dGVR%t,5&$- 88H &&'7Ejjo		3q63q6*		x  ))%%//QqS!V>))%%//QqS!V>?@ACB fvo& kk11::<))$))..*=*=>	 y1 22]]^+/??&H 	#u wVD--AtATYY[[AS#

c
+  !4!4!67**2::bjjR6H+IJEJJ##E*

$w--.

$w--.

! 1:?JJJJ
G[&I--@s@DIIKK@S#  !5!5!@!@!BC$$c3Z0&&rzz"**R2D'EF$$U+ 	))(3" &&===$y/"Si*)D%EEuUJ%6!77((/!3q8 <<>%88Uf_"E#E  uE:$5 66((/!3q8#(A:6  x(u%X&99CJ776CJ?3D9>?dlln?DEN HHdD$/a8E%+EAI%6E!Q	/"%+EAI%6E!Q	/"NN''.F|HNN$$Xg%67NN((+)>?NN((+)>?NN++-NN) ##%',W~F7OF7O;K	L	-.:O,y8K($x/#g-
!!F* 	 D++-CCJ&CL..AATYY[[AJBB%CL..AATYY[[AJBB  <<>,@@FJK)CL#C+vFC..AATYY[[AJBB!$R2r(RHENN(()=>IIh%	 ( 	X&
i @s   bF)for_layout_onlyc                   | j                         sy | j                         }| j                         }g | j                  t	        |            | j                  t	        |            }| j                         \  }}||kD  r||}}| j                         j                  ||g      }g }	|D ]X  }
	 | j                         j                  |
j                               }t        j                  ||      sH|	j                  |
       Z |	}| j                  ||      \  }}g }| j                  j                         r*|j                  | j                  j!                  |             | j"                  j                         rF|sD| j"                  j%                         r*|j                  | j"                  j!                  |             t        j&                  j)                  g |||      S # t        $ r Y Iw xY wrI   )get_visibleget_majorticklocsget_minorticklocsr   r   r   get_view_intervalget_transformr   r  mtransforms_interval_contains_closeappendAssertionError_get_ticklabel_bboxesr   get_window_extentra   r  Bboxunion)rL   r   rK  
major_locs
minor_locsr   view_low	view_high
interval_tticks_to_drawr"   loc_tbb_1bb_2others                  r   get_tightbboxzAxis.get_tightbbox
  s   ! ++-
++-
9$&&s:7 9&&s:79"446)i"+XiH'')33Xy4IJ
 		/D/**,66t||~F 77
EJ!((.		/ //x@
d99  "LL44X>?JJ""$_

##%LL55h?@%%&<&<t&<e&<==' "  s   --G&&	G32G3get_data_interval)r   rX   c                 "    | j                         S rI   )re  r~   s    r   r   zAxis.<lambda>:      $"8"8": r   c                       | j                   | S rI   )rv   rL   r   s     r   r   zAxis.<lambda>;      *@$*@*@&*I r   rP  c                 "    | j                         S rI   )rP  r~   s    r   r   zAxis.<lambda>>  rg  r   c                       | j                   | S rI   )rw   ri  s     r   r   zAxis.<lambda>?  rj  r   rI   )$rm   
__module____qualname____doc__r   ro   rS   rU   rj   rg   rh   __signature__r   
deprecatedpropertyrM   ry   r   r   r   r   r   r   rx   r   r   r   r   r   r   allow_rasterizationr   rd  
d_interval
v_interval__classcell__)r|   s   @r   r5   r5   5   s   )G y.0y.0y13G  $ /3 IV /W..y9H/?4??5$/,-/D9, T__UD) * T__U   $!'?R*&('" r  rl,>e ,>\>.>:IKLJ>.>:IKLJr   r5   c                   l    e Zd ZdZ ej
                  ddd      \  ZZ ej
                  ddd      \  ZZ	y)XAxisrD   view
xy_viewLim	intervalxdata
xy_dataLimN
rm   rm  rn  rk   maxis_make_getset_intervalrP  rw   re  rv   rY   r   r   rx  rx  B  G    I+F5+F+Fk,+((+F5+F+Fk,+((r   rx  c                   l    e Zd ZdZ ej
                  ddd      \  ZZ ej
                  ddd      \  ZZ	y)YAxisrE   ry  rz  	intervalyr|  r}  Nr~  rY   r   r   r  r  J  r  r   r  c                   l    e Zd ZdZ ej
                  ddd      \  ZZ ej
                  ddd      \  ZZ	y)ZAxisrF   ry  
zz_viewLimr{  r|  
zz_dataLimNr~  rY   r   r   r  r  R  r  r   r  )r   )rg   numpyr   
matplotlibrr   r   r   r   r   r   r  r   r   r   rR  r	   r   r)   r   r   rq  r   r   r&   r    rx  r5   r  r  rY   r   r   <module>r     s   
   2 2 2  $JKD LDE $NO: P:

!JL5;; JLZ+D ++D ++D +r   