Ë
    ¨eha(  ã                   ó~  — d Z ddlZddlZddl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mZmZ ddlmZ dd	lmZ  G d
„ dej,                  «      Z G d„ dej,                  «      Z G d„ de«      Z G d„ dej2                  «      Z G d„ d«      Z ej6                  ed«      Z e eej:                  «      «      ZeZy)z/
An experimental support for curvilinear grid.
é    N)Ú_apiÚcbook)ÚPath)Úhost_axes_class_factoryé   )Ú	axislinesÚgrid_helper_curvelinear)Ú
AxisArtist)ÚExtremeFinderSimplec                   ó   — e Zd Zy)ÚFloatingAxisArtistHelperN)Ú__name__Ú
__module__Ú__qualname__© ó    úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/mpl_toolkits/axisartist/floating_axes.pyr   r      s   „ àr   r   c                   ó2   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )ÚFixedAxisArtistHelperc           	      ó  •—  |j                   j                  dgdz  Ž \  }}}}t        j                  t	        |df|df|df|df¬«      |¬«      \  }}	t
        ‰
| �  ||	||¬«       |€|	}|| _        || _        || _	        || _
        y)z}
        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%   zFixedAxisArtistHelper.__init__   s¥   ø€ ð
 "H ×!8Ñ!8×!GÑ!GÈ$ÈÐRSÉÐ!TÑˆˆd�D˜$Ü×-Ñ-Ü�t˜Q�i¨¨a y¸$À¸ÈÈqÈ	ÔRØôÑˆˆyô 	‰Ñ˜ i°ÀtÐÔLØÐ"Ø'ˆOØ.ˆÔàˆŒ
