Ë
    ¸Ó^jÂ4  ã                   ó´   — d Z ddlZddlZddlZddlmZ ddlm	Z	m
Z
mZ ddlmZmZmZ ddlmZ ddlmZ d	„ Z G d
„ de«      Z G d„ de«      Z G d„ de«      Zy)z/
An experimental support for curvilinear grid.
é    N)ÚPath)ÚAffine2DÚBboxÚIdentityTransformé   )Ú_FixedAxisArtistHelperBaseÚ_FloatingAxisArtistHelperBaseÚGridHelperBase)Ú
AxisArtist)Ú
GridFinderc                 ót  ‡ ‡‡‡‡— t        j                  t        j                  ‰«      t        j                  ‰«      «      Š ‰ ‰‰«      }t        j                  t        «      j
                  dz  Šˆfd„} |‰|«      \  }} |‰|«      \  }	}
ˆfd„} |ˆ ˆˆfd„‰|||	«      } |ˆ ˆˆfd„‰|	|
|«      }|||fS )aé  
    Parameters
    ----------
    func : callable
        A function that transforms the coordinates of a point (x, y) to a new coordinate
        system (u, v), and which can also take x and y as arrays of shape *shape* and
        returns (u, v) as a ``(2, shape)`` array.
    xs, ys : array-likes
        Points where *func* and its derivatives will be evaluated.
    xlim, ylim : pairs of floats
        (min, max) beyond which *func* should not be evaluated.

    Returns
    -------
    val
        Value of *func* at each point of ``(xs, ys)``.
    thetas_dx
        Angles (in radians) defined by the (u, v) components of the numerically
        differentiated df/dx vector, at each point of ``(xs, ys)``.  If needed, the
        differentiation step size is increased until at least one component of df/dx
        is nonzero, under the constraint of not going out of the *xlims*, *ylims*
        bounds.  If the gridline at a point is actually null (and the angle is thus not
        well defined), the derivatives are evaluated after taking a small step along y;
        this ensures e.g. that the tick at r=0 on a radial axis of a polar plot is
        parallel with the ticks at r!=0.
    thetas_dy
        Like *thetas_dx*, but for df/dy.
    g      à?c                 óÊ   •— t        |«      \  }}| |z
  }|| z
  }t        j                  ||«      }t        j                  ||k\  dd«      t        j                  ‰|«      z  }||fS )Nr   éÿÿÿÿ)ÚsortedÚnpÚmaximumÚwhereÚminimum)	ÚvalsÚlimÚloÚhiÚdloÚdhiÚeps_maxÚepsÚeps0s	           €úz/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/mpl_toolkits/axisartist/grid_helper_curvelinear.pyÚcalc_epsz&_value_and_jac_angle.<locals>.calc_eps7   sb   ø€ Ü˜“‰ˆˆBØ�R‰iˆØ�4‰iˆÜ—*‘*˜S #Ó&ˆÜ�h‰h�s˜c‘z 1 bÓ)¬B¯J©J°t¸WÓ,EÑEˆØ�Gˆ|Ðó    c                 ó\  •— t        j                  ‰t         j                  «      }t        j                  ‰d«      }|}t        d|g«      D ]Þ  \  }}|j	                  «       sŒt        |«      |k  j	                  «       sŒ4|dk(  r|dkD  j	                  «       rŒMt        j                  ||«      } | ||«       | d|«      z
  |z  \  }	}
||	dk7  |
dk7  z  z  }t        j                  |
|	«      |   ||<   || z  }|dz  }|j	                  «       sŒÂt        |«      |k  j	                  «       rŒ«Œà |S )NTr   r   é   )r   ÚfullÚnanÚ	enumerateÚanyÚabsr   Úarctan2)ÚdfuncÚpsÚeps_p0r   Úeps_qÚ	thetas_dpÚmissingÚeps_pÚitÚdf_xÚdf_yÚgoodÚshapes               €r   Úcalc_thetasz)_value_and_jac_angle.<locals>.calc_thetasB   s  ø€ Ü—G‘G˜E¤2§6¡6Ó*ˆ	Ü—'‘'˜% Ó&ˆØˆÜ" A u :Ó.ò 		‰IˆB�Ø—+‘+•-¤S¨£Z°'Ñ%9×$>Ñ$>Õ$@Ø˜’7 ¨¡	Ÿ™Ô0ØÜŸ
™
 5¨'Ó2�Ù# E¨5Ó1±E¸!¸U³OÑCÀuÑL‘
