§
    �Øj'  ã                   óŠ  — 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 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j        ¦  «        Z G d„ d¦  «        Z ej        ed¦  «        Z e eej        ¦  «        ¦  «        Z e Z!dS )z/
An experimental support for curvilinear grid.
é    N)Ú_apiÚcbook)ÚPath)ÚBbox)Úhost_axes_class_factoryé   )Ú	axislinesÚgrid_helper_curvelinear)Ú
AxisArtist)ÚExtremeFinderSimplec                   ó   — e Zd ZdS )ÚFloatingAxisArtistHelperN)Ú__name__Ú
__module__Ú__qualname__© ó    úš/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/mpl_toolkits/axisartist/floating_axes.pyr   r      s   € € € € € à€Dr   r   c                   ó2   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )ÚFixedAxisArtistHelperNc           	      ó&  •—  |j         j        dgdz  Ž \  }}}}t          j        t	          |df|df|df|df¬¦  «        |¬¦  «        \  }}	t          ¦   «                              ||	||¬¦  «         |€|	}|| _        || _        || _	        || _
        dS )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   Úgetitem_checkedÚ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Ô!GÈ$ÈÐRSÉÐ!TÑˆˆd�D˜$ÝÔ/Ý�t˜Q�i¨¨a y¸$À¸ÈÈqÈ	ÐRÑRÔRØðñ ô Ñˆˆyõ 	‰Œ×Ò˜ i°ÀtÐÑLÔLÐLØÐ"Ø'ˆOØ.ˆÔàˆŒ
Ø&ˆÔØˆŒ
ˆ
ˆ
r   c                 ó\   — | j                              |¦  «         | j         j        | _        d S ©N)r)   Ú
update_limÚ
_grid_info)r+   Úaxess     r   r4   z FixedAxisArtistHelper.update_lim0   s*   € ØÔ×#Ò# DÑ)Ô)Ð)ØÔ*Ô5ˆŒˆˆr   c                 ót  ‡‡‡‡‡‡‡‡‡— | 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    rI||k    ||k    z  }t          j        || j        ||         ||f||f¦  «        \  \  ŠŠŠŠ| j        d         ŠnS| j        d	k    rH||	k    |	|k    z  }t          j        ||	|         | j        ||f||f¦  «        \  \  ŠŠŠŠ| j        d
         Šd„ t          ‰|¦  «        D ¦   «         Š|  
                    ‰¦  «        ‰j        z
  Št          j        t          j        j        d¦  «        Šˆˆˆˆˆˆˆfd„} |¦   «         t#          g ¦  «        fS )z9tick_loc, tick_angle, tick_label, (optionally) tick_labelÚlat_infoÚlon_infoNr   é   c                 óº   •— ‰                      ¦   «         ‰j        z   }|                     t          j        t          j        | |¦  «        ¦  «        ¦  «        j        S r3   )Úget_transformÚ	transDataÚ	transformÚnpÚcolumn_stackÚbroadcast_arraysÚT)ÚxÚyÚtrfr6   r!   s      €€r   Útrf_xyz8FixedAxisArtistHelper.get_tick_iterators.<locals>.trf_xyC   sG   ø€ Ø×+Ò+Ñ-Ô-°´Ñ>ˆCØ—=’=¥¤µÔ1DÀQÈÑ1JÔ1JÑ!KÔ!KÑLÔLÔNÐNr   r   Ú
