rL iD ddlZddlZddlmZddlmZddlmZ ddl m Z ddl m Z ddlmZddlmZmZmZmZddlmZmZmZGdd eZGd d eZGd d eZGddeZGddeZGddeZy)N)_api)AxesCircle)Path) Formatter NullLocator FixedLocator NullFormatter)Affine2DBboxTransformTo TransformceZdZdZGddeZdZdZfdZdZ dZ dd Z d Z d Z dd Zd ZdZdZdZdZeZdZeZeZeZdZeZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$xZ%S)GeoAxesz2An abstract base class for geographic projections.c eZdZdZddZddZy)GeoAxes.ThetaFormatterz Used to format the theta tick labels. Converts the native unit of radians into degrees and adds a degree symbol. c||_yN) _round_to)selfround_tos `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/projections/geo.py__init__zGeoAxes.ThetaFormatter.__init__s %DNNc~ttj||jz |jz}|ddS)Nz0.0f°)roundnprad2degr)rxposdegreess r__call__zGeoAxes.ThetaFormatter.__call__s5BJJqMDNN:;dnnLGd^?3 3r)?r)__name__ __module__ __qualname____doc__rr#rrThetaFormatterrs  & 4rr*Kctj|d|_tj|d|_|j dj |jy)NF)cleargeo)maxisXAxisxaxisYAxisyaxisspines register_axisrs r _init_axiszGeoAxes._init_axis sA[[U3 [[U3  E((4rct||jd|jd|j d|j j t|jj t|j jd|jjd|jjd|jtjdtj|t j" t j"tj$|t j" dz t j"dz y) Nr+noneT)label1Onz axes.grid@)superr-set_longitude_gridset_latitude_gridset_longitude_grid_endsr1set_minor_locatorr r3set_ticks_positionset_tick_paramsgridmplrcParamsrset_xlimrpiset_ylimr __class__s rr-z GeoAxes.clear%s   # r" $$R( $$[]3 $$[]3 %%f- %%f- ""D"1 #,,{+, dRUUFBEE* dRUUFSL"%%#+6rc|j|j|_|j|_t |j |_|j|jz|jz|_tjd|jdzjd|j |_ |j|jz|_tjdd|jztjddz|_tjdd|jztjddz|_tjt"j$dzdjt"j$ d}tjdd}||jz|_||jz||jz|jzz}|tjddz|_|tjddz|_y) Nrg?i)_get_core_transform RESOLUTIONtransProjection_get_affine_transform transAffiner bbox transAxes transDatar scale_longitude_cap translate_xaxis_pretransform_xaxis_transform_xaxis_text1_transform_xaxis_text2_transformrrI_yaxis_transform_yaxis_text1_transform_yaxis_text2_transform)r yaxis_stretch yaxis_spaceyaxis_text_bases r_set_lim_and_transformszGeoAxes._set_lim_and_transforms9s#77H557(3      NN   J U1d))A- . Yq4... /   $ $ NN   J  Q " NN  J A & ' # J  Q " NN  J B ' ( # ! ((A6@@"%%K j&&q#.  NN      !     ^^    J Q ' ( #  J A & ' #rc|jd}|jtjdf\}}|jdtjdz f\}}t j d|z d|z j ddS)NrNrrO?)rS transformrrIr r[r])rrkxscale_yscales rrVzGeoAxes._get_affine_transformlsx,,Q/ '' 3 ''BEE!G 5 6z U3<v . YsC  !rcLtjgd||jSN)tick1tick2rE)which)r check_in_listr_rrss rget_xaxis_transformzGeoAxes.get_xaxis_transformt 5UC$$$rc |jddfS)Nbottomcenter)r`rpads rget_xaxis_text1_transformz!GeoAxes.get_xaxis_text1_transformxs**Hh>>rc |jddfS)Ntoprz)rar{s rget_xaxis_text2_transformz!GeoAxes.get_xaxis_text2_transform{s**E8;;rcLtjgd||jSrp)rrtrbrus rget_yaxis_transformzGeoAxes.get_yaxis_transform~rwrc |jddfS)Nrzright)rcr{s rget_yaxis_text1_transformz!GeoAxes.get_yaxis_text1_transforms**Hg==rc |jddfS)Nrzleft)rdr{s rget_yaxis_text2_transformz!GeoAxes.get_yaxis_text2_transforms**Hf<='L&JJ HJJJ  L0EE2    rrc2eZdZdxZZfdZdZdZxZS) _GeoTransformrOc0t|||_y)z Create a new geographical transform. Resolution is the number of steps to interpolate between each input line segment to approximate its path in curved space. N)r>r _resolution)r resolutionrLs rrz_GeoTransform.__init__s %rcLt|jd|jdS)N())typer%rr6s r__str__z_GeoTransform.__str__s't*%%&a(8(8'9;;rc|j|j}t|j|j|j Sr) interpolatedrrrkverticescodes)rpathipaths rtransform_path_non_affinez'_GeoTransform.transform_path_non_affines6!!$"2"23DNN5>>2EKK@@r) r%r&r' input_dims output_dimsrrrrrs@rrrs  J&<ArrcTeZdZdZGddeZGddeZfdZdZxZ S) AitoffAxesaitoffceZdZdZdZdZy)AitoffAxes.AitoffTransformzThe base Aitoff transform.c|j\}}|dz }tj|}tj|tj|z}tj|tj z }|tj |z|z }tj ||z } tj|| gS)Nr=)TrcosarccossincrIsin column_stack) rvalues longitudelatitude half_long cos_latitudealpha sinc_alphar rs rtransform_non_affinez/AitoffAxes.AitoffTransform.transform_non_affines"((( Ix"CI66(+LIIlRVVI->>?E/Jy 11Z?Ax :-A??Aq6* *rc@tj|jSr)rInvertedAitoffTransformrr6s rinvertedz#AitoffAxes.AitoffTransform.inverted55d6F6FG GrNr%r&r'r(rrr)rrAitoffTransformrs( + HrrceZdZdZdZy)"AitoffAxes.InvertedAitoffTransformcJtj|tjSr)r full_likenan)rrs rrz7AitoffAxes.InvertedAitoffTransform.transform_non_affines<</ /rc@tj|jSr)rrrr6s rrz+AitoffAxes.InvertedAitoffTransform.inverted--d.>.>? ?rNr%r&r'rrr)rrrrs  0  @rrctjdz |_t||i||j ddd|j yNr=rjboxC adjustableanchorrrIr\r>r set_aspectr-rrrrLs rrzAitoffAxes.__init__#@ eeck $)&) c: rc$|j|Sr)rrrs rrSzAitoffAxes._get_core_transform)##J//r) r%r&r'namerrrrrSrrs@rrrs. DH-H, @- @ 0rrcTeZdZdZGddeZGddeZfdZdZxZ S) HammerAxeshammerceZdZdZdZdZy)HammerAxes.HammerTransformzThe base Hammer transform.c|j\}}|dz }tj|}tjd}tjd|tj|zz}d|z|tj|zz|z }|tj|z|z } tj || gS)Nr=r$)rrrsqrtrr) rrrrrrsqrt2rr rs rrz/HammerAxes.HammerTransform.transform_non_affine3s"((( Ix!CI66(+LGGCLEGGC, 1B"BBCEuy0A!ABUJA))U2A??Aq6* *rc@tj|jSr)rInvertedHammerTransformrr6s rrz#HammerAxes.HammerTransform.inverted>rrNrr)rrHammerTransformr0s( + HrrceZdZdZdZy)"HammerAxes.InvertedHammerTransformc |j\}}tjd|dz dzz |dz dzz }dtj||zdd|dzzdz zz z}tj||z}tj ||gS)NrNrPrO)rrrarctanarcsinr)rrr rzrrs rrz7HammerAxes.InvertedHammerTransform.transform_non_affineDs88DAqQUqL(AEa<78ABIIq1ua!q&j1n1E&FGGIyy1~H??Ix#89 9rc@tj|jSr)rrrr6s rrz+HammerAxes.InvertedHammerTransform.invertedLrrNrr)rrrrBs  : @rrctjdz |_t||i||j ddd|j yrrr s rrzHammerAxes.__init__Pr rc$|j|Sr)rr s rrSzHammerAxes._get_core_transformVrr) r%r&r'rrrrrrSrrs@rrr-s. DH-H$ @- @ 0rrcTeZdZdZGddeZGddeZfdZdZxZ S) MollweideAxes mollweideceZdZdZdZdZy) MollweideAxes.MollweideTransformzThe base Mollweide transform.cfd}|j\}}tjdz tj|z }|dk}|}tj|j t }|jrtjtj||zd||z} || \} } tj| r1| | xx| | z cc<|| \} } tj| r1| dz ||<|jrV||} ddtjz| dzzdzz}tjdz |z tj||z||<tj|j t } dtjdztjz |ztj|z| ddd f<tjdtj|z| ddd f<| S) Nc|tj|zz dtj|zz }|tj|dkDfS)NrNgMbP?)rrrr)thetadeltapi_sin_ls rdz@MollweideAxes.MollweideTransform.transform_non_affine..dbsJ 266%=08;<u -/bffUme333rrOgʡE?)dtyper=rjgUUUUUU?rrN) rrrIremptyshapefloatanyrsignrr)rrr.rrclatihighilowauxr+r, large_deltaexyr-s @rrz5MollweideAxes.MollweideTransform.transform_non_affine`s 4 #)(( Ix557RVVH--D5LE6D((8>>7Cxxz55266(4.#99htn,%&uX"{ff[)+&% *<<&)*5&E;ff[)"AID yy{K1ruu9q!t+77 eeAgkRWWXe_-EEE &,,e4Bbggcl*RUU2i?"&&+MBq!tHwws|bffSk1Bq!tHIrc@tj|jSr)r%InvertedMollweideTransformrr6s rrz)MollweideAxes.MollweideTransform.inverteds ;;DrAs  : Frr>ctjdz |_t||i||j ddd|j yrrr s rrzMollweideAxes.__init__r rc$|j|Sr)r?r s rrSz!MollweideAxes._get_core_transforms&&z22r) r%r&r'rrr?r>rrSrrs@rr%r%Zs/ D'N]'NRF]F  3rr%cleZdZdZGddeZGddeZdddfd Zfd Zd Z d Z xZ S) LambertAxeslambertc"eZdZdZdZdZdZy)LambertAxes.LambertTransformzThe base Lambert transform.cLtj||||_||_y)z Create a new Lambert transform. Resolution is the number of steps to interpolate between each input line segment to approximate its path in curved Lambert space. Nrr_center_longitude_center_latitudercenter_longitudecenter_latituders rrz%LambertAxes.LambertTransform.__init__s$  " "4 4%5D "$3D !rcp|j\}}|j}|j}tj|}tj |}||z }tj|} tj dtj ||zztj||z| zzd} tjd| z } | |ztj |z} | tj||ztj ||z| zz z} tj| | gS)NrNgV瞯rOrj) rrMrNrrShypotrrrrr) rrr rrTr6pcsin_ccos_crrs rrz9LambertAxes.InvertedLambertTransform.transform_non_affines 88DAq**E((D 288Aq>40ABIIcAg&&AFF1IEFF1IEyyrvvd|!3#$U7266$<#71"<">?H 5Qrvvd|^E1AbffTlN54HHI!KKI??Ix#89 9rcltj|j|j|jSr)rGr]rMrNrr6s rrz-LambertAxes.InvertedLambertTransform.inverteds0//&&%%  " "rN)r%r&r'rrrr)rrr\r_s 4  :" "rr\r)rPrQctjdz |_||_||_t ||i||jddd|jy)NrOequalrrr) rrIr\rMrNr>rr r-)rrPrQrrrLs rrzLambertAxes.__init__sP eeai!1 / $)&) E#> rcht||jjt yr)r>r-r3rr rKs rr-zLambertAxes.clears    &&}7rcP|j|j|j|Sr)r]rMrNr s rrSzLambertAxes._get_core_transforms*$$  " "  ! !  rcTtjdjddS)Ng?rj)r r[r]r6s rrVz!LambertAxes._get_affine_transforms!z U4[ YsC  !r) r%r&r'rrr]r\rr-rSrVrrs@rrGrGs< D%"=%"N"=">01!8  !rrG) numpyr matplotlibrFrmatplotlib.axesrmatplotlib.axisaxisr/matplotlib.patchesrmatplotlib.pathrmatplotlib.spinesr4rmatplotlib.tickerrr r r matplotlib.transformsr r rrrrrr%rGr)rrrws % #99FFV dV rAIA.+0+0\*0*0ZC3GC3L_!'_!r