��dØ 4¨1¡9°¸±Ñ";Ñ<�Ü"$§*¡*¨T°4Ó"8¸Ñ">�	˜$‘Ø˜D˜5Ñ �Ø˜‘
�ð —+‘+•-¤S¨£Z°'Ñ%9×$>Ñ$>Ö$@ð		ð Ðr    c                 ó"   •—  ‰‰| z   ‰|z   «      S ©N© ©r/   r,   ÚfuncÚxsÚyss     €€€r   ú<lambda>z&_value_and_jac_angle.<locals>.<lambda>R   ó   ø€ ±°b¸5±jÀ"ÀuÁ*Ó1M€ r    c                 ó"   •—  ‰‰|z   ‰| z   «      S r7   r8   r9   s     €€€r   r=   z&_value_and_jac_angle.<locals>.<lambda>T   r>   r    )r   Úbroadcast_shapesr4   ÚfinfoÚfloatr   )r:   r;   r<   ÚxlimÚylimÚvalr   ÚxepsÚxeps_maxÚyepsÚyeps_maxr5   Ú	thetas_dxÚ	thetas_dyr   r4   s   ```           @@r   Ú_value_and_jac_anglerL      s³   ü€ ô< ×Ñ¤§¡¨£¬b¯h©h°r«lÓ;€EÙ
ˆr�2‹,€Cô �8‰8”E‹?×Ñ 3Ñ'€Dôñ ˜b $Ó'�N€Dˆ(Ù˜b $Ó'�N€Dˆ(ôñ  ÕMØ  h°ó6€IáÕMØ  h°ó6€Ià�˜IÐ&Ð&r    c                   ó6   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )ÚFixedAxisArtistHelperz(
    Helper class for a fixed axis.
    c                 ól   •— t         ‰| �  |¬«       || _        |€| j                  }|| _        || _        y)ú}
        nth_coord = along which coordinate value varies.
         nth_coord = 0 ->  x axis, nth_coord = 1 -> y axis
        )ÚlocN)ÚsuperÚ__init__Úgrid_helperÚ	nth_coordÚnth_coord_ticksÚside)ÚselfrT   rW   rV   Ú	__class__s       €r   rS   zFixedAxisArtistHelper.__init__^   s;   ø€ ô 	‰Ñ˜TÐÔ"à&ˆÔØÐ"Ø"Ÿn™nˆOØ.ˆÔàˆ�	r    c                 ó:   — | j                   j                  |«       y r7   )rT   Ú
update_lim©rX   Úaxess     r   r[   z FixedAxisArtistHelper.update_limm   s   € Ø×Ñ×#Ñ# DÕ)r    c                 ó   — |j                   S r7   ©Ú	transDatar\   s     r   Úget_tick_transformz(FixedAxisArtistHelper.get_tick_transformp   ó   € Ø�~‰~Ðr    c                 ó  ‡ ‡‡— ‰ j                   dk(  r|j                  «       n|j                  «       \  }}||kD  rdddddœ‰ j                     Šn‰ j                  Št	        dddd¬«      ‰   Šˆˆ ˆfd	„} |«       t        g «      fS )
z tick_loc, tick_angle, tick_labelr   ÚrightÚleftÚbottomÚtop)re   rd   rg   rf   éZ   )re   rd   rf   rg   c               3   óÜ   •K  — ‰j                   dfd‰j                   z
  dffD ]E  \  } }‰j                  j                  ddg|       }|d   ‰   D ]  }g |d   ¢‰‘|r|d   nd	‘­–— Œ ŒG y ­w)