lat_labelsr   Ú
lon_labelsc                 ó   — g | ]	\  }}|¯|‘Œ
S r   r   )Ú.0ÚlÚms      r   ú
<listcomp>z<FixedAxisArtistHelper.get_tick_iterators.<locals>.<listcomp>U   s!   € Ð7Ð7Ð7™˜˜1°QÐ7�!Ð7Ð7Ð7r   )r   r   c               3   óö   •K  — t          ‰‰‰‰‰	¦  «        D ]a\  } }}}}‰
                     | |f¦  «        } ‰|d         ¦  «        r1 ‰|d         ¦  «        r | |ggt          j        ||g¦  «        ¢|‘R V — Œbd S )Nr   r   )Úzipr>   r?   Úrad2deg)rC   rD   ÚnormalÚtangentÚlabÚc2Úangle_normalÚangle_tangentÚin_01ÚlabelsÚtick_to_axesÚxx1Úyy1s         €€€€€€€r   Úf1z4FixedAxisArtistHelper.get_tick_iterators.<locals>.f1Z   s¯   øè è € å˜3  \°=À&ÑIÔIðFð FÑ*��1�f˜g sà!×+Ò+¨Q°¨FÑ3Ô3�Ø�5˜˜Aœ‘<”<ð F E E¨"¨Q¬%¡L¤Lð FØ˜a˜&ÐE¥2¤:¨v°wÐ.?Ñ#@Ô#@ÐEÀ#ÐEÐEÐEÐEÐEøð	Fð Fr   )r)   r!   r5   r"   Úsortedr0   r
   Ú_value_and_jac_angler(   rO   Úget_tick_transformÚ	transAxesÚ	functoolsÚpartialÚmplÚ
transformsÚ_interval_contains_closeÚiter)r+   r6   Úlat_levsÚlat_nÚ
lat_factorÚyy0Úlon_levsÚlon_nÚ
lon_factorÚxx0ÚextremesÚxminÚxmaxÚyminÚymaxrF   Úmaskr\   rU   rV   r!   rW   rX   rY   rZ   r[   s    `                @@@@@@@@r   Úget_tick_iteratorsz(FixedAxisArtistHelper.get_tick_iterators4   sB  øøøøøøøøø€ ð Ô&Ô2ˆà&*¤o°jÔ&AÑ#ˆ�%˜Ø˜Ñ#ˆà&*¤o°jÔ&AÑ#ˆ�%˜Ø˜Ñ#ˆà>�4Ô#Ô/Ô>ÀÀÈÁ
ÐKˆÝ˜H R a RœLÑ)Ô)‰
ˆˆdÝ˜H Q R RœLÑ)Ô)‰
ˆˆdð	Oð 	Oð 	Oð 	Oð 	Oð 	Oð Œ>˜QÒÐØ˜C’K C¨4¢KÑ0ˆDå'Ô<Ø˜DœJ¨¨D¬	°D¸$°<À$ÈÀñOô Oñ 4‰JˆS�#˜ mð ”_ \Ô2ˆFˆFàŒ^˜qÒ Ð Ø˜C’K C¨4¢KÑ0ˆDå'Ô<Ø˜C œI t¤z°D¸$°<À$ÈÀñOô Oñ 4‰JˆS�#˜ |ð ”_ \Ô2ˆFà7Ð7¥ F¨DÑ 1Ô 1Ð7Ñ7Ô7ˆØ×.Ò.¨tÑ4Ô4°t´~ÑEˆÝÔ!ÝŒNÔ3°Vñ=ô =ˆð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð ˆr‰tŒt•T˜"‘X”Xˆ~Ðr   c                 ó®   — |                       |¦  «         t          dddd¬¦  «        | j                 \  }}t          | j        |         |         ¦  «        S )N)Ú
lon_lines0r   )rw   r   )Ú
lat_lines0r   )rx   r   r   )r4   r$   r*   r   r5   )r+   r6   ÚkÚvs       r   Úget_linezFixedAxisArtistHelper.get_linec   s`   € Ø�Š˜ÑÔÐÝÐ*Ø+Ø,Ø)ð+ñ +ô +ð ,0¬:ô7‰ˆˆ1õ �D”O AÔ& qÔ)Ñ*Ô*Ð*r   r3   )r   r   r   r&   r4   ru   r{   Ú__classcell__©r1   s   @r   r   r      sk   ø€ € € € € ðð ð ð ð ð ð$6ð 6ð 6ð-ð -ð -ð^+ð +ð +ð +ð +ð +ð +r   r   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚExtremeFinderFixedc                 óL   — |\  }}}}t          j        ||||¦  «        | _        dS )zÚ
        This subclass always returns the same bounding box.

        Parameters
        ----------
        extremes : (float, float, float, float)
            The bounding box that this helper always returns.
        N)r   Úfrom_extentsÚ_tbbox)r+   ro   Úx0Úx1Úy0Úy1s         r   r&   zExtremeFinderFixed.__init__o   s-   € ð "‰ˆˆB��BÝÔ'¨¨B°°BÑ7Ô7ˆŒˆˆr   c                 ó   — | j         S r3   )r‚   )r+   ÚtransÚbboxs      r   Ú_find_transformed_bboxz)ExtremeFinderFixed._find_transformed_bbox{   s
   € àŒ{Ðr   N)r   r   r   r&   rŠ   r   r   r   r   r   l   s2   € € € € € ð
