;ò ÑÀ>c@s'dkZdkZdkZdkZdkZdkZdkZdkTdkZ e i Z ddf\Z Z d„Z d„Zd„Zd„Zddd„Zd „Zd fd „ƒYZd efd „ƒYZd„Zd„Zdfd„ƒYZdfd„ƒYZd„Zd„Zd„Zdfd„ƒYZdfd„ƒYZdefd„ƒYZdefd„ƒYZ defd „ƒYZ!d!efd"„ƒYZ"d#e!fd$„ƒYZ#d%efd&„ƒYZ$d'efd(„ƒYZ%d)efd*„ƒYZ&d+efd,„ƒYZ'd-efd.„ƒYZ(d/efd0„ƒYZ)d1efd2„ƒYZ*d3efd4„ƒYZ+d5efd6„ƒYZ,d7efd8„ƒYZ-d9eefd:„ƒYZ.d;e.fd<„ƒYZ/d=e/fd>„ƒYZ0d?e/fd@„ƒYZ1dAe.fdB„ƒYZ2dCe2fdD„ƒYZ3dEe2fdF„ƒYZ4dGe2fdH„ƒYZ5dIe2fdJ„ƒYZ6dKe2fdL„ƒYZ7dMe2fdN„ƒYZ8dOe2fdP„ƒYZ9dQe2fdR„ƒYZ:dSe2fdT„ƒYZ;dUe2fdV„ƒYZ<dWe2fdX„ƒYZ=dYe2fdZ„ƒYZ>d[e.fd\„ƒYZ?d]e?fd^„ƒYZ@d_„ZAd`e?fda„ƒYZBdb„ZCdce.fdd„ƒYZDdee.fdf„ƒYZEdgeEfdh„ƒYZFdieEfdj„ƒYZGdkeEfdl„ƒYZHdme.fdn„ƒYZIdoeIfdp„ƒYZJdqeIfdr„ƒYZKds„ZLdt„ZMdue.fdv„ƒYZNdweNfdx„ƒYZOdyeNfdz„ƒYZPd{e.fd|„ƒYZQeRd}„ZSd~„ZTd„ZUd€e.fd„ƒYZVd‚dƒ„ZWd„„ZXd…d†„ZYd…d‡„ZZdˆ„Z[d‰„Z\dŠ„Z]d‹„Z^dŒ„Z_d„Z`eRdŽ„ZaeRd„Zbdfd‘„ƒYZcd’e.fd“„ƒYZdd”edfd•„ƒYZed–edfd—„ƒYZfd˜e.fd™„ƒYZgdšefd›„ƒYZhdœehfd„ƒYZidž„ZjdŸ„Zkd „Zld¡„Zmd¢efd£„ƒYZnd¤„Zod¥„Zpd¦„Zqd§enfd¨„ƒYZrd©enfdª„ƒYZsd«esfd¬„ƒYZtd­fd®„ƒYZud¯enfd°„ƒYZvddddfd±„Zwddddfd²„Zxd³„Zyd´enfdµ„ƒYZzd¶enfd·„ƒYZ{d¸fd¹„ƒYZ|dºe|fd»„ƒYZ}d¼e|fd½„ƒYZ~dS(¾N(s*iicCstti|ƒƒSdS(N(slongsmathsfloorsx(sx((s../biggles/biggles.pys_floor#scCstti|ƒƒSdS(N(slongsmathsceilsx(sx((s../biggles/biggles.pys_ceil&scCst|ƒ}|iƒ|SdS(N(slistsxslsreverse(sxsl((s../biggles/biggles.pys_tsil)s  cCs dG|GHdS(Nsbiggles:(ss(ss((s../biggles/biggles.pys_message.scCs't||d„t||dƒƒSdS(NcCs |||S(N(sxsysz(sxsysz((s../biggles/biggles.pys2si(smapsasbsrangesmsn(smsnsasb((s../biggles/biggles.pys_series1scGs.x#|D]}|tj o|SqqWtSdS(N(sargssargsNone(sargssarg((s../biggles/biggles.pys_first_not_none4s   s_AliascBs5tZd„Zd„Zd„Zd„Zd„ZRS(NcGs||idt||ƒ}ttiddƒ|iƒ}t||ƒSdS(Nsdefaults fontsize_min( s_size_relativesrelsizesbboxsdevsizesconfigsvaluesdevices devsize_minsmax(srelsizesbboxsdevices devsize_minsdevsize((s../biggles/biggles.pys_fontsize_relative^ss _PlotGeometrycBsGtZeiZeiZddd„Zd„Zd„Z dd„Z RS(Nic CsË||_||_||_||_|iƒ\}}|i ƒ\}}|o"|i |ƒ}|i |ƒ}n|o"|i |ƒ}|i |ƒ}nt||f||fƒ} t| |ƒ|_dS(N(ssrcsselfssrc_bboxsdests dest_bboxsxlogsylogs lowerleftsasbs upperrightscsds_logfuncs BoundingBoxsfsrcsRectilinearMapsaff( sselfssrcsdestsxlogsylogsascsbsdsfsrc((s../biggles/biggles.pys__init__ks    cCs`||f\}}|io|i|ƒ}n|io|i|ƒ}n|i||ƒSdS(N( sxsysusvsselfsxlogs_logfuncsylogsaff(sselfsxsysusv((s../biggles/biggles.pys__call__{s   cCsoti|ƒ}ti|ƒ}|io|i|ƒ}n|i o|i|ƒ}n|i i ||ƒSdS(N( sNumericsasarraysxsusysvsselfsxlogs _logfunc_vecsylogsaffscall_vec(sselfsxsysusv((s../biggles/biggles.pyscall_vecs  icCs||fgSdS(N(sxsy(sselfsxsysdiv((s../biggles/biggles.pysgeodesicˆs( s__name__s __module__smathslog10s_logfuncsNumerics _logfunc_vecs__init__s__call__scall_vecsgeodesic(((s../biggles/biggles.pys _PlotGeometryfs     s _PlotContextcBs tZddd„Zd„ZRS(NicCsv||_||_||_||_||_t ||d|d|ƒ|_ t t ddfddfƒ|ƒ|_ dS(Nsxlogsylogii( sdevicesselfsdrawsdevsdev_bboxsdatas data_bboxsxlogsylogs _PlotGeometrysgeoms BoundingBoxs plot_geom(sselfsdevicesdevsdatasxlogsylog((s../biggles/biggles.pys__init__s     cCsQ|iiƒ}|iiƒ}|iid|d|d|d|dfƒdS(Nscliprectii(sselfsdev_bboxsxrangesxrsyrangesyrsdrawsset(sselfsxrsyr((s../biggles/biggles.pysdo_clip–s(s__name__s __module__s__init__sdo_clip(((s../biggles/biggles.pys _PlotContext‹s cCs/t||i|iƒ}|ii||ƒdS(N(s_fontsize_relativesvaluescontextsdev_bboxsdraws device_sizessetskey(scontextskeysvalues device_size((s../biggles/biggles.pys_kw_func_relative_fontsizescCs)t||iƒ}|ii||ƒdS(N(s_size_relativesvaluescontextsdev_bboxs device_sizesdrawssetskey(scontextskeysvalues device_size((s../biggles/biggles.pys_kw_func_relative_size¡scCs-t|d|iƒ}|ii||ƒdS(Nf10.0(s_size_relativesvaluescontextsdev_bboxs device_widthsdrawssetskey(scontextskeysvalues device_width((s../biggles/biggles.pys_kw_func_relative_width¥ss_StyleKeywordscBswtZeZhZhZhde<de<dett|iƒƒD]'}|ii|i||i|ƒqWdS(N( srangeslensselfslabelssiscontextsdrawstextspoints(sselfscontextsi((s../biggles/biggles.pysdrawss( s__name__s __module__s kw_defaultss kw_renames__init__s_LabelsObject__halign_offsets_LabelsObject__valign_offsetsbboxsdraw(((s../biggles/biggles.pys _LabelsObject@s!3 33 s_LineTextObjectcBs)tZhdd<ddtZhdeiddƒ= 1., b integral].if0.0i f1.0iN( sxsmathsmodfslog10sabssasbspowsint(sxsasb((s../biggles/biggles.pys_magform=s $$   f0.0cCsÁ|djodSnt|ƒ\}}t|ƒdjoD|djo d|Sq~|djo d|Sq~d||fSn|d jo*t|ƒ\}}d t|ƒ|fSnd |SdS( Nis0if1.0s $10^{%d}$f-1.0s -$10^{%d}$s$%g\times 10^{%d}$f9.9999999999999995e-07s%.*fs%g(sxs_magformsasbsabssrange(sxsrangesasb((s../biggles/biggles.pys_format_ticklabelIs      c Csg}tt||ƒt|ƒƒ}tt||ƒt|ƒƒ}|||}x1t ||dƒD]}|i |||ƒqiW|SdS(Ni(srs_ceilsfloatslosoriginssepsas_floorshisbsr0srangesisappend( sloshissepsoriginsasbsr0sisr((s../biggles/biggles.pys_ticklist_linearYs  cCstid|ƒSdS(Ni (smathspowsx(sx((s../biggles/biggles.pys_pow10dscCsti|ƒSdS(N(smathslog10sx(sx((s../biggles/biggles.pys_log10gscCs·t|d|ddƒ\}}|dddjo d}nE|dddjo d}n&|dddjo d}nd}|tid|ƒ}t|d|d|ƒSdS(Niif5.0if2.0ii ( s_magformslimsasbsxsmathspows major_divs_ticklist_linear(slimsasbs major_divsx((s../biggles/biggles.pys_ticks_default_linearjs"   cCs½t|dƒt|dƒf}tti|dƒƒ}tti|dƒƒ}||d}|djot t t |ƒƒSn6|djot t t ||dƒƒSn t |ƒSdS(Niii i(s_log10slimslog_lims_ceilsmathslog10snlos_floorsnhisnnsmaps_pow10s_ticks_default_linearsrange(slimsnnsnhislog_limsnlo((s../biggles/biggles.pys_ticks_default_logxs   cCsdg}|d}|d|dt|dƒ}x)t|ƒD]}|i|||ƒq=W|SdS(Nii( sticksslimsasfloatsnumsbsrangesisappend(slimsnumsasbsisticks((s../biggles/biggles.pys_ticks_num_linear…s   cCs{g}ti|dƒ}ti|dƒ|t|dƒ}x)t|ƒD]}|i |||ƒqKWt t |ƒSdS(Nii( stickssmathslog10slimsasfloatsnumsbsrangesisappendsmaps_pow10(slimsnumsasbstickssi((s../biggles/biggles.pys_ticks_num_logs% cCs¼|d|dtt|ƒdƒ}|tjoLd}t|ƒ\}}d|jodddjno d }q…n|}|t|dƒ}t |d|d||dƒSdS( Niÿÿÿÿiiif1.0iif2.0i( stickssfloatslens major_divsnumsNones_nums_magformsasbs minor_divs_ticklist_linearslim(slimstickssnumsas minor_divs major_divs_numsb((s../biggles/biggles.pys_subticks_linear•s& &c CsAt|dƒt|dƒf}tti|dƒƒ} tti|dƒƒ}|| d}|djo&t t t |t t|ƒ|ƒƒSn«|djog}x|t| d|dƒD]c}xZtddƒD]I}|t |ƒ} |d| jo| |djo|i| ƒqÔqÔWq¾W|Snt |||ƒSdS(Niii i(s_log10slimslog_lims_ceilsmathslog10snlos_floorsnhisnnsmaps_pow10s_subticks_linearstickssnums minor_tickssrangesisjszsappend( slimstickssnumsjsnnsisnhislog_lims minor_ticksszsnlo((s../biggles/biggles.pys _subticks_log¡s"  & "s_GroupcBstZd„Zd„ZRS(NcCs||_dS(N(sobjssself(sselfsobjs((s../biggles/biggles.pys__init__¶scCs;tƒ}x'|iD]}|i|i|ƒƒqW|SdS(N(s BoundingBoxsbbsselfsobjssobjsunionsbboxscontext(sselfscontextsobjsbb((s../biggles/biggles.pysbbox¹s   (s__name__s __module__s__init__sbbox(((s../biggles/biggles.pys_Group´s s _HalfAxiscBs¼tZeefZeefZee fZ ee fZ hdd<dd<dd<ddtt|ƒƒD]*}| i|i|||| | ƒƒq—W|iƒ\}}hd|<d|<}|i|iƒtt| |f|ƒ}|i|ƒdS(Nishalignsvalign(slabelssNoneslensselfsticklabels_dirsdirs_size_relativesticklabels_offsetscontextsdev_bboxsoffsets draw_ticksstickdirs ticks_sizeslabelpossrangesisappends_possposs_alignshalignsvalignsstylesupdatesticklabels_stylesapplys _LabelsObjectslsadd( sselfscontextsposslabelssisvalignslshalignsstyleslabelpossoffsetsdir((s../biggles/biggles.pys_make_ticklabelsõs !   (cCs_|i|ƒ\}}|i||ƒ}|i||ƒ}|it t ||f|i ƒƒdS(N( sselfs_rangescontextsasbs_posspsqsaddsapplys _LineObjects spine_style(sselfscontextsasbsqsp((s../biggles/biggles.pys _make_spine sc Cs«|tjpt|ƒdj odSn|i|i}|i|t||i ƒƒ}g}x'|D]}|i|i||ƒƒqeW|itt||f|ƒƒdS(Ni(stickssNoneslensselfstickdirsticklabels_dirsdirs_dposs_size_relativessizescontextsdev_bboxsticklenstickpossticksappends_possaddsapplys _CombObjectsstyle( sselfscontextsticksssizesstylesticklenstickpossticksdir((s../biggles/biggles.pys _make_tickss!cCs¬|iodSn|i|ƒ}|i||ƒ}|i||ƒ}|i t jo|i }|i t jo|it j p |it j }|io|i||ƒn|ioz|i p|o |i|||i|iƒn|i o |i|||i|iƒn|io|i|ƒq/n|i p|o|i|||ƒn|it j oA|ittt|i ƒ|i|i!ƒ|i"f|i#ƒƒndS(N($sselfs draw_nothings_ticksscontextstickss _subticksssubtickss _ticklabelss ticklabelss draw_subtickssNones draw_tickssimplicit_draw_subtickssdraw_ticklabelssrangesimplicit_draw_ticklabelss draw_grids _make_grids draw_axiss _make_tickss subticks_sizessubticks_styles ticks_sizes ticks_styles draw_spines _make_spines_make_ticklabelsslabelsaddsapplys _BoxLabels_Groupsdevice_objectss_sides label_offsets label_style(sselfscontextsimplicit_draw_subticksssubticksstickss ticklabelssimplicit_draw_ticklabels((s../biggles/biggles.pysmakes2 /       $(s__name__s __module__s_ticks_default_linears_ticks_default_logsfunc_ticks_defaults_ticks_num_linears_ticks_num_logsfunc_ticks_nums_subticks_linears _subticks_logsfunc_subticks_defaultsfunc_subticks_nums _attr_maps__init__s __getattr__s __setattr__s_tickss _subtickss _ticklabelss_make_ticklabelss _make_spines _make_tickssmake(((s../biggles/biggles.pys _HalfAxis¿s    *       s _HalfAxisXcBsStZdd„Zd„Zd„Zd„Zd„Zd„Zd„Zd „Z RS( Nf0.0cCs5|i||i|ƒƒ}|d|d|fSdS(Nii(scontextsgeomsasselfs _interceptspsdb(sselfscontextsasdbsp((s../biggles/biggles.pys_posIscCsd|fSdS(Nf0.0(sd(sselfsd((s../biggles/biggles.pys_dposMscCs,|idjoddfSn ddfSdS(Niscenterstopsbottom(sselfsticklabels_dir(sself((s../biggles/biggles.pys_alignPscCsX|itj o |iSn|i}|idjo|iƒdSn|iƒdSdS(Nii(sselfs interceptsNonescontexts data_bboxslimitssticklabels_dirsyrange(sselfscontextslimits((s../biggles/biggles.pys _interceptVs   cCs&|itjo |iSn|iSdS(N(sselfslogsNonescontextsxlog(sselfscontext((s../biggles/biggles.pys_log_s cCs |idjodSndSdS(Nisbottomstop(sselfsticklabels_dir(sself((s../biggles/biggles.pys_sidedscCs¦|itj o…|i\}}|tjp |tjoQ|iiƒ\}}|tjo |}n|tjo |}n||fSq•|iSn|iiƒSdS(N( sselfsrangesNonesasbscontexts data_bboxsxrangescsd(sselfscontextsascsbsd((s../biggles/biggles.pys_rangejs   cCsI|tjodSnx-|D]%}|itt|f|iƒƒqWdS(N(stickssNonesticksselfsaddsapplysLineXs grid_style(sselfscontextsticksstick((s../biggles/biggles.pys _make_gridvs  ( s__name__s __module__s_poss_dposs_aligns _intercepts_logs_sides_ranges _make_grid(((s../biggles/biggles.pys _HalfAxisXGs      s _HalfAxisYcBsStZdd„Zd„Zd„Zd„Zd„Zd„Zd„Zd „Z RS( Nf0.0cCs5|i|i|ƒ|ƒ}|d||dfSdS(Nii(scontextsgeomsselfs _interceptsaspsdb(sselfscontextsasdbsp((s../biggles/biggles.pys_pos~scCs|dfSdS(Nf0.0(sd(sselfsd((s../biggles/biggles.pys_dpos‚scCs,|idjoddfSn ddfSdS(Nisleftscentersright(sselfsticklabels_dir(sself((s../biggles/biggles.pys_align…scCsX|itj o |iSn|i}|idjo|iƒdSn|iƒdSdS(Nii(sselfs interceptsNonescontexts data_bboxslimitssticklabels_dirsxrange(sselfscontextslimits((s../biggles/biggles.pys _intercept‹s   cCs&|itjo |iSn|iSdS(N(sselfslogsNonescontextsylog(sselfscontext((s../biggles/biggles.pys_log”s cCs |idjodSndSdS(Nisrightsleft(sselfsticklabels_dir(sself((s../biggles/biggles.pys_side™scCs¦|itj o…|i\}}|tjp |tjoQ|iiƒ\}}|tjo |}n|tjo |}n||fSq•|iSn|iiƒSdS(N( sselfsrangesNonesasbscontexts data_bboxsyrangescsd(sselfscontextsascsbsd((s../biggles/biggles.pys_rangeŸs   cCsI|tjodSnx-|D]%}|itt|f|iƒƒqWdS(N(stickssNonesticksselfsaddsapplysLineYs grid_style(sselfscontextsticksstick((s../biggles/biggles.pys _make_grid«s  ( s__name__s __module__s_poss_dposs_aligns _intercepts_logs_sides_ranges _make_grid(((s../biggles/biggles.pys _HalfAxisY|s      s _BoxLabelcBs2tZhdd<dd Saves PNG file in temporary file. Returns file contents. Nispngs _biggles.pngsrb(stempfilesosslensargsswidthsheightstypesmktempsfilesselfs write_imgsopensfsreadsoutputsclosesremove( sselfsargssfstempfilestypesheightswidthsfilesoutputsos((s../biggles/biggles.pyswrite_back_pngés   (s__name__s __module__s__init__semptysinteriorsexteriorscompose_interiorscomposes page_composesNonesshowsshow_x11sshow_winspsprints write_epss write_imgs save_as_epss save_as_imgs draw_piddleswrite_back_png(((s../biggles/biggles.pys_PlotContainerGs"        cKst|ƒ}titidƒƒ}|i|ƒt t i |f|ƒ}x|D]}|i|ƒqPW|iƒt|ƒdS(Ns postscript(s _open_outputsfilenamesfilescopysconfigsoptionssoptsupdateskwsapplysrenderers PSRenderersdevicesplotssplots page_composesdeletes _close_output(splotssfilenameskwsoptsplotsfilesdevice((s../biggles/biggles.pys multipageùs   c Cs1ddf\}}|tj o>|\}}|tj o |}n|tj o |}q]n|tj oId|||}||}| p |djo |}n||}n|tj o>|\}}|tj o |}n|tj o |}qþn||jo|d}|d}n||fSdS(Niif0.5( sr0sr1s content_rangesNonesasbsguttersdxslogs user_range( s content_rangesgutters user_rangeslogsasr0sbsdxsr1((s../biggles/biggles.pys _limits_axiss.             cCsct|iƒ|||ƒ}t|iƒ|||ƒ}t |d|df|d|dfƒSdS(Nii( s _limits_axiss content_bboxsxrangesguttersxlogsxrsyrangesylogsyrs BoundingBox(s content_bboxsguttersxlogsylogsxrangesyrangesxrsyr((s../biggles/biggles.pys_limits ssPlotcBsMtZd„Zd„Zd„Zd„Zd„Zed„Zed„Z RS(NcKs9tti|fƒt|idf|ƒtƒ|_dS(NsPlot(sapplys_PlotContainers__init__sselfs conf_setattrskws_PlotCompositescontent(sselfskw((s../biggles/biggles.pys__init__+scCs|i|ƒdS(N(sselfsaddsother(sselfsother((s../biggles/biggles.pys__iadd__0scCs|iiƒSdS(N(sselfscontentsempty(sself((s../biggles/biggles.pysempty3scGst|ii|ƒdS(N(sapplysselfscontentsaddsargs(sselfsargs((s../biggles/biggles.pysadd6scCs5t|iiƒ|i|i|i|i|iƒSdS(N( s_limitssselfscontentslimitssguttersxlogsylogsxrangesyrange(sself((s../biggles/biggles.pyslimits9scCsU|tjo|iƒ}nt|||d|id|iƒ}|i i |ƒdS(Nsxlogsylog( slimitssNonesselfs _PlotContextsdevicesregionsxlogsylogscontextscontentsrender(sselfsdevicesregionslimitsscontext((s../biggles/biggles.pyscompose_interior=s   cCs)|i||ƒ}|i|||ƒdS(N(sselfsinteriorsdevicesregionscompose_interiorslimits(sselfsdevicesregionslimitssinterior((s../biggles/biggles.pyscomposeDs( s__name__s __module__s__init__s__iadd__semptysaddslimitssNonescompose_interiorscompose(((s../biggles/biggles.pysPlot)s      s FramedPlotcBsûtZd„Zhdddf<dddf<dddf<d ddf<d dd f<d dd f<d ddf<dddftƒ}x*|iiƒD]}|i|iƒƒqW|SdS(N(s BoundingBoxslimitssselfscontentsvaluessobjsunion(sselfsobjslimits((s../biggles/biggles.pys_limits_uniformK s  cCsÉt}xEt|iƒD]4}|i||fiƒ}t |i ƒ|ƒ}qWt}xEt|i ƒD]4}|i||fiƒ}t |iƒ|ƒ}qdWt|d|df|d|dfƒSdS(Nii(sNoneslxsrangesselfsnrowsskscontentsjslimitssls _range_unionsxrangeslysncolssisyranges BoundingBox(sselfsisjskslslxsly((s../biggles/biggles.pys_limits_nonuniformQ scCs#t|i|i|d|iƒSdS(Ns cellspacing(s_Gridsselfsnrowssncolssinteriors cellspacing(sselfsinterior((s../biggles/biggles.pys_grid\ sc Csþtƒ}|i|ƒ}ddf|id|idfg}xµ|D]­} |i | }t |i | ƒ}t |i| ƒ}ddddg} | d|idjod| d