
    ha(                     ~   S r SSKrSSKrSSKrSSKJrJr  SSKJ	r
  SSKJr  SSKJr  SSKJrJr  SSKJr  SS	KJr   " S
 S\R,                  5      r " S S\R,                  5      r " S S\5      r " S S\R2                  5      r " S S5      r\R6                  " \S5      r\" \" \R:                  5      5      r\rg)z/
An experimental support for curvilinear grid.
    N)_apicbook)Path)host_axes_class_factory   )	axislinesgrid_helper_curvelinear)
AxisArtist)ExtremeFinderSimplec                       \ rS rSrSrg)FloatingAxisArtistHelper    N)__name__
__module____qualname____firstlineno____static_attributes__r       W/var/www/html/env/lib/python3.13/site-packages/mpl_toolkits/axisartist/floating_axes.pyr   r      s    r   r   c                   >   ^  \ rS rSrSU 4S jjrS rS rS rSrU =r	$ )FixedAxisArtistHelper   c           	         > UR                   R                  " S/S-  6 u  pEpg[        R                  " [	        US4US4US4US4S9US9u  p[
        T
U ]  XXS9  Uc  U	nX0l        Xl        Xl	        X l
        g)ze
nth_coord = along which coordinate value varies.
 nth_coord = 0 ->  x axis, nth_coord = 1 -> y axis
N   r   r   leftrightbottomtop)sideaxis_direction)grid_finderextreme_finderr   check_getitemdictsuper__init__nth_coord_ticksvaluegrid_helper_side)selfr,   r!   r*   lon1lon2lat1lat2r+   	nth_coord	__class__s             r   r)   FixedAxisArtistHelper.__init__   s    
 "-!8!8!G!G$RS!TD--tQiay$q	R 	L"'O.