8ð 
8ð 
8ðð ð ð ð r   r   c                   ó@   ‡ — e Zd Z	 	 	 	 dˆ fd„	Z	 dd„Zd„ Zd	d„Zˆ xZS )
ÚGridHelperCurveLinearNc                 óp   •— t          ¦   «                              |t          |¦  «        ||||¬¦  «         d S )N)r"   Úgrid_locator1Úgrid_locator2Útick_formatter1Útick_formatter2)r%   r&   r   )r+   Ú	aux_transro   rŽ   r�   r�   r‘   r1   s          €r   r&   zGridHelperCurveLinear.__init__‚   sI   ø€ õ 	‰Œ×Ò˜Ý(:¸8Ñ(DÔ(DØ'4Ø'4Ø)8Ø)8ð 	ñ 	:ô 	:ð 	:ð 	:ð 	:r   c                 óä   — |€| j         }|€|}t          | ||¬¦  «        }t          |||¬¦  «        }|j                             d¦  «         |j                             |j         j        ¦  «         |S )N)r'   r   T)r6   r   r   ÚlineÚset_clip_onÚset_clip_boxr‰   )r+   Úlocr0   r    Úoffsetr6   ÚhelperÚaxislines           r   Únew_fixed_axisz$GridHelperCurveLinear.new_fixed_axis�   s€   € àˆ<Ø”9ˆDØÐ!Ø ˆNõ 'Ø�# yð2ñ 2ô 2ˆå˜d F¸>ÐJÑJÔJˆàŒ×!Ò! $Ñ'Ô'Ð'ØŒ×"Ò" 8¤=Ô#5Ñ6Ô6Ð6Øˆr   c                 óV  — | j         €t          ¦   «         | _         | j         }| j        }|j                             |                     ¦   «                              ¦   «         |¦  «        }|j        \  }}}}||d<   |                     ||¦  «        \  }	}
}t          j
        |	¦  «        }	|                     ||¦  «        \  }}}t          j
        |¦  «        }|	|
|f|d<   |||f|d<   |                     dd||	¦  «        |d<   |                     dd||¦  «        |d<   |	d |
…         |z  }|d |…         |z  }|                     |||k     ||k     z           |||k     ||k     z           |¦  «        \  }}||d	<   ||d
<   |                     |j        |j        |¦  «        \  }}||d<   ||d<   d S )Nro   r9   r8   r   r   rH   r:   rG   Ú	lon_linesÚ	lat_linesrw   rx   )r5   r$   r!   r"   rŠ   r<   ÚinvertedÚextentsrŽ   r?   Úasarrayr�   Ú_format_ticksÚ_get_raw_grid_linesÚ	intervalxÚ	intervaly)r+   r‰   Ú	grid_infor!   ÚtbboxÚlon_minÚlat_minÚlon_maxÚlat_maxrk   rl   rm   rg   rh   ri   Ú
lon_valuesÚ
lat_valuesr�   rž   s                      r   Ú_update_gridz"GridHelperCurveLinear._update_grid­   sý  € ØŒ?Ð"Ý"™fœfˆDŒOà”Oˆ	àÔ&ˆØÔ*×AÒAØ×%Ò%Ñ'Ô'×0Ò0Ñ2Ô2°Dñ:ô :ˆð .3¬]Ñ*ˆ�˜' 7Ø %ˆ	�*Ñà&1×&?Ò&?ÀÈÑ&QÔ&QÑ#ˆ�%˜Ý”:˜hÑ'Ô'ˆØ&1×&?Ò&?ÀÈÑ&QÔ&QÑ#ˆ�%˜Ý”:˜hÑ'Ô'ˆà (¨%°Ð ;ˆ	�*ÑØ (¨%°Ð ;ˆ	�*Ñà"-×";Ò";Øˆx˜ Xñ#/ô #/ˆ	�,Ñà"-×";Ò";Øˆx˜ Xñ#/ô #/ˆ	�,Ñð ˜f˜u˜fÔ%¨
Ñ2ˆ
Ø˜f˜u˜fÔ%¨
Ñ2ˆ
à*×>Ò>Ø˜ *Ò,°¸gÒ1EÑFÔGØ˜ *Ò,°¸gÒ1EÑFÔGØñ ô  Ñˆ	�9ð
 "+ˆ	�+ÑØ!*ˆ	�+Ñà*×>Ò>ØŒO˜Uœ_¨eñ 5ô  5Ñˆ	�9ð #,ˆ	�,ÑØ"+ˆ	�,ÑÐÐr   ÚmajorÚbothc                 óú   — g }|dv r8|                      t          t          j        | j        d         ¦  «        ¦  «         |dv r8|                      t          t          j        | j        d         ¦  «        ¦  «         |S )N)r°   rC   r�   )r°   rD   rž   )ÚextendÚmapr?   Ú	transposer5   )r+   ÚwhichÚaxisÚ
