
    P/Ph2                     d   d dl Zd dlZd dlmZ d Zd Zd Z	 	 d!d	Zd"dZ	d"dZ
 G d d          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d          Z G d de          Z G d d e          ZdS )#    N)ExtremeFinderSimplec                 r   g d}g d}dgt          |          z  }g d}g d}t          j        |          dz  }dgt          |          z  }t          j        |          dz  }d	gt          |          z  }	g |||}
g |||}g |	||}t          j        |
|           }||         }||         }||fS )
N)
      ?            (   F   x   i  i  )
         
         -   Z      ih        ?)r         @      @            r   )r   r   r   r   r   r   r	   r   <         N@        @lennparraysearchsorted)dvdegree_limits_degree_steps_degree_factorsminsec_limits_minsec_steps_minute_limits_minute_factorssecond_limits_second_factorsdegree_limitsdegree_stepsnstepfactors                  d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mpl_toolkits/axisartist/angle_helper.pyselect_step_degreer6      s    ???N???MTC...N777N777MXn--2NUS000NXn--4NWs>222NGnG~GGMC]C]C]CLH~HHHN
r**A?DAF<    c                 r   g d}g d}dgt          |          z  }g d}g d}t          j        |          dz  }dgt          |          z  }t          j        |          dz  }d	gt          |          z  }	g |||}
g |||}g |	||}t          j        |
|           }||         }||         }||fS )
N)	r   r   r   r   r   r   r      $   )	r   r   r         r      r      r   )r   r   r   g      @g      @r   r      r   r   r   )r   r   r   r;   r   r<   r   r=   r   r	   r   r   r   r   r    r!   )r&   hour_limits_hour_steps_hour_factorsr*   r+   r,   r-   r.   r/   hour_limits
hour_stepsr2   r3   r4   s                  r5   select_step_hourrE   !   s    888L888K4#k***LEEENEEEMXn--2NUS000NXn--4NWs>222NCNC^ClCK?=?=?;?JD^DnD|DL
R((Aa=D!_F<r7   c                     dt          t          j        |                     dz
  z  }d|z  }d|z  | k    rd}nd|z  | k    rd}nd|z  | k    rd}nd}d	|z  }||fS )
Ng      $@r   r   r   g      @r   g      @r   g?)intmathlog10)r&   tmpr4   r3   s       r5   select_step_subrK   ;   s     DJrNN##B&
'CVF
3w"}}	C2	C2V<r7   FTr    c                    | |k    r|| }} || z
  |z  }|r
