Ñò ”tJc @sdZddklZddklZddklZlZlZddk l Z ddk Z dei fd„ƒYZd eifd „ƒYZd efd „ƒYZd „Zd„ZedjoPddkiZeidddƒZeiƒeeƒeiƒeiƒndS(s/ An experimental support for curvelinear grid. iÿÿÿÿ(tchain(t GridFinder(tAxisArtistHelpertGridHelperBaset AxisArtist(tAffine2DNtFixedAxisArtistHelpercBsAeZdZdd„Zd„Zdd„Zd„Zd„ZRS(s( Helper class for a fixed axis. cCsXtt|ƒid|ddƒ||_|djo |i}n||_||_dS(s} nth_coord = along which coordinate value varies. nth_coord = 0 -> x axis, nth_coord = 1 -> y axis tloctlabel_directionN(tsuperRt__init__tNonet grid_helpert nth_coordtnth_coord_tickstside(tselfR RR((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR s    cCs|ii|ƒdS(N(R t update_lim(Rtaxes((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR#scCsK|djod|i|_n'|djo ||_n tdƒ‚dS(Niiswrong coord number(ii(R Rt Exception(Rt coord_number((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytchange_tick_coord&s    cCs|iS(N(t transData(RR((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytget_tick_transform/scCs\|i}|i|i|iƒ}|id|i|idtƒ}t||ƒtgƒfS(s tick_loc, tick_angle, tick_labelitminor(R tget_tick_iteratorRRtTrueRtiter(RRtgtti1tti2((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytget_tick_iterators2s "N( t__name__t __module__t__doc__R R RRRR(((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR s    tFloatingAxisArtistHelpercBsVeZdd„Zd„Zed„Zd„Zd„Zd„Z d„Z d„Z RS( cCs2tt|ƒi|||ƒ||_||_dS(s} nth_coord = along which coordinate value varies. nth_coord = 0 -> x axis, nth_coord = 1 -> y axis N(R R#R tvalueR (RR R R$R((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR As  cCs|ii|ƒ|iƒ\}}|iƒ\}}|ii}|i|i||||ƒ}tƒ}|\} } } } |i| | ƒ\} }}|i | | ƒ\}}}||d<| ||f|d<|||f|d<|i d|| ƒ|d<|i d||ƒ|d<|ii}|i djoTt i|i|idƒ}t i|d |d dƒ}|i||ƒ\}}ne|i d joTt i|d|d dƒ}t i|i|idƒ}|i||ƒ\}}n||f|d <||_dS( Ntextremestlon_infotlat_infotbottomt lon_labelst lat_labelsiidiiitline_xy(R Rtget_xlimtget_ylimt grid_findertextreme_findertinv_transform_xytdictt grid_locator1t grid_locator2ttick_formatter1ttick_formatter2R tnptlinspaceR$t transform_xyt grid_info(RRtx1tx2ty1ty2R.R%R9tlon_mintlon_maxtlat_mintlat_maxtlon_levstlon_nt lon_factortlat_levstlat_nt lat_factortxx0tyy0txxtyy((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyROs<         cCs#|id}|idjoF|i}|d|dd}dt|d|dƒd}}nW|idjoF|d|dd}|i}t|d|dƒdd}}n|ii}|i|g|gƒ\} } |i|ii ƒ} | i | d| dgƒ} d| djo d jno×d| djo d jnoµ|o|ii | d| dgƒ\} }|i||g||gƒ\}}|ii |d|dgƒ\}}| |ft ƒt i |||| ƒfS| |ifSn|od Sd SdS( NR%iiig@gg@@igð?(NNN(NN(R9R R$tabsR R.R8Rt transAxestinvertedttransform_pointRR6tarctan2R (RRt with_angleR%RHRItdxxtdyyR.txx1tyy1ttrans_passingthrough_pointtptxx1ctyy1ctxx2tyy2txx2ctyy2c((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyt get_label_posys0  ' ' D&&&c CsD|i|||dƒ\}}}|i|i}tƒdddfS(Ntbaselinetcenteri(t_get_label_offset_transformR t_ticklabel_anglesRR( RRt pad_pointst fontpropstrendererttrtvathata((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytget_ticklabel_offset_transform s  cCs|iS(N(R(RR((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR­scsÙˆii}ˆidjo«ˆid\}}}|d j o||}d|}n |}d}ti|ƒ}|iˆiƒ|i ||ƒ\‰‰|i |||ƒ\‰‰ˆid‰n¼ˆidjo«ˆid\} } } | d j o| | }d| } n | }d} ti|ƒ}|iˆiƒ|i ||ƒ\‰‰|i || |ƒ\‰‰ˆid‰nˆi djo d ‰nd ‰‡‡‡‡‡‡‡‡fd †} | ƒt gƒfS( s tick_loc, tick_angle, tick_labeliR'g{®Gáz„?R*iR&R)ttopg€f@gc 3sÿtiˆˆˆˆƒ}ˆiˆƒ}|ˆiiƒ}x¼tˆˆ|ˆƒD]¥\}}}}|i||fƒ}d}d||djod|jnoNd||djod|jno$||g|ddˆ|fVqRqRWdS(Ngñh㈵øä>gigð?ign†ðù! @g€f@(R6RPRRMRNtzipRO( tddt trans_tickttr2axtxtytdtlabtc2tdelta(RZRTRUR[RtdatlabelsR(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytf1Ös**N( R R.R R9R R6t empty_liketfillR$R8RR(RRR.RERFRGRItdyRHRBRCRDtdxRx((RZRwRTRRRUR[RvsT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR°s<      $ cCs|iS(N(R(RR((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytget_line_transformäscCsC|i|ƒddkl}|id\}}|t||ƒƒS(Niÿÿÿÿ(tPathR+(Rtmatplotlib.pathR~R9Rl(RRR~RJRK((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytget_lineçs N( R R!R R RtFalseR^RjRRR}R€(((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR#?s  * '  4 tGridHelperCurveLinearcBs}eZd d d d d d„Zd d„Zd„Zd dd d d d„Zdd d d„Zd„Zd„Z e d„Z RS( cCsGtt|ƒiƒd|_d|_t||||||ƒ|_dS(s aux_trans : a transform from the source (curved) coordinate to target (rectlinear) coordinate. An instance of MPL's Transform (inverse transform should be defined) or a tuple of two callable objects which defines the transform and its inverse. The callables need take two arguments of array of source coordinates and should return two target coordinates: e.g. x2, y2 = trans(x1, y1) N(R R‚R R R9t _old_valuesRR.(Rt aux_transR/R2R3R4R5((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR ós  cKs?|dj o|ii|ƒn|ii||iƒdS(N(R R.tupdate_transformtupdatet invalidate(RR„tkw((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytupdate_grid_finders cCsf|iƒo!|i||||fjodS|i||||ƒ||||f|_t|_dS(s!bbox in 0-based image coordinatesN(tvalidRƒt _update_gridRt _force_update(RR:R;R<R=((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyt_updates )tinc CsB|djo |i}nt||d|ƒ}t||ƒ}|S(NR(R RRR( RRR ttick_directionRtoffsetRt_helpertaxisline((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytnew_fixed_axis's     cCs…|djo d}nt|||d|ƒ}t||ƒ}|iitƒ|ii|iiƒ|i i tƒ|i tƒ|S(NRkR( R R#Rtlinet set_clip_onRt set_clip_boxRtbboxtmajor_ticklabelstset_rotate_along_linetset_rotate_label_along_line(RR R$RRRR‘R’((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytnew_floating_axis;s     cCs"|ii||||ƒ|_dS(N(R.t get_grid_infoR9(RR:R<R;R=((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR‹VscCs\g}x&|iddD]}|i|ƒqWx&|iddD]}|i|ƒqAW|S(Ntlattlinestlon(R9textend(Rt grid_linestgl((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyt get_gridlines[sc s‡tddddddddƒˆ}dd d d g|}d d g|‰|p‡‡‡fd†}n‡‡‡fd†}|ƒS(NtleftiR(itrightiRkiiZi´iRŸRc3sVxOtˆiˆdˆˆiˆdˆƒD] \\}}}|||fVq.WdS(Nt tick_locst tick_labels(RlR9(txyRitl(Rt lon_or_latt axis_side(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytfksc3sVxOtˆiˆdˆˆiˆdˆƒD] \\}}}||dfVq.WdS(NR¦R§t(RlR9(R¨RiR©(RRªR«(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR¬ps(R1(RR R«RtaxisnrtangleR¬((RRªR«sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyRes%N( R R!R R R‰RR“R›R‹R£RR(((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR‚ñs$      cswddk‰ddkl‰ddkl‰dˆf‡‡‡‡fd†ƒY‰dˆf‡‡‡fd†ƒY‰ddki}|idƒ}|iƒˆdƒ}t |ƒ}dd k l }l }||dddd |ƒ}|i |ƒ|||d ƒ}|ii|ƒ|id d gddgƒ|idƒ|iddƒ|iddƒ|itƒ|iƒdS(Niÿÿÿÿ(t Transform(R~t MyTransformcs­eZdZdZeZ‡fd†Z‡fd†Zˆiie_eZ ˆi ie _‡fd†Z ˆi ie _e Z ˆi ie _‡fd†Z ˆi ie _RS(icsˆi|ƒ||_dS(sÒ Create a new Aitoff transform. Resolution is the number of steps to interpolate between each input line segment to approximate its path in curved Aitoff space. N(R t _resolution(Rt resolution(R°(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR †s csR|dd…dd…f}|dd…dd…f}ˆi|||fdƒS(Niii(t concatenate(RtllRpRq(R6(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyt transformscs7|i}|i|iƒ}ˆ|i|iƒ|iƒS(N(tverticest interpolatedR²R¶tcodes(RtpathR·tipath(R~(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyttransform_pathšs cs ˆ|iƒS(N(R²(R(tMyTransformInv(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyRN£s( R R!t input_dimst output_dimsRt is_separableR R¶R"ttransform_non_affineR¼ttransform_path_non_affineRN((R~R°R6R½(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR±s R½cseeZdZdZeZ‡fd†Z‡fd†Zˆiie_‡fd†Z ˆi ie _RS(icsˆi|ƒ||_dS(N(R R²(RR³(R°(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR ¬s csR|dd…dd…f}|dd…dd…f}ˆi|||fdƒS(Niii(R´(RRµRpRq(R6(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR¶°scs ˆ|iƒS(N(R²(R(R±(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyRN·s( R R!R¾R¿RRÀR R¶R"RN((R°R6R±(sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyR½§si(t SubplotHosttParasiteAxesAuxTransR tequaliig@g$@gð?ii (tnumpytmatplotlib.transformsR°RR~tmatplotlib.pyplottpyplottfiguretclfR‚t$mpl_toolkits.axes_grid.parasite_axesRÃRÄt add_subplott parasitestappendtplott set_aspecttset_xlimtset_ylimtgridRtdraw(tplttfigRfR RÃRÄtax1tax2((R°R½R6R~R±sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyttest3{s* %&"      cCs¢ddk}ddkii}ddkl}ddkl}ddkl }l }ddk i }|ƒi |iddƒ|iƒ}|iddd d d dd dd d|ifƒ} |idƒ} |iƒ} t|d| d| d| ƒ} ||dddd| ƒatidiitƒtidiitƒdtidiƒ_dtidiƒ_|itƒtiƒ} | idddtƒtid<} | i i!dƒ| i itƒ| idddtƒtid<} | i i!dƒ|t|dƒ}ti"i#|ƒ|i$}|i%||i&dd gƒd!ƒ||i&d"d"gƒd!ƒƒti'dƒti(d#dƒti)d#d$ƒti*tƒdS(%s5 polar projection, but in a rectangular box. iÿÿÿÿN(t PolarAxes(R(RÃRÄg€f@gð?it lon_cycleiht lat_cyclet lon_minmaxt lat_minmaxii R/R2R4iR R¥RkR(i<RRtTestiRŸsTest 2RÅii2g$@iûÿÿÿi (+RÆt#mpl_toolkits.axes_grid.angle_helpert axes_gridt angle_helpertmatplotlib.projectionsRÛRÇRRÌRÃRÄtmatplotlib.cbooktcbooktscaletpitPolarTransformtExtremeFinderCycleR tinft LocatorDMSt FormatterDMSR‚RØtaxisR˜t set_visibleRt get_helperRRÍtget_grid_helperR›tlabeltset_textRÎRÏtsimple_linear_interpolationRÐtarrayRÑRÒRÓRÔ(R×R6RãRÛRRÃRÄRæRfR/R2R4R RîRÙtintp((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pytcurvelinear_test2ÕsN &     ## ! t__main__itfigsizei(ii(R"t itertoolsRt"mpl_toolkits.axes_grid.grid_finderRt mpl_toolkits.axes_grid.axislinesRRRRÇRRÆR6tFixedRtFloatingR#R‚RÚR÷R RÈRÉRÖRÊR×RËRÕtshow(((sT/usr/lib64/python2.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.pyts" 2²Š Z X