grid_liness       r   Úget_gridlinesz#GridHelperCurveLinear.get_gridlinesØ   sq   € Øˆ
Ø�=Ð Ð Ø×Ò�c¥"¤,°´ÀÔ0LÑMÔMÑNÔNÐNØ�=Ð Ð Ø×Ò�c¥"¤,°´ÀÔ0LÑMÔMÑNÔNÐNØÐr   )NNNN)r¯   r°   )r   r   r   r&   r›   r®   r¸   r|   r}   s   @r   rŒ   rŒ   €   sŠ   ø€ € € € € ð  $Ø#Ø!%Ø!%ð	:ð :ð :ð :ð :ð :ð OSðð ð ð ð<),ð ),ð ),ðVð ð ð ð ð ð ð 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          ¦   «         j        |d|i|¤Ž |                      d¦  «         d S )N)r)   r)   g      ð?)r   Úcheck_isinstancerŒ   r%   r&   Ú
set_aspect)r+   r)   ÚargsÚkwargsr1   s       €r   r&   zFloatingAxesBase.__init__ã   sS   ø€ ÝÔÕ3ÀÐMÑMÔMÐMØ�‰ŒÔ˜$ÐB¨KÐB¸6ÐBÐBÐBØ�Š˜ÑÔÐÐÐr   c                 óÌ   —  |                       ¦   «         j        j        d gdz  Ž \  }}}}t          j        ||f||f||f||fg¦  «        }d|                     ¦   «         _        |S )Nr   éd   )Úget_grid_helperr!   r"   ÚmpatchesÚPolygonÚget_pathÚ_interpolation_steps)r+   rƒ   r„   r…   r†   Úpatchs         r   Ú_gen_axes_patchz FloatingAxesBase._gen_axes_patchè   so   € àJ˜×-Ò-Ñ/Ô/Ô;ÔJÈTÈFÐUVÉJÐW‰ˆˆB��BÝÔ  2 r (¨R°¨H°r¸2°hÀÀRÀÐ!IÑJÔJˆØ03ˆ�ŠÑÔÔ-Øˆr   c                 ó4  •— t          ¦   «                              ¦   «          | j                             |                      ¦   «         j                             ¦   «         | j        z   ¦  «         t          ¦   «                              ¦   «         }| 	                    |  
                    d¬¦  «        ¦  «         |                     | j        ¦  «         | j                             |¦  «         | j                             |¦  «         |                      ¦   «          d S )NF)Úroot)r%   ÚclearrÇ   Úset_transformrÂ   r!   r<   r=   rÈ   Ú
set_figureÚ
get_figurer`   Úset_clip_pathÚ	gridlinesÚadjust_axes_lim)r+   Ú
orig_patchr1   s     €r   rË   zFloatingAxesBase.clearï   sé   ø€ Ý‰Œ�Š‰ŒˆØŒ
× Ò Ø× Ò Ñ"Ô"Ô.×<Ò<Ñ>Ô>ØŒnññ	ô 	ð 	õ
 ‘W”W×,Ò,Ñ.Ô.ˆ
Ø×Ò˜dŸošo°5˜oÑ9Ô9Ñ:Ô:Ð:Ø× Ò  ¤Ñ0Ô0Ð0ØŒ
× Ò  Ñ,Ô,Ð,ØŒ×$Ò$ ZÑ0Ô0Ð0Ø×ÒÑÔÐÐÐr   c                 óH  — | j                              ¦   «                              | j                              ¦   «         | j        z
  ¦  «        }|                     dd¦  «        }|                      |j        |j        ¦  «         |  	                    |j
        |j        ¦  «         d S )NgR¸…ëQð?)rÇ   rÅ   Úget_extentsr<   r=   ÚexpandedÚset_xlimrp   rq   Úset_ylimrr   rs   )r+   r‰   s     r   rÑ   z FloatingAxesBase.adjust_axes_limý   sˆ   € ØŒz×"Ò"Ñ$Ô$×0Ò0àŒJ×$Ò$Ñ&Ô&¨¬Ñ7ñ9ô 9ˆð �}Š}˜T 4Ñ(Ô(ˆØ�Š�d”i ¤Ñ+Ô+Ð+Ø�Š�d”i ¤Ñ+Ô+Ð+Ð+Ð+r   )r   r   r   r&   rÈ   rË   rÑ   r|   r}   s   @r   rº   rº   á   so   ø€ € € € € ðð ð ð ð ð
ð ð ðð ð ð ð ð,ð ,ð ,ð ,ð ,ð ,ð ,r   rº   z
Floating{})"Ú__doc__ra   Únumpyr?   Ú
matplotlibrc   r   r   Úmatplotlib.patchesÚpatchesrÃ   Úmatplotlib.pathr   Úmatplotlib.transformsr   Ú%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Ð IÐ IÐ IÐ IÐ IØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø #Ð #Ð #Ð #Ð #Ð #Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð	ð 	ð 	ð 	ð 	ØÔ8ñ	ô 	ð 	ð
M+ð M+ð M+ð M+ð M+Ð3ÔLñ M+ô M+ð M+ð`ð ð ð ð Ð,ñ ô ð ð(^ð ^ð ^ð ^ð ^Ð3ÔIñ ^ô ^ð ^ðB",ð ",ð ",ð ",ð ",ñ ",ô ",ð ",ðJ 7˜UÔ6Ð7GÈÑVÔVÐ Ø)Ð)Ð*AÐ*AÀ)Ä.Ñ*QÔ*QÑRÔR€Ø€€€r   