t           }d}n	t          }d}|d|z  k    r ||          \  }	}
nt          ||z            \  }	}
|
|z  }
t          j        t          j        | |
z  |	z            t          j        ||
z  |	z            dz   t                    |	z  }t          |          }|
dk    r|d         |d         |z   k    rkt          ||	z            }|r&|d         t          j        d|dz   d          |	z  z   }n"|d         t          j        d|d          |	z  z   }t          |          }t          j	        |          ||
fS )	Ng      8@     v@r   g      ?)dtyper   r   )
rE   r6   rK   r#   arangefloorceilrG   r"   r$   )v1v2nvhourinclude_lastthreshold_factorr&   _select_stepcycler3   r4   levsr2   s                r5   select_stepr\   O   s    
BwwRB
r'RB ') 
A    #|B''ff&r*:':;;f**9RXb6kD011WR&[4/0036     "&'D 	D		A
 ||RDGeO33 	87RYq"Q$22T99DD7RYq"a00477DII8D>>1f$$r7   r   c                 X    | dz  |dz  }} t          | ||d||          \  }}}|dz  ||fS )Nr   TrV   rW   rX   r\   )rS   rT   rU   rW   rX   r[   r2   r4   s           r5   select_step24r`      sQ    "Wb2gB!"b"4/;3CE E EOD!V "9ar7   c                 ,    t          | ||d||          S )NFr^   r_   )rS   rT   rU   rW   rX   s        r5   select_step360rb      s'    r2r$0(8: : : :r7   c                       e Zd ZddZddZdS )LocatorBaseTc                 "    || _         || _        d S N)nbins_include_last)selfrg   rW   s      r5   __init__zLocatorBase.__init__   s    
)r7   Nc                 6    |t          |          | _        d S d S rf   )rG   rg   )ri   rg   s     r5   
set_paramszLocatorBase.set_params   s!    UDJJJ r7   )Trf   )__name__
__module____qualname__rj   rl    r7   r5   rd   rd      s<        * * * *$ $ $ $ $ $r7   rd   c                       e Zd Zd ZdS )
LocatorHMSc                 :    t          ||| j        | j                  S rf   r`   rg   rh   ri   rS   rT   s      r5   __call__zLocatorHMS.__call__   s    RTZ1CDDDr7   Nrm   rn   ro   rv   rp   r7   r5   rr   rr      s(        E E E E Er7   rr   c                       e Zd Zd ZdS )	LocatorHMc                 >    t          ||| j        | j        d          S Nr   rX   rt   ru   s      r5   rv   zLocatorHM.__call__   s)    RTZ1C.02 2 2 	2r7   Nrw   rp   r7   r5   ry   ry      #        2 2 2 2 2r7   ry   c                       e Zd Zd ZdS )LocatorHc                 >    t          ||| j        | j        d          S Nr   r|   rt   ru   s      r5   rv   zLocatorH.__call__   s)    RTZ1C./1 1 1 	1r7   Nrw   rp   r7   r5   r   r      s#        1 1 1 1 1r7   r   c                       e Zd Zd ZdS )
LocatorDMSc                 :    t          ||| j        | j                  S rf   rb   rg   rh   ru   s      r5   rv   zLocatorDMS.__call__   s    b"dj$2DEEEr7   Nrw   rp   r7   r5   r   r      s(        F F F F Fr7   r   c                       e Zd Zd ZdS )	LocatorDMc                 >    t          ||| j        | j        d          S r{   r   ru   s      r5   rv   zLocatorDM.__call__   s)    b"dj$2D/13 3 3 	3r7   Nrw   rp   r7   r5   r   r      s#        3 3 3 3 3r7   r   c                       e Zd Zd ZdS )LocatorDc                 >    t          ||| j        | j        d          S r   r   ru   s      r5   rv   zLocatorD.__call__   s)    b"dj$2D/02 2 2 	2r7   Nrw   rp   r7   r5   r   r      r}   r7   r   c                       e Zd ZdZdZdZdez   dz   Zdez   dz   Zdez   dz   ez   dz   Zdez   d	z   ez   dz   Z	dez   dz   ez   d
z   Z
dez   dz   Zdez   dz   Zd Zd ZdS )FormatterDMSz^{\circ}z	^{\prime}z^{\prime\prime}$%d$$%d.%s$%s%d\,%02d	\,%02d.%s\,%02d%02d.%sc                     d }dD ]a}||k    r nX||z  }t          t          j        t          j        |                              }d|z  |k    r|dk    r|}|d|z  z  }||fc S b||fS )N)r   r   r   r   r   )rG   r#   rQ   rI   )ri   r4   number_fraction	thresholdd	int_log_ds         r5   _get_number_fractionz!FormatterDMS._get_number_fraction   s     ' 		/ 		/I"")#ABHRXa[[1122I9}!!a1ff"+2y=0....&&r7   c                 6    t          |          dk    rg S t          j        |          }d |D             }                     |          \  }}t          j        |          }|*t          |d|z            \  }}d|fz  fd|D             }|dk    r;| fdt          ||          D             S  fdt          |||          D             S |d	k    rPt          |d	          \  }	}
| fd
t          ||	|
          D             S  fdt          ||	|