Ø&ˆÔØˆ�
r   c                 óp   — | j                   j                  |«       | j                   j                  | _        y ©N)r(   Ú
update_limÚ
_grid_info)r*   Úaxess     r   r3   z FixedAxisArtistHelper.update_lim1   s)   € Ø×Ñ×#Ñ# DÔ)Ø×*Ñ*×5Ñ5ˆ�r   c                 óˆ  ‡‡‡‡‡‡‡‡‡ — | j                   j                  Š| j                  d   \  }}}||z  }| j                  d   \  }}}||z  }	 | j                   j                  j                  dgdz  Ž }
t	        |
dd «      \  }}t	        |
dd «      \  }}ˆˆfd„}| j
                  dk(  rR||k  ||k  z  }t        j                  || j                  ||   ||f||f«      \  \  ŠŠ \  }}\  }}| j                  d   Šn`| j
                  d	k(  rQ||	k  |	|k  z  }t        j                  ||	|   | j                  ||f||f«      \  \  ŠŠ \  }}\  }}| j                  d
   Št        ‰«      D ��cg c]
  \  }}|sŒ	|‘Œ c}}Št        j                  «      Št        j                  «      Š|dk(  |dk(  z  }‰|   t        j                  dz  z   ‰|<   | j                  ‰«      ‰j                  z
  Št        j                   t"        j$                  j&                  d«      Šˆˆˆˆˆˆˆ fd„} |«       t)        g «      fS c c}}w )z9tick_loc, tick_angle, tick_label, (optionally) tick_labelÚlat_infoÚlon_infoNr   é   c                 óÂ   •— ‰j                  «       ‰j                  z   }|j                  t        j                  t        j
                  | |«      «      «      j                  S r2   )Úget_transformÚ	transDataÚ	transformÚnpÚcolumn_stackÚbroadcast_arraysÚT)ÚxÚyÚtrfr5   r    s      €€r   Útrf_xyz8FixedAxisArtistHelper.get_tick_iterators.<locals>.trf_xyD   sE   ø€ Ø×+Ñ+Ó-°·±Ñ>ˆCØ—=‘=¤§¡´×1DÑ1DÀQÈÓ1JÓ!KÓL×NÑNÐNr   r   Ú
lat_labelsr   Ú
lon_labels)r   r   c               3   óÚ   •K  — t        ‰‰‰‰‰	«      D ]T  \  } }}}}‰
j                  | |f«      } ‰|d   «      sŒ( ‰|d   «      sŒ4| |ggt        j                  ||g«      ¢|‘­–— ŒV y ­w)Nr   r   )Úzipr=   r>   Úrad2deg)rB   rC   ÚnormalÚtangentÚlabÚc2Úangle_normalÚangle_tangentÚin_01ÚlabelsÚtick_to_axesÚxx1Úyy1s         €€€€€€€r   Úf1z4FixedAxisArtistHelper.get_tick_iterators.<locals>.f1a   s~   øè ø€ ä˜3  \°=À&ÓIòFÑ*��1�f˜g sà!×+Ñ+¨Q°¨FÓ3�Ù˜˜A™•<¡E¨"¨Q©%¥LØ˜a˜&ÐE¤2§:¡:¨v°wÐ.?Ó#@ÐEÀ#ÑEÓEñ	Fùs   ƒ7A+»A+Á$A+)r(   r    r4   r!   Úsortedr/   r	   Ú_value_and_jacobianr'   rI   r>   Úarctan2ÚpiÚget_tick_transformÚ	transAxesÚ	functoolsÚpartialÚmplÚ
transformsÚ_interval_contains_closeÚiter)!r*   r5   Úlat_levsÚlat_nÚ
lat_factorÚyy0Úlon_levsÚlon_nÚ
lon_factorÚxx0ÚextremesÚxminÚxmaxÚyminÚymaxrE   ÚmaskÚdxx1Údyy1Údxx2Údyy2ÚlÚmÚmmrV   rO   rP   r    rQ   rR   rS   rT   rU   s!    `                       @@@@@@@@r   Úget_tick_iteratorsz(FixedAxisArtistHelper.get_tick_iterators5   sM  ÿø€ ð ×&Ñ&×2Ñ2ˆà&*§o¡o°jÑ&AÑ#ˆ�%˜Ø˜Ñ#ˆà&*§o¡o°jÑ&AÑ#ˆ�%˜Ø˜Ñ#ˆà>�4×#Ñ#×/Ñ/×>Ñ>ÀÀÈÁ
ÐKˆÜ˜H R a˜LÓ)‰
ˆˆdÜ˜H Q R˜LÓ)‰
ˆˆdõ	Oð �>‰>˜QÒØ˜C‘K C¨4¡KÑ0ˆDä'×;Ñ;Ø˜DŸJ™J¨¨D©	°D¸$°<À$ÈÀóOñ 3‰JˆS�#™˜˜t¡l t¨Tð —_‘_ \Ñ2‰Fà�^‰^˜qÒ Ø˜C‘K C¨4¡KÑ0ˆDä'×;Ñ;Ø˜C ™I t§z¡z°D¸$°<À$ÈÀóOñ 3‰JˆS�#™˜˜t¡l t¨Tð —_‘_ \Ñ2ˆFä # F¨DÓ 1×7™˜˜1²Q’!Ó7ˆä—z‘z $¨Ó-ˆÜŸ
™
 4¨Ó.ˆØ�a‰i˜D A™IÑ&ˆØ(¨Ñ,¬r¯u©u°q©yÑ8ˆ�RÑà×.Ñ.¨tÓ4°t·~±~ÑEˆÜ×!Ñ!Ü�N‰N×3Ñ3°Vó=ˆ÷	Fò 	Fñ ‹t”T˜"“Xˆ~Ðùó% 8s   Å/
H>Å:H>c                 óÌ   — | j                  |«       t        dddd¬«      | j                     \  }}| j                  |   |   \  }}t	        t        j                  ||g«      «      S )N)Ú
lon_lines0r   )rz   r   )Ú
lat_lines0r   )r{   r   r   )r3   r#   r)   r4   r   r>   r?   )r*   r5   ÚkÚvÚxxÚyys         r   Úget_linezFixedAxisArtistHelper.get_linej   sg   € Ø�‰˜ÔÜÐ*Ø+Ø,Ø)ô+ð ,0¯:©:ñ7‰ˆˆ1ð —‘ Ñ# AÑ&‰ˆˆBÜ”B—O‘O R¨ HÓ-Ó.Ð.r   r2   )r   r   r   r%   r3   rx   r€   Ú__classcell__©r0   s   @r   r   r      s   ø„ õò$6ò3öj/r   r   c                   ó   — e Zd Zd„ Zd„ Zy)ÚExtremeFinderFixedc                 ó   — || _         y)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*   rk   s     r   r%   zExtremeFinderFixed.__init__w   s   € ð "ˆ�r   c                 ó   — | j                   S r2   r†   )r*   Útransform_xyÚx1Úy1Úx2Úy2s         r   Ú__call__zExtremeFinderFixed.__call__‚   s   € à�~‰~Ðr   N)r   r   r   r%   rŽ   r   r   r   r„   r„   t   s   „ ò	"ór   r„   c                   ó@   ‡ — e Zd Z	 	 	 	 dˆ fd„	Z	 dd„Zd„ Zdd„Zˆ xZS )ÚGridHelperCurveLinearc                 óB   •— t         ‰| �  |t        |«      ||||¬«       y )N)r!   Úgrid_locator1Úgrid_locator2Útick_formatter1Útick_formatter2)r$   r%   r„   )r*   Ú	aux_transrk   r’   r“   r”   r•   r0   s          €r   r%   zGridHelperCurveLinear.__init__‰   s-   ø€ ô 	‰Ñ˜Ü(:¸8Ó(DØ'4Ø'4Ø)8Ø)8ð 	õ 	:r   c                 óö   — |€| j                   }|€|}t        | ||¬«      }t        |||¬«      }|j                  j	                  d«       |j                  j                  |j                   j                  «       |S )N)r&   r   T)r5   r   r
   ÚlineÚset_clip_onÚset_clip_boxÚbbox)r*   Úlocr/   r   Úoffsetr5   ÚhelperÚaxislines           r   Únew_fixed_axisz$GridHelperCurveLinear.new_fixed_axis–   so   € àˆ<Ø—9‘9ˆDØÐ!Ø ˆNô 'Ø�# yô2ˆä˜d F¸>ÔJˆà�‰×!Ñ! $Ô'Ø�‰×"Ñ" 8§=¡=×#5Ñ#5Ô6Øˆr   c                 ó
  — | j                   €t        «       | _         | j                   }| j                  }|j                  |j                  ||||«      }t        |d d «      \  }}	t        |dd  «      \  }
}||	|
|f|d<   |j                  ||	«      \  }}}t        j                  |«      }|j                  |
|«      \  }}}t        j                  |«      }|||f|d<   |||f|d<   |j                  dd||«      |d<   |j                  dd||«      |d<   |d | |z  }|d | |z  }|j                  |||k  ||	k  z     ||
|k  ||k  z     ||	|
|«      \  }}||d	<   ||d
<    |j                  |d d |dd  g|¢­Ž \  }}||d<   ||d<   y )Nr9   rk   r8   r7   r   r   rG   rF   Ú	lon_linesÚ	lat_linesrz   r{   )r4   r#   r    r!   Úinv_transform_xyrW   r’   r>   Úasarrayr“   Ú_format_ticksÚ_get_raw_grid_lines)r*   rŠ   r‹   rŒ   r�   Ú	grid_infor    rk   Úlon_minÚlon_maxÚlat_minÚlat_maxrg   rh   ri   rc   rd   re   Ú
lon_valuesÚ
lat_valuesr¢   r£   s                         r   Ú_update_gridz"GridHelperCurveLinear._update_grid´   s  € Ø�?‰?Ð"Ü"›fˆDŒOà—O‘Oˆ	à×&Ñ&ˆØ×-Ñ-¨k×.JÑ.JØ.0°"°b¸"ó>ˆô " (¨2¨A ,Ó/Ñˆ�Ü! (¨1¨2 ,Ó/Ñˆ�Ø '¨°'¸7Ð Bˆ	�*Ñð ×%Ñ% g¨wÓ7ñ 	$ˆ�%˜ä—:‘:˜hÓ'ˆà×%Ñ% g¨wÓ7ñ 	$ˆ�%˜ä—:‘:˜hÓ'ˆà (¨%°Ð ;ˆ	�*ÑØ (¨%°Ð ;ˆ	�*Ñà"-×";Ñ";Øˆx˜ Xó#/ˆ	�,Ñà"-×";Ñ";Øˆx˜ Xó#/ˆ	�,Ñð ˜f˜uÐ%¨
Ñ2ˆ
Ø˜f˜uÐ%¨
Ñ2ˆ
à*×>Ñ>Ø˜ *Ñ,°¸gÑ1EÑFÑGØ˜ *Ñ,°¸gÑ1EÑFÑGØ�W˜g wó 0Ñˆ	�9ð
 "+ˆ	�+ÑØ!*ˆ	�+Ñà>˜{×>Ñ>à�R�aˆL˜( 1 2˜,ð 3à)1ò 3Ñˆ	�9ð #,ˆ	�,ÑØ"+ˆ	�,Òr   c                 ó’   — g }|dv r|j                  | j                  d   «       |dv r|j                  | j                  d   «       |S )N)ÚbothrB   r¢   )r±   rC   r£   )Úextendr4   )r*   ÚwhichÚaxisÚ