NTr   FÚlonÚlatÚticksrQ   ÚlabelÚ )rV   rT   Ú
_grid_info)rU   Úshow_labelsÚgiÚtickÚangle_tangentrX   rW   s       €€€r   Ú
iter_majorz<FixedAxisArtistHelper.get_tick_iterators.<locals>.iter_major~   sª   øè ø€ à×)Ñ)¨4Ð0°1°t×7KÑ7KÑ3KÈUÐ2Sð+Uò CÑ&�	˜;à×%Ñ%×0Ñ0°%¸°À	Ñ1JÑK�Ø˜w™K¨Ñ-ò C�DðC˜D ™Kð C¨ð CÙ-8˜D šM¸bñCó CñCñCùs   ƒA)A,)rU   Úget_ylimÚget_xlimrW   ÚdictÚiter)rX   r]   Úv1Úv2rt   rs   rW   s   `    @@r   Úget_tick_iteratorsz(FixedAxisArtistHelper.get_tick_iteratorss   sƒ   ú€ à$(§N¡N°aÒ$7�—‘”¸T¿]¹]»_‰ˆˆBØ�Š7Ø#¨fØ#¨uñ6Ø6:·i±iñA‰Dð —9‘9ˆDä "¨B°q¸aÔ@ÀÑFˆö	Cñ ‹|œT "›XÐ%Ð%r    r7   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rS   r[   ra   r{   Ú__classcell__©rY   s   @r   rN   rN   Y   s   ø„ ñõò*òö&r    rN   c                   óP   ‡ — e Zd Zd
ˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zˆ xZS )ÚFloatingAxisArtistHelperc                 óœ   •— t         ‰| �  ||«       || _        || _        t        j
                   t        j
                  f| _        d| _        y)rP   éd   N)rR   rS   ÚvaluerT   r   ÚinfÚ	_extremesÚ_line_num_points)rX   rT   rU   r†   Úaxis_directionrY   s        €r   rS   z!FloatingAxisArtistHelper.__init__‹   s@   ø€ ô
 	‰Ñ˜ EÔ*ØˆŒ
Ø&ˆÔÜŸ&™&˜¤"§&¡&˜ˆŒØ #ˆÕr    c                 ó`   — |€t         j                   }|€t         j                  }||f| _        y r7   )r   r‡   rˆ   )rX   Úe1Úe2s      r   Úset_extremesz%FloatingAxisArtistHelper.set_extremes–   s+   € Øˆ:Ü—&‘&�ˆBØˆ:Ü—‘ˆBØ˜R˜ˆ�r    c           
      ó–  — | j                   j                  |«       |j                  «       \  }}|j                  «       \  }}| j                   j                  }|j
                  j                  |j                  «       j                  «       t        j                  ||||«      «      }|j                  \  }}	}
}| j                  \  }}| j                  dk(  rt        ||	«      }	t        ||«      }n'| j                  dk(  rt        ||«      }t        ||
«      }
|j!                  ||
«      \  }}}|j#                  |	|«      \  }}}| j                  dk(  r||j                  «       j%                  t'        j(                  t'        j*                  | j,                  | j.                  «      t'        j0                  |	|| j,                  «      g«      «      }nŠ| j                  dk(  r{|j                  «       j%                  t'        j(                  t'        j0                  ||
| j,                  «      t'        j*                  | j,                  | j.                  «      g«      «      }t        j                  ||	|
|«      ||t'        j2                  |«      f||t'        j2                  |«      f|j5                  dd||«      |j5                  dd||«      dœ| _        y )Nr   r   rf   r"   )ÚextremesÚlon_infoÚlat_infoÚ
lon_labelsÚ
lat_labelsÚline_xy)rT   r[   rv   ru   Úgrid_finderÚextreme_finderÚ_find_transformed_bboxÚget_transformÚinvertedr   Úfrom_extentsÚextentsrˆ   rU   ÚmaxÚminÚgrid_locator1Úgrid_locator2Ú	transformr   Úcolumn_stackr#   r‰   r†   ÚlinspaceÚasarrayÚ_format_ticksro   )rX   r]   Úx1Úx2Úy1Úy2r–   ÚtbboxÚlon_minÚlat_minÚlon_maxÚlat_maxÚe_minÚe_maxÚlon_levsÚlon_nÚ
lon_factorÚlat_levsÚlat_nÚ
lat_factorÚxyss                        r   r[   z#FloatingAxisArtistHelper.update_lim�   s`  € Ø×Ñ×#Ñ# DÔ)à—‘“‰ˆˆBØ—‘“‰ˆˆBØ×&Ñ&×2Ñ2ˆØ×*Ñ*×AÑAØ×%Ñ%Ó'×0Ñ0Ó2´D×4EÑ4EÀbÈ"ÈbÐRTÓ4UóWˆð .3¯]©]Ñ*ˆ�˜' 7Ø—~‘~‰ˆˆuØ�>‰>˜QÒÜ˜% Ó)ˆGÜ˜% Ó)‰GØ�^‰^˜qÒ Ü˜% Ó)ˆGÜ˜% Ó)ˆGà&1×&?Ñ&?ÀÈÓ&QÑ#ˆ�%˜Ø&1×&?Ñ&?ÀÈÓ&QÑ#ˆ�%˜à�>‰>˜QÒØ×+Ñ+Ó-×7Ñ7¼¿¹Ü—‘˜×-Ñ-¨t¯z©zÓ:Ü—‘˜G W¨d×.CÑ.CÓDðIó 9ó ‰Cð �^‰^˜qÒ Ø×+Ñ+Ó-×7Ñ7¼¿¹Ü—‘˜G W¨d×.CÑ.CÓDÜ—‘˜×-Ñ-¨t¯z©zÓ:ðIó 9ó ˆCô ×)Ñ)¨'°7¸GÀWÓMØ! 5¬"¯*©*°ZÓ*@ÐAØ! 5¬"¯*©*°ZÓ*@ÐAØ%×3Ñ3Ø�8˜Z¨ó3à%×3Ñ3Ø�8˜Z¨ó3àñ	
ˆ�r    c                 ó   — t        «       S r7   )r   r\   s     r   Úget_axislabel_transformz0FloatingAxisArtistHelper.get_axislabel_transformÈ   s
   € Ü‹zÐr    c                 óî  ‡ ‡— ˆˆ fd„}‰ j                   d   j                  \  }}}}‰ j                  dk(  r‰ j                  }||z   dz  }n#‰ j                  dk(  r||z   dz  }‰ j                  }t	        |||f||f«      \  }	}
}‰j
                  j                  «       j                  |	«      }d|d   cxk  rdk  r:n yd|d   cxk  rdk  r)n y|	t        j                  ||