|          D             S |dk    r|d         dk    rd}|d d d         }|d d d         }nd}d}g }t          |d          \  }	}t          |d	          \  }
}| fd|D             }n fdt          ||          D             }t          ||	|
|          D ]?\  }}}} j        |||fz  }||k    r|}||z   }nd|z   |z   }|                    |           @|r|d d d         S |S d ||z  D             S )Nr   c                 "    g | ]}|d k     rdndS )r   - rp   .0vs     r5   
<listcomp>z)FormatterDMS.__call__.<locals>.<listcomp>   s$    666!A2666r7   r   z%%0%ddc                     g | ]}|fz  	S rp   rp   )r   f1frac_fmts     r5   r   z)FormatterDMS.__call__.<locals>.<listcomp>   s     ===RB5(===r7   r   c                 L    g | ] \  }}j         |t          |          z  fz  !S rp   )fmt_drG   )r   sr   ri   s      r5   r   z)FormatterDMS.__call__.<locals>.<listcomp>   s0    OOOtq!
a#a&&j]2OOOr7   c                 P    g | ]"\  }}}j         |t          |          z  |fz  #S rp   )fmt_dsrG   )r   r   r   r   ri   s       r5   r   z)FormatterDMS.__call__.<locals>.<listcomp>   sK     C C C$Aq" q3q66z2&66 C C Cr7   r   c                 2    g | ]\  }}}j         |||fz  S rp   )fmt_d_m)r   s1d1m1ri   s       r5   r   z)FormatterDMS.__call__.<locals>.<listcomp>   sB     J J J&BB B|3 J J Jr7   c                 6    g | ]\  }}}}j         ||||fz  S rp   )fmt_d_ms)r   r   r   r   r   ri   s        r5   r   z)FormatterDMS.__call__.<locals>.<listcomp>   sF     E E E)Ar2r BB7 E E Er7   r   rO   TFr   c                 &    g | ]}j         |fz  S rp   )fmt_s_partial)r   r   ri   s     r5   r   z)FormatterDMS.__call__.<locals>.<listcomp>  s#    III"4-5IIIr7   c                 .    g | ]\  }}j         ||fz  S rp   )fmt_ss_partial)r   r   r   ri   s      r5   r   z)FormatterDMS.__call__.<locals>.<listcomp>  s?     B B B%r2  ."b9 B B Br7   r   c                     g | ]}d |z  S )z$%s^{\circ}$rp   r   s     r5   r   z)FormatterDMS.__call__.<locals>.<listcomp>  s    ;;;AOa';;;r7   )	r"   r#   signr   absdivmodzipfmt_d_m_partialappend)ri   	directionr4   valuessssignsr   	frac_partfrac_strdeg_partmin_partinverse_orderl_hm_oldr	min_part_sec_partsec_strr   r   r   r   l_hmlr   s   `                      @r5   rv   zFormatterDMS.__call__   s.   v;;!IWV__66v666"&";";F"C"C& &vr_/D E EFI?"44H====9===HQ;;&OOOOs2vOOOOC C C C(+B(A(AC C C Cr\\!'!3!3Hh&J J J J*-eXx*H*HJ J J JE E E Euh(CCE E E E t^^"v|| $"ddd %HA"("6"6Hi!'	2!6!6Hh&IIIIIIIB B B B),Xx)@)@B B B "%UHh!H!H  2r2+q"bk98###Hr	AAa"A 2w <;F;;;;r7   N)rm   rn   ro   deg_markmin_marksec_markr   r   r   r   r   r   r   r   rv   rp   r7   r5   r   r      s        HH!HHs"E!C'F !I-83>G("\1H<sBH(94x?%GOX%+M)C/N' ' '$C< C< C< C< C<r7   r   c                        e Zd ZdZdZdZdez   dz   Zdez   dz   Zdez   dz   ez   dz   Zdez   d	z   ez   dz   Z	dez   dz   ez   d
z   Z
dez   dz   Zdez   dz   Z fdZ xZS )FormatterHMSz^\mathrm{h}z^\mathrm{m}z^\mathrm{s}r   r   r   r   r   r   r   r   r   c                 t    t                                          ||t          j        |          dz            S )Nr   )superrv   r#   asarray)ri   r   r4   r   	__class__s       r5   rv   zFormatterHMS.__call__2  s.    ww	62:f3E3E3JKKKr7   )rm   rn   ro   r   r   r   r   r   r   r   r   r   r   rv   __classcell__)r   s   @r5   r   r   "  s        HHHHs"E!C'F !I-8<G("\1H<S@H(94x?%GOX%+M)C/NL L L L L L L L Lr7   r   c                        e Zd Z	 	 ddZd ZdS )ExtremeFinderCyclerM   Nir   c                 ^    ||c| _         | _        ||c| _        | _        || _        || _        dS )aB  
        This subclass handles the case where one or both coordinates should be
        taken modulo 360, or be restricted to not exceed a specific range.

        Parameters
        ----------
        nx, ny : int
            The number of samples in each direction.

        lon_cycle, lat_cycle : 360 or None
            If not None, values in the corresponding direction are taken modulo
            *lon_cycle* or *lat_cycle*; in theory this can be any number but
            the implementation actually assumes that it is 360 (if not None);
            other values give nonsensical results.

            This is done by "unwrapping" the transformed grid coordinates so
            that jumps are less than a half-cycle; then normalizing the span to
            no more than a full cycle.

            For example, if values are in the union of the [0, 2] and
            [358, 360] intervals (typically, angles measured modulo 360), the
            values in the second interval are normalized to [-2, 0] instead so
            that the values now cover [-2, 2].  If values are in a range of
            [5, 1000], this gets normalized to [5, 365].

        lon_minmax, lat_minmax : (float, float) or None
            If not None, the computed bounding box is clipped to the given
            range in the corresponding direction.
        N)nxny	lon_cycle	lat_cycle