grid_liness       r   Úget_gridlinesz#GridHelperCurveLinear.get_gridlinesã   sK   € Øˆ
Ø�=Ñ Ø×Ñ˜dŸo™o¨kÑ:Ô;Ø�=Ñ Ø×Ñ˜dŸo™o¨kÑ:Ô;ØÐr   )NNNN)Úmajorr±   )r   r   r   r%   r    r¯   r¶   r�   r‚   s   @r   r�   r�   ‡   s-   ø„ ð  $Ø#Ø!%Ø!%õ	:ð OSóò<-,÷^r   r�   c                   ó4   ‡ — e Zd Zˆ fd„Zd„ Zˆ fd„Zd„ Zˆ xZS )ÚFloatingAxesBasec                ó€   •— t        j                  t        |¬«       t        ‰| �  |d|i|¤Ž | j                  d«       y )N)r(   r(   g      ð?)r   Úcheck_isinstancer�   r$   r%   Ú
set_aspect)r*   r(   ÚargsÚkwargsr0   s       €r   r%   zFloatingAxesBase.__init__î   s7   ø€ Ü×ÑÔ3ÀÕMÜ‰Ñ˜$ÐB¨KÐB¸6ÒBØ�‰˜Õr   c                 óÒ   —  | j                  «       j                  j                  d gdz  Ž \  }}}}t        j                  ||f||f||f||fg«      }d|j                  «       _        |S )Nr   éd   )Úget_grid_helperr    r!   ÚmpatchesÚPolygonÚget_pathÚ_interpolation_steps)r*   Úx0rŠ   Úy0r‹   Úpatchs         r   Ú_gen_axes_patchz FloatingAxesBase._gen_axes_patchó   so   € àJ˜×-Ñ-Ó/×;Ñ;×JÑJÈTÈFÐUVÉJÐW‰ˆˆB��BÜ× Ñ  2 r (¨R°¨H°r¸2°hÀÀRÀÐ!IÓJˆØ03ˆ�‰ÓÔ-Øˆr   c                 óÞ  •— t         ‰| �  «        | j                  j                  | j	                  «       j
                  j                  «       | j                  z   «       t         ‰| �!  «       }|j                  | j                  d¬«      «       |j                  | j                  «       | j                  j                  |«       | j                  j                  |«       | j                  «        y )NF)Úroot)r$   ÚclearrÈ   Úset_transformrÁ   r    r;   r<   rÉ   Ú