&
r   c                 p    U R                   R                  U5        U R                   R                  U l        g N)r,   
update_lim
_grid_info)r.   axess     r   r8    FixedAxisArtistHelper.update_lim1   s)    ##D)**55r   c                   ^^^^^^^^^  U R                   R                  mU R                  S   u  p#nX$-  nU R                  S   u  pgnXh-  n	U R                   R                  R                  " S/S-  6 n
[	        U
SS 5      u  p[	        U
SS 5      u  pUU4S jnU R
                  S:X  aN  X:*  X^:*  -  n[        R                  " XR                  UU   X4X45      u  u  mm u  nnu  nnU R                  S   mO]U R
                  S	:X  aM  X:*  X:*  -  n[        R                  " XU   U R                  X4X45      u  u  mm u  nnu  nnU R                  S
   m[        TW5       VVs/ s H  u  nnU(       d  M  UPM     snnm[        R                  " WW5      m[        R                  " WW5      mUS:H  US:H  -  nTU   [        R                  S-  -   TU'   U R                  T5      TR                  -
  m[        R                   " ["        R$                  R&                  S5      mUUUUUUU 4S jnU" 5       [)        / 5      4$ s  snnf )z9tick_loc, tick_angle, tick_label, (optionally) tick_labellat_infolon_infoNr      c                    > TR                  5       TR                  -   nUR                  [        R                  " [        R
                  " X5      5      5      R                  $ r7   )get_transform	transData	transformnpcolumn_stackbroadcast_arraysT)xytrfr:   r$   s      r   trf_xy8FixedAxisArtistHelper.get_tick_iterators.<locals>.trf_xyD   sC    ++->C==1D1DQ1J!KLNNNr   r   
lat_labelsr   
lon_labels)r   r   c               3      >#    [        TTTTT	5       H]  u  pp#nT
R                  X45      nT" US   5      (       d  M+  T" US   5      (       d  M=  X//[        R                  " X#/5      QUP7v   M_     g 7f)Nr   r   )ziprC   rD   rad2deg)rH   rI   normaltangentlabc2angle_normalangle_tangentin_01labelstick_to_axesxx1yy1s         r   f14FixedAxisArtistHelper.get_tick_iterators.<locals>.f1a   ss     3\=&I +fs!++QF3A<<E"Q%LL&E2::v.?#@E#EE Js   7A5A5%A5)r,   r$   r9   r%   sortedr3   r	   _value_and_jacobianr+   rP   rD   arctan2piget_tick_transform	transAxes	functoolspartialmpl
transforms_interval_contains_closeiter)!r.   r:   lat_levslat_n
lat_factoryy0lon_levslon_n
lon_factorxx0extremesxminxmaxyminymaxrK   maskdxx1dyy1dxx2dyy2lmmmr]   rV   rW   r$   rX   rY   rZ   r[   r\   s!    `                       @@@@@@@@r   get_tick_iterators(FixedAxisArtistHelper.get_tick_iterators5   s1    &&22&*ooj&A##&*ooj&A####//>>
KHRaL)
HQRL)
	O >>QKCK0D';;JJD	D<$O 3JS#tltT __\2F^^q KCK0D';;ItzzD<$O 3JS#tltT __\2F #FD 17 11Q! 17zz$-

4.aiDAI&(,ruuqy8R..t4t~~E!!NN33V=	F 	F tT"X~% 8s   $I 6I c                     U R                  U5        [        SSSSS9U R                     u  p#U R                  U   U   u  pE[	        [
        R                  " XE/5      5      $ )N)
lon_lines0r   )r   r   )
lat_lines0r   )r   r   r   )r8   r'   r-   r9   r   rD   rE   )r.   r:   kvxxyys         r   get_lineFixedAxisArtistHelper.get_linej   sa    *+,)+ ,0::7 #A&BOORH-..r   )r9   r-   r,   r*   r+   r7   )
r   r   r   r   r)   r8   r   r   r   __classcell__r4   s   @r   r   r      s    $63j/ /r   r   c                        \ rS rSrS rS rSrg)ExtremeFinderFixedt   c                     Xl         g)z
This subclass always returns the same bounding box.

Parameters
----------
extremes : (float, float, float, float)
    The bounding box that this helper always returns.
N	_extremes)r.   rs   s     r   r)   ExtremeFinderFixed.__init__w   s	     "r   c                     U R                   $ r7   r   )r.   transform_xyx1y1x2y2s         r   __call__ExtremeFinderFixed.__call__   s    ~~r   r   N)r   r   r   r   r)   r   r   r   r   r   r   r   t   s    	"r   r   c                   P   ^  \ rS rSr    SU 4S jjr SS jrS rSS jrSrU =r	$ )	GridHelperCurveLinear   c           	      <   > [         TU ]  U[        U5      UUUUS9  g )N)r%   grid_locator1grid_locator2tick_formatter1tick_formatter2)r(   r)   r   )r.   	aux_transrs   r   r   r   r   r4   s          r   r)   GridHelperCurveLinear.__init__   s-     	(:8(D'4'4)8)8 	 	:r   c                     Uc  U R                   nUc  Un[        XUS9n[        XVUS9nUR                  R	                  S5        UR                  R                  UR                   R                  5        U$ )N)r*   r"   T)r:   r   r
   lineset_clip_onset_clip_boxbbox)r.   locr3   r#   offsetr:   helperaxislines           r   new_fixed_axis$GridHelperCurveLinear.new_fixed_axis   sk    <99D! N 'y2d>J!!$'""8==#5#56r   c                    U R                   c  [        5       U l         U R                   nU R                  nUR                  UR                  XX45      n[        US S 5      u  p[        USS  5      u  pXX4US'   UR                  X5      u  pn[        R                  " U5      nUR                  X5      u  nnn[        R                  " U5      nXU4US'   UUU4US'   UR                  SSX5      US'   UR                  SSUU5      US'   US U U-  nUS U U-  nUR                  UUU:  UU	:  -     UU
U:  UU:  -     XX5      u  nnUUS	'   UUS
'   UR                  " US S USS  /UQ76 u  nnUUS'   UUS'   g )Nr?   rs   r>   r=   r   r   rN   rM   	lon_lines	lat_linesr   r   )r9   r'   r$   r%   inv_transform_xyr_   r   rD   asarrayr   _format_ticks_get_raw_grid_lines)r.   r   r   r   r   	grid_infor$   rs   lon_minlon_maxlat_minlat_maxro   rp   rq   rk   rl   rm   
lon_values
lat_valuesr   r   s                         r   _update_grid"GridHelperCurveLinear._update_grid   s   ??""fDOOO	&&--k.J.J.0b> "(2A,/!(12,/ '' B	* %%g7 	$::h'%%g7 	$%::h' ( ;	* (% ;	*"-";";x#/	,"-";";xX#/	, fu%
2
fu%
2
*>>*,g1EFG*,g1EFGg 0	9
 "+	+!*	+*>>RaL(12, 3)1 3	9 #,	,"+	,r   c                     / nUS;   a  UR                  U R                  S   5        US;   a  UR                  U R                  S   5        U$ )N)bothrH   r   )r   rI   r   )extendr9   )r.   whichaxis
grid_liness       r   get_gridlines#GridHelperCurveLinear.get_gridlines   sK    
= dook:;= dook:;r   )r9   )NNNN)majorr   )
r   r   r   r   r)   r   r   r   r   r   r   s   @r   r   r      s2      $#!%!%	: OS<-,^ r   r   c                   @   ^  \ rS rSrU 4S jrS rU 4S jrS rSrU =r	$ )FloatingAxesBase   c                ~   > [         R                  " [        US9  [        TU ]  " USU0UD6  U R                  S5        g )N)r,   r,   g      ?)r   check_isinstancer   r(   r)   
set_aspect)r.   r,   argskwargsr4   s       r   r)   FloatingAxesBase.__init__   s7    3M$BKB6Br   c                     U R                  5       R                  R                  " S /S-  6 u  pp4[        R                  " X4X#4X$4X4/5      nSUR                  5       l        U$ )Nr   d   )get_grid_helperr$   r%   mpatchesPolygonget_path_interpolation_steps)r.   x0r   y0r   patchs         r   _gen_axes_patch FloatingAxesBase._gen_axes_patch   sa    --/;;JJTFUVJW  2(RHrh!IJ03-r   c                   > [         TU ]  5         U R                  R                  U R	                  5       R
                  R                  5       U R                  -   5        [         TU ]!  5       nUR                  U R                  SS95        UR                  U R                  5        U R                  R                  U5        U R                  R                  U5        U R                  5         g )NF)root)r(   clearr   set_transformr   r$   rA   rB   r   
set_figure
get_figurerd   set_clip_path	gridlinesadjust_axes_lim)r.   
orig_patchr4   s     r   r   FloatingAxesBase.clear   s    

    "..<<>nn	
 W,.
doo5o9:  0

  ,$$Z0r   c                 \   U R                   R                  5       R                  U R                   R                  5       U R                  -
  5      nUR                  SS5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        g )NgRQ?)r   r   get_extentsrA   rB   expandedset_xlimrt   ru   set_ylimrv   rw   )r.   r   s     r   r    FloatingAxesBase.adjust_axes_lim  sv    zz""$00JJ$$&79 }}T4(dii+dii+r   r   )
r   r   r   r   r)   r   r   r   r   r   r   s   @r   r   r      s    
, ,r   r   z
Floating{}) __doc__re   numpyrD   
matplotlibrg   r   r   matplotlib.patchespatchesr   matplotlib.pathr   %mpl_toolkits.axes_grid1.parasite_axesr    r   r	   axis_artistr
   r$   r   r   r   r   r   r   _make_class_factoryfloatingaxes_class_factoryAxesFloatingAxesFloatingSubplotr   r   r   <module>r      s       " %   I 0 # ,	88	
T/3LL T/n, &b3II bJ", ",J #667GV )*A)..*QRr   