lon_minmax
lat_minmax)ri   r   r   r   r   r   r   s          r5   rj   zExtremeFinderCycle.__init__9  s7    @ r)2I&$$r7   c                 d   t          j        t          j        ||| j                  t          j        ||| j                            \  }} |t          j        |          t          j        |                    \  }}	t          j        d          5  | j        #t          j        |          }
|d||
z
  dk    z  z  }| j	        #t          j        |	          }|	d|	|z
  dk    z  z  }	d d d            n# 1 swxY w Y   t          j        |          t          j
        |          }}t          j        |	          t          j
        |	          }}|                     ||||          \  }}}}| j        rt          ||| j        z             }| j	        rt          ||| j	        z             }| j        :| j        d         }t          ||          }| j        d         }t          ||          }| j        :| j        d         }t          ||          }| j        d         }t          ||          }||||fS )Nignore)invalidrM   g     f@r   r   )r#   meshgridlinspacer   r   ravelerrstater   nanminr   nanmax_add_padminr   maxr   )ri   transform_xyx1y1x2y2xylonlatlon0lat0lon_minlon_maxlat_minlat_maxmin0max0s                     r5   rv   zExtremeFinderCycle.__call__^  sL   {KB(("+b"dg*F*FH H1<RXa[[99S [*** 	4 	4~)y~~td
d233~)y~~td
d233	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 9S>>29S>>9S>>29S>> MM'7GW== 	+'7 > 	='7T^#;<<G> 	='7T^#;<<G?&?1%D$((G?1%D$((G?&?1%D$((G?1%D$((G'11s   AC44C8;C8)rM   NNr   )rm   rn   ro   rj   rv   rp   r7   r5   r   r   6  s@         ,0-6#% #% #% #%J,2 ,2 ,2 ,2 ,2r7   r   )FTr    )Tr   )numpyr#   rH   #mpl_toolkits.axisartist.grid_finderr   r6   rE   rK   r\   r`   rb   rd   rr   ry   r   r   r   r   r   r   r   rp   r7   r5   <module>r     st        C C C C C C  4  4  ( 6:!&.% .% .% .%b       : : : :$ $ $ $ $ $ $ $E E E E E E E E
2 2 2 2 2 2 2 21 1 1 1 1{ 1 1 1F F F F F F F F
3 3 3 3 3 3 3 32 2 2 2 2{ 2 2 2e< e< e< e< e< e< e< e<PL L L L L< L L L(T2 T2 T2 T2 T2, T2 T2 T2 T2 T2r7   