set_figureÚ
get_figurer\   Úset_clip_pathÚ	gridlinesÚadjust_axes_lim)r*   Ú
orig_patchr0   s     €r   rÌ   zFloatingAxesBase.clearú   s¯   ø€ Ü‰‰ŒØ�
‰
× Ñ Ø× Ñ Ó"×.Ñ.×<Ñ<Ó>Ø�n‰nñô	ô
 ‘WÑ,Ó.ˆ
Ø×Ñ˜dŸo™o°5˜oÓ9Ô:Ø× Ñ  §¡Ô0Ø�
‰
× Ñ  Ô,Ø�‰×$Ñ$ ZÔ0Ø×ÑÕr   c                 ó\  — | j                   j                  «       j                  | j                   j                  «       | j                  z
  «      }|j                  dd«      }| j                  |j                  |j                  «       | j                  |j                  |j                  «       y )NgR¸…ëQð?)rÈ   rÄ   Úget_extentsr;   r<   ÚexpandedÚset_xlimrl   rm   Úset_ylimrn   ro   )r*   r›   s     r   rÒ   z FloatingAxesBase.adjust_axes_lim  sv   € Ø�z‰z×"Ñ"Ó$×0Ñ0à�J‰J×$Ñ$Ó&¨¯©Ñ7ó9ˆð �}‰}˜T 4Ó(ˆØ�‰�d—i‘i §¡Ô+Ø�‰�d—i‘i §¡Õ+r   )r   r   r   r%   rÉ   rÌ   rÒ   r�   r‚   s   @r   r¹   r¹   ì   s   ø„ ôò
ôö,r   r¹   z
Floating{}) Ú__doc__r]   Únumpyr>   Ú
matplotlibr_   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 7˜U×6Ñ6Ð7GÈÓVÐ Ù)Ñ*AÀ)Ç.Á.Ó*QÓR€Ø�r   