g‰ j                     «      fS y)Nc                 ó    •— ‰j                   j                  j                  «       ‰j                  z   }|j	                  | |g«      j
                  S r7   )rT   r–   r™   r`   r¡   ÚT©ÚxÚyÚtrfr]   rX   s      €€r   Útrf_xyz@FloatingAxisArtistHelper.get_axislabel_pos_angle.<locals>.trf_xyÌ   s?   ø€ Ø×"Ñ"×.Ñ.×<Ñ<Ó>ÀÇÁÑOˆCØ—=‘= ! Q Ó(×*Ñ*Ð*r    r�   r   r"   r   )NN)
ro   rœ   rU   r†   rL   Ú	transAxesrš   r¡   r   Úrad2deg)rX   r]   rÁ   ÚxminÚyminÚxmaxÚymaxÚxx0Úyy0Úxy1Úangle_dxÚangle_dyÚps   ``           r   Úget_axislabel_pos_anglez0FloatingAxisArtistHelper.get_axislabel_pos_angleË   sÿ   ù€ õ	+ð "&§¡°Ñ!<×!DÑ!DÑˆˆd�D˜$Ø�>‰>˜QÒØ—*‘*ˆCØ˜$‘; !Ñ#‰CØ�^‰^˜qÒ Ø˜$‘; !Ñ#ˆCØ—*‘*ˆCÜ"6Ø�C˜˜t T˜l¨T°4¨Ló#:ÑˆˆX�xà�N‰N×#Ñ#Ó%×/Ñ/°Ó4ˆØ��!‘Œ>˜Œ>ð ð   1 Q¡4œn¨1œnð ð œŸ
™
 H¨hÐ#7¸¿¹Ñ#GÓHÐHÐHàr    c                 ó   — t        «       S r7   )r   r\   s     r   ra   z+FloatingAxisArtistHelper.get_tick_transformß   s   € Ü Ó"Ð"r    c                 óv  ‡ ‡‡‡‡‡‡‡‡— ‰ j                   d   \  }}}||z  }‰ j                   d   \  }}}||z  }	‰ j                  \  }
}ˆˆ fd„}‰ j                  dk(  r_|
|k  ||k  z  }t        |‰ j                  ||   t
        j                   t
        j                  f|
|f«      \  \  ŠŠŠŠ‰ j                   d   Šnm‰ j                  dk(  r^|
|	k  |	|k  z  }t        ||	|   ‰ j                  t
        j                   t
        j                  f|
|f«      \  \  ŠŠŠŠ‰ j                   d   Št        ‰«      D ��cg c]
  \  }}|sŒ	|‘Œ c}}Š‰ 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_labelr’   r‘   c                 óê   •— ‰j                   j                  j                  «       ‰j                  z   }|j	                  t        j                  t        j                  | |«      «      «      j                  S r7   )	rT   r–   r™   r`   r¡   r   r¢   Úbroadcast_arraysr¼   r½   s      €€r   rÁ   z;FloatingAxisArtistHelper.get_tick_iterators.<locals>.trf_xyí   sQ   ø€ Ø×"Ñ"×.Ñ.×<Ñ<Ó>ÀÇÁÑOˆCØ—=‘=¤§¡´×1DÑ1DÀQÈÓ1JÓ!KÓL×NÑNÐNr    r   r”   r   r“   )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   rÃ   )r¾   r¿   ÚnormalÚtangentÚlabÚc2Úangle_normalrs   Úin_01ÚlabelsÚtick_to_axesÚxx1Úyy1s         €€€€€€€r   rt   z?FloatingAxisArtistHelper.get_tick_iterators.<locals>.iter_major  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+)ro   rˆ   rU   rL   r†   r   r‡   rÔ   ra   rÂ   Ú	functoolsÚpartialÚmplÚ
transformsÚ_interval_contains_closerx   )rX   r]   r´   rµ   r¶   rÉ   r±   r²   r³   rÈ   Úe0rŒ   rÁ   ÚmaskÚlÚmrt   rÙ   rs   rÚ   rÛ   rÜ   rÝ   rÞ   s   ``               @@@@@@@r   r{   z+FloatingAxisArtistHelper.get_tick_iteratorsâ   s¢  ÿø€ ð '+§o¡o°jÑ&AÑ#ˆ�%˜Ø˜Ñ#ˆà&*§o¡o°jÑ&AÑ#ˆ�%˜Ø˜Ñ#ˆà—‘‰ˆˆBõ	Oð
 �>‰>˜QÒØ˜#‘I #¨¡)Ñ,ˆDÜ6JØ˜Ÿ
™
 C¨¡I´·±°¼¿¹Ð/@À2ÀrÀ(ó7LÑ3‰JˆS�#˜ mà—_‘_ \Ñ2‰Fà�^‰^˜qÒ Ø˜#‘I #¨¡)Ñ,ˆDÜ6JØ˜˜D™	 4§:¡:´·±°¼¿¹Ð/@À2ÀrÀ(ó7LÑ3‰JˆS�#˜ |à—_‘_ \Ñ2ˆFä # F¨DÓ 1×7™˜˜1²Q’!Ó7ˆØ×.Ñ.¨tÓ4°t·~±~ÑEˆÜ×!Ñ!Ü�N‰N×3Ñ3°Vó=ˆ÷	Fò 	Fñ ‹|œT "›XÐ%Ð%ùó 8s   Ä9
F5ÅF5c                 ó   — |j                   S r7   r_   r\   s     r   Úget_line_transformz+FloatingAxisArtistHelper.get_line_transform  rb   r    c                 óT   — | j                  |«       t        | j                  d   «      S )Nr•   )r[   r   ro   r\   s     r   Úget_linez!FloatingAxisArtistHelper.get_line  s"   € Ø�‰˜ÔÜ�D—O‘O IÑ.Ó/Ð/r    r7   )r|   r}   r~   rS   rŽ   r[   r¹   rÎ   ra   r{   ré   rë   r€   r�   s   @r   rƒ   rƒ   ‰   s2   ø„ õ	$ò ò)
òVòò(#ò(&òTö0r    rƒ   c                   óZ   ‡ — e Zd Z	 	 	 	 	 d	ˆ fd„	Zd
d„Zdddddœd„Zdd„Zd„ Zdd„Zˆ xZ	S )ÚGridHelperCurveLinearNc                 óZ   •— t         ‰| �  «        d| _        t        ||||||«      | _        y)a×  
        Parameters
        ----------
        aux_trans : `.Transform` or tuple[Callable, Callable]
            The transform from curved coordinates to rectilinear coordinate:
            either a `.Transform` instance (which provides also its inverse),
            or a pair of callables ``(trans, inv_trans)`` that define the
            transform and its inverse.  The callables should have signature::

                x_rect, y_rect = trans(x_curved, y_curved)
                x_curved, y_curved = inv_trans(x_rect, y_rect)

        extreme_finder

        grid_locator1, grid_locator2
            Grid locators for each axis.

        tick_formatter1, tick_formatter2
            Tick formatters for each axis.
        N)rR   rS   ro   r   r–   )rX   Ú	aux_transr—   rŸ   r    Útick_formatter1Útick_formatter2rY   s          €r   rS   zGridHelperCurveLinear.__init__  s5   ø€ ô4 	‰ÑÔØˆŒÜ% iØ&4Ø&3Ø&3Ø&5Ø&5ó7ˆÕr    c                 ó„   — |�| j                   j                  |«        | j                   j                  di |¤Ž d | _        y )Nr8   )r–   Úupdate_transformÚupdateÚ_old_limits)rX   rï   Úkwargss      r   Úupdate_grid_finderz(GridHelperCurveLinear.update_grid_finder8  s=   € ØÐ Ø×Ñ×-Ñ-¨iÔ8Øˆ×Ñ×ÑÑ) &Ò)ØˆÕr    )rŠ   Úoffsetr]   rU   c                ób   — |€| j                   }|€|}t        | ||¬«      }t        |||¬«      }|S )N)rV   )rŠ   )r]   rN   r   )rX   rQ   rŠ   rø   r]   rU   ÚhelperÚaxislines           r   Únew_fixed_axisz$GridHelperCurveLinear.new_fixed_axis>  s@   € ð ˆ<Ø—9‘9ˆDØÐ!Ø ˆNÜ& t¨SÀ)ÔLˆÜ˜d F¸>ÔJˆð ˆr    c                 óê   — |€| j                   }t        | |||«      }t        ||«      }|j                  j	                  d«       |j                  j                  |j                   j                  «       |S )NT)r]   rƒ   r   ÚlineÚset_clip_onÚset_clip_boxÚbbox)rX   rU   r†   r]   rŠ   rú   rû   s          r   Únew_floating_axisz'GridHelperCurveLinear.new_floating_axisK  sd   € Øˆ<Ø—9‘9ˆDÜ)Ø�)˜U Nó4ˆä˜d FÓ+ˆØ�‰×!Ñ! $Ô'Ø�‰×"Ñ" 8§=¡=×#5Ñ#5Ô6ð ˆr    c                 óD   — | j                   j                  |«      | _        y r7   )r–   Úget_grid_inforo   )rX   r  s     r   Ú_update_gridz"GridHelperCurveLinear._update_gridW  s   € Ø×*Ñ*×8Ñ8¸Ó>ˆ�r    c                 ó  — g }|dv r9|j                  | j                  d   d   D �cg c]  }|j                  ‘Œ c}«       |dv r9|j                  | j                  d   d   D �cg c]  }|j                  ‘Œ c}«       |S c c}w c c}w )N)Úbothr¾   rj   Úlines)r  r¿   rk   )Úextendro   r¼   )rX   ÚwhichÚaxisÚ
grid_linesÚgls        r   Úget_gridlinesz#GridHelperCurveLinear.get_gridlinesZ  s|   € Øˆ
Ø�=Ñ Ø×Ñ¨d¯o©o¸eÑ.DÀWÑ.MÖN¨˜rŸt›tÒNÔOØ�=Ñ Ø×Ñ¨d¯o©o¸eÑ.DÀWÑ.MÖN¨˜rŸt›tÒNÔOØÐùò OùâNs   ¦A?Á#B)NNNNNr7   )Nrf   )Úmajorr  )
r|   r}   r~   rS   r÷   rü   r  r  r  r€   r�   s   @r   rí   rí     s<   ø„ à $Ø#Ø#Ø!%Ø!%õ!7óF ð &*°$¸TÈTôó
ò?÷r    rí   )r   rß   Únumpyr   Ú
matplotlibrá   Úmatplotlib.pathr   Úmatplotlib.transformsr   r   r   Ú	axislinesr   r	   r
   Úaxis_artistr   r–   r   rL   rN   rƒ   rí   r8   r    r   ú<module>r     sc   ðñó ã ã Ý  ß CÑ C÷Oñ Oå #Ý #òD'ôN-&Ð6ô -&ô`H0Ð<ô H0ôVL˜Nõ Lr    