# graph plotting functions, Copyright (C) 2007-2010 Dennis Furey # # axis (31695) # - variable # - alias # - hatches # - rotation # - intercept # - hats # - placer # curve (60945) # - points # - peg # - attributes # - decorations # - scattered # - discrete # - ordinate # visualization (125613) # - abscissa # - pegaxis # - ordinates # - curves # - picture_frame # - headroom # - margin # - viewport # - boxed # latex_document (3235) # plot (23813) # # compressed with granularity 146 # # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # {kvGzwwZhqoIwWCGJseGY_iJsijfoo_niwXxEVvr]hwZxftCGlqkJxwzw{uwY?nDlSeIRvggfvxzaHbshjhgF=D\Pllcuy_KR?\_cvN[GFgfzgfJ{nwFFsh?GMVp oLFCmcz?rjp\]Z\kQd=j]dVBgTD]flVypnl^Hb{{vRxDfVKJr wZuFHcKHO<\HGlFFOdPQV[vBB>Sd]f]hGdnlhncuz{zqivwNaikOOiwFgHaLnnmn@ozuQV>Av>GN^fNVD]ZpGRjSv?^DV=TKDev?@gTdf^]{FEkEZf>R><^iPnNs]s{_KE?`tIHakJqHaVksNahxqIKvoIFd=ED^MZg ZnGmfzL\fEdoVtCuxwkcuzuVTwfRhWO[eKv\d^@LSfkHD{>\fMn^gK{NF[cmbGfwGsHRv?WPvjcNCgU]=[J[cnjoXgttXzylvvgrIYQhiRw[vfnt[fgAaJ^Vg{zalAbT>BgiCXF ErXinmh^ZCoLdfUzwd[T[fvjP_shskXFQGgps[omoqHizkjiKvff=]yFFrNgZf\[cwheb=\Vh{tnR?Q dptAhJQ{oB\tgpq>mpIXZcspxzwp{wp{xsjfDHRgwNHd{FfClCxvnF\Bf {kX\OEOGjqf{]z[WB\a\=IbVDVj_Bo{dnVPglwgPCFLpkW]mmx[G?KSO>a{zygQGdoZff\aGHuEFxlf lAt[jwNwEMIQj{yd[<[GtzLU>d=fnyeYQvFxP_fBncJjiqsx\\=jeWoYPnoVJfBzTjjWn^ZmpIV?[LEike pXzfezTZOLNwV]x]u]b=\j{vJFpnPdqJX{Db xunVTU?Ny<_WffhRPfdp{HqF_Hzh=Y=ZF\k=z[dM hmVO\VCrAvFvbhOGFZ{u=z[_xb[uZmqrdpnDghnF^[cop=TUZ\{ZvCDfHez[^CoCw{aEz[\]BLqCOpWjjknEU\^[R[\avcmzjqRp_ mmGm>gdqmX{wWwivff^oJNVd>fb`eZ>D>ov\FCrCjebJSFy@jioLK>]xm{evDA{ctdHFD^pYf`=TLVW^dBRgz?YDfvjH= TTSbTEzd[H[`=TTSdjynF\z>MfVnY^kNV^fMz[ f^T_C=eu\JS\M{]z[zaCce[Ci{YB^= z[{waH>qG?OSZfffnnn\>i@Bgf]xmzkGN@wDnWl\Mzn[D=]z=CvDVjBgdTV]fBgdFpcS\pjo\Fhs EZd?\J[dat>[b[awsP[GvjXyndvXdcxCu[{ezEI_HKggvffgFgFg[nCGhnhGEx==v=CwE xdVhBkG]dVBgddpEPGFEPIFfxCYX\[fCyctcu{{faK[AWhtSHfzkffgFiGVgQyo`jdfMV`GwP\`f=>\LZ\O]fCvg\hB\RJg]fguLvFfjhehGrjZUz>MXux=]zZeKoqFgNfFnBD]ftVd{DXfhFgvc\Kn>M^mXJZBg]fxm?hqHf@fc_]dtlAt[jtVjF\[czg]fxyQEfv^{VksweWoozffffgF fxgU]=[shBgbTE {{^O{t>Fb[\=I]fr[h[]ftViDTQXBgx_\=?tETmHCycf{k]W?i?iOQxrNKXgVuWoyYXvewqGFZvn{ff hhfiFhh>nHQpFgxndxcOFBfFrNL=OPqFsYD^fMz[auscux\_i@kNsIo_G[Fghpfpfn\VRHgFoEbgPgGNBkiDvFiDf_xV\G ]z]xcnUz]y]v>RE=eHZfRBvCiF{>]]f]eEZnTETEe?[nRvFn^oUz[S{vtOMQnuWfZ\KeqGfejdknkoL iBlQYRwe^nF\\D<^\]fuM^jBgfB>\jixpe IYEbF`=THS]fuPtfxT[mIRjkyhBgfgvjmyGjbIMse{ksYxbkg_WikXfhfqFeFf?o@Aqff>oGNfgiFf\ d@C\xfnH`oNZBg]ftCux_G{_eKlAOoGQsriPvu?^ok`vIk{FfnnNffn_SItVvffNhfgpph_TvFBgOlVjBgd\z@^Vh {\w\>CrC]fpeKGFN[SNAifFkNgktWdBg]fnCrCx>[colkzVKKJu[[P`uisNpjZqrxgnkIxfiFIFhffm UOsyoFfgFfkPfvnfoQAUrvrBgo]ftftd[=BF]{ebCW [e^hhkAsQvIQQIWQfSwEpgv{oFxqFnfoJNAQvk[VFwNpfho@ftndPB]f\E{KjgP= UbBg]ftmHnwrHgFpfnf]DClC\?l\\]{wNFnBd[dojFdPQVoMGfBg]]fvft[Ub=gFtFyKXIFzAvdVCtfShdHiAkQSPKA=X OdQZyO_qVKjRvznvvL=bja?IzfjiQN{wFoGNhhuoBtomfiGNHh`iniN^cxo`^hB\RDvOgJ>sPVHr]fv ]flVj>z>dEfnguFacJQQPk{vj\V]Gqpkunn`gSdfnshff hfngHbEvUSffnppfnnjiN\m[MhNpBE>OJhpNyPeNfBgG\kqno_kvn_GNiHpX{hywaFiGQNoNOHiN\ctNgOVwZngFnff]GwHnQp{OFiONfgFgFqFdSffmABxpeON<>dV]dVhxK>J<_taKPuDM\HShOO wVxQGoWKHHIYSr_BJK?=PoUupsnkaJH=ZCwjwDVj]zeLhgsk{ftm{RththkWkwNfiFpoUFm?sY[Ohng NiPhpoHiF^ctGPUJvhdfpdVBBfhK>BxnTAjznTExvnonr_>pP?DsPiPeXqviglRrgQHhRIS@SPwVU]= [shQNBgdcvpteQ{uz[jgOOnaSNoOXqZriqhfnpgGEFffgFqGPoE[NlskHdF]iEGJaDcyX^OXfvnfwTSnwIaHjADH_QFpyYzYGd\upJvYnHOSF>R?QlVdB VyFjcHlAt[jub@A{ZnhokmURBPfkFQNs\sqvpgtuGyhfqFnnEZQWP@^fqHPhfoHdFA=zi?w^dIIU>t\ BzpFiFnfpgPgEEZh\UjftpdI={pzDPfvnfhhEFwSTUGqjB^f{<=gkh>ectgGduRQoArqNGzoSBk{GF{bgjgIFiHjavu>fgGOgIHhfdTSqDCOhggnpd[UONFB g^diXpPPMG`MmQDrLSuu^\fj=ZnqCzgQRfqDbjcuztETK`fhrHSMQyt{FxQILenXCuzbu FhqFMGfCoCv{`=rw`dXlAnPVyCHiFfqguFBXZHnqN{{VgyywP\qFpfd>SkelfqDnfnfNfJ[q?AxoQAtooDHCm@SIBtv Ffo_j^fMzBggGGOc?C=tLWyANrXhWHHT<`T?x{ynRRCHNlWhAMwGMIyyKINgCvr[ssZhffffdGAu{?f fndgFnFeUZfSJf\\qFiOQNxtWQPE[zh\cxJiDEZ^QSQufl`mvewcyklgD\?j\G]zBgfi???TawN?q{H qW>j`>jbUe nnCQMyQjxh^iQGpqFh^Jv=CtW>fplZKaq@pAhXyOtnPhtFxZ{u>qrySqQGYwAHoMsQKyIS[INf?agGsHS=B =ZCwykiNiNgN\D[zhnKlfiFhnFiMKNoJf^ngkwQRH{OQQXowvfj]HkgH_yN>SqQWY{N>OG^QRQFgG_j hcl[gIDMW\zwpqRwik_xSf[[Y_`j=cMOPdEVbSb[]{[WWOINg Nf=[HflizHhnfgkFKjdEwfd^eP{XIaNdPGIQXzvQkDG IGvc\KqMisRiV^cPapqevdApkFClCxws]z[kFYFNE[qUqM?D_r\YQOPJkaFOgxSKdIOkGsFeWqdd_QA N\WLNjffxCYOGlxnnKR uqMsAM^gRzyNdffd[acuatT[r[^[_{{sZdiFqF>AurNifi>fffgaOJdKjffpv lI__@q=NiQQjQ{AC\ffErNinfexPli[{pq?@hDcjfgHdq=LmppdqEeNhq?oPklf=`ei=d^ectbjYmqP=ENcRPp^iQN@An\SDdZ HiJ]MXuxR=Nfv?c KrcsP[T[zYIhrZXsxhPulSiio[FCQiP_>Q_Xq>maacPwr_?MlU^iQQ?\>RK?\ DDn[czM^cuZwfgKVKtKVqLpzvFj=SQhnCoC{kb]xclAMPNqL>^lr>sPcGzLcvg{QSvCnSt@sbgaPZXsxgDuzq ie{A]Ty>SphPIoPJogHvcTJQEpKfZiainiQQK\<^L?Dfndm{yZ^n\jvfhvfe{HgH=TTc{{{kfX UNYzBYD{{fHq[x=Vc{p_l^pjQMuo[gOK[URxC_XByO{UOGdHPbdQffgqB?Sq]ZAqCNQuFN^ffh<EyUz>Sf[=z[{gGNiFffffFfflSkfMwffh_DfnOHc@dCYfpqnF_liVh\F[cpqO^n^jvhmHf@_XHR q?q?nQGsKXFfU\Cmz[z[cvubEjzt[pkcgOzTQ[{q^IEz[Fjt[ambnCuyFJ\niGaPZXsyGT>evDA{ctffyDB]xUuUAF^]IjgFNqeJ]cBO^iNfhqWszGDfMVCoCvj]xmzg^eans[ykWJqH_c{ iJ]z[{zvLFCmc_upd[ETfD]y]vgxvHgNuQCcIngFf`hw?{Mmq{sIMlUSJNQgIQP[]RatkpkDC?GoN>f fiQSL>L=BB[fSEz[NSFCoCuz[cb]mTuzJDCr[Azr[ssZ dgFhffffffdpP?yPBMJfff\[sY{dvffy@CLd[B[TJLA]^Z]xm{_uBTX?t=bnBVHgP]dX_enyGaPZP_GDND@oPyFZggLOZo]sSQ LFQQgQRoUSjlOPrumdqRqNffiIPD<[fK@@f= gOFvtfbIHfdijfnd{IN{R>Jfy{Qf[pyQQfhFeCzItf`[]gwC=LR[^yOfqQq]dPqGbVSEV?GpjQROLIF{lfN{[Tjp[>p_uYLdFdNgPAJJd{JdKgPQDFuIRPfgvONxeC^Mm{=dZfsGzRU]oTfMUb>[{ut{zdgjfpxztDIORFgNFoq?^zOQaRUVn[fCyctEz cywsfmFffffffFfKqMLKfffjoOgr^vjfP]ftVj[cqf^Ijfd\IXsqGjaFvGtz?QkO]RQ[Xf\MzEjqHhRPn>BefhPUm?PtXfIRPwoSXnn[?hcmTh_btcJXbunwa{oklA]=bVFFAx?z icu{{w[sbVSEWnryCdfy@@^Hf>VZrSPZfZJCQQFAA_\hRP`sqJPpVwvqGfniQ@@\cvhfngR=]zZWuowCEMOpspwj>=CubEaGmb^F\acwCvVr][]VKqAL[rNFrNyQTy>urVydgHviINl^nZfIHnwTTXHTEz=c\EZ=Ct]{AwusHfgHiHhnfI_p`DzhoIR< BgaL]ftVjqDVdW>UdzyONjwPciD`aat?PKcUq?bARQr>CS>KFd@D\LO_SpPkzPdbMtQQ^vwDn[>e\LV F\<\l[@MXeGYcwCvAx?zicuzi{wSqbVUho^lBKxXDWdrJFez[nGGaJuVjgb\LZ<_voHrj]fq=flVgP]dA\>vtnWMnoiQMhLR[cwN@zYR]ylq?YinrW{kX^iw\=GFd[H[aDcupsSfz gndAF=]=lUFvrOCfc\l[@MXTWYcwCxRnAx?tV[cz{w[s{ipHny\ySn>zJCosOQN^NeEMhMoRFLlia]X UYPILeMPpqr[FgFggGzEBKQRm`B>]l`i\TLXBOCfc\Jp?=xMAm_i cwCtvAx?tuz[g[zr[cvrlDsCO^kL>Adz<_xHN`y[LN=F]Lb@WsawbMiMFnIPjGAfhheF^fq_\=?tETm HCycdmzu=YrSxnfgFpnoN^I_voHnlf]gfBdVqDBgvj>GMeJq>\ycwCxLhUSJ___ePj_qnkpU{LoF? ]lPAo=B=]zPE[KEzBoPgPnnoNe=?voHqNlBfdVBqL VjBg\pBwqL[^Z\TLXBR>TL [te=TV=[wFfhgOGHf?_voPqQLVlB?P]ftVjpB`wQDmHZ\mx@wSjXpiU?jqJ{laq=c{jO=jwL=TTFDB@C=`mvetHCm@SOgYcwCvNr?=xMAn`irmw\^HcsLPKXd=<\qELq^[yWRph hiGuJwgtvhgHyVUxHA`<\Sps{wcyNo>gPpnoF^LzhoIQPALIHBg=goLokQVLB@=]lPmLiJEd\n TT?Tz <_Ow`uyAOuyVR=QOGTBpO^AtclqO_PiPeQOGFneFFipoKvB>hcv@@[wXJK]fhfiGFfhflzffiIQNo=fCvd`onitgUYDuI QQOjr[QJw>[UTHSkmFnJNgEx=LTF=vr=]=lT=`i]\dXhiiZ<>Kdb^wQctMXui> p`duO_nXODJF=>dznCmczp=T L[BIvrEJ>Ah@]z[DU]cuydBBapKGIOjoOQNqAPHoPo^rd>S Cwgx[{sQnl[mAx[_{ziPfiNnfgFlCvff\dgIF_ZwNfmUNwOieHkLqKP=EXMTn=DIXri?PJa{`ffCrC\ f^CrC\LPE>I?nMxqM>NiHfiQF=QFFyG[oXEz>E{@S]{QJScxU[Ct{{phq GIIGHq@EzoGDNfnd=PvndgUGG_QQLGq?htdh\N>FmUNZ?_UDcoNe[pCx[_{{ILpppphoP `<>[lctt[pCx[_{{QHqHqQQNfU{QQQ@iLBWnqOJNMAO`HcTHn@Zp^ZMOl`RUPF\F\>wQDCvrDwU>ZrUJij[c yNDSlK\iGGQQQQQQQQQPyoIiSaXI^[_Ktmz{?rSO_icMYd[_tBLcu@S\=zl[\@[_]{L[mzK{yHqIPiQ HpdD[qQQNqLCjiPiO>vCr@\pOGQQFiFgQNoJxMHWy[Fi\L[ ^P[ZihZrlR\ANr`MX<^S^=zd[^[\=zl[\UZB[l Cx[_{yMNIHqQQD\cwQQPQP?`wIPHpFJHuQiNl^mGU_xSsXDRrppoF^cuHhnF=zvng>xvspOhe@i^Zr@BvrB<^n QXqQFiSHQPoKDm{G\O]z^[]Gt]zDCv]zN[ ^atUZ=atU{>[mzKoONffGLdSffff=MkNfmn@fsGEG>zi^Ai\CNrF@OFnhrbdioEXWF=]{=m>`_>sod= FE{Ra\bvzFteEJi^Zp=vr>IFfgJfhnpeWe@@Czv\k_rlYE>]zKlYY[nnsdSsMuXRS{=qLUussFR hA{Pkv[^K]FZwIPXaJwoTNPUGW=W?`i fnnfhvfphhz\WdA{K<SdatB[]dS^ezeAuEz>k\ ezBCxqGMQMEE[QQQLckGQLNSHwDnO@i\G\uGYFxQP`fpfgQOm[phckCIQ[fZLm]=TQkYs]rf<]{xCxq UE{CoSfdmMGPqHjnA{R\CuMFQOhaT<=_dh{nytRCyDeKy{xRuXnCy=wkIfxe{B?aU ZJYF_]iozAXS]zGCt>[SFCj[]cwDShcuAt<_tfk\UzB]Z>[]dS\^SqQQONB[qQQPe@xQOlLSgT=MgWPqQFqPpngVH[kyj[Ns O?NQGddcL_x@cxSuNld[mxqlGrRCyGcj^o[G^gyqr{{x{yOqQRmXGctvAxcuCt <_tfk\U{>[\Uz>[dFQQPHAyQQQ>zuQmZyDHHNdZWO`[md{XCzqD\S PCjxsZ?sCIM?B?QJkmFM_{wssh[cwrEz[GqyQcQNzjqX^L`d=?c\Et>=xZiqGQQGQQS\[nqQPE=[IQQ MPoqP_MLJrE`i`aQNQLiQN\SoDpyIDEQ=rIxX`={?{GzCwUz[kG@HWdh{nv[WHCzqDBy@[m?L[]`IvZ Ax=ZCwkmL=BF>SCyC{[KY[t[nClCxyP=\IPrkeGdyOWQ[zgEZx]{DBA{Z?CtezPCtEAycteX=Z?=zNfg@NZffp`UKH^XFJrG@ieFgNhPqjGEtHRr^Y>KlSsSBOwUz[kP_Hs`={ziH``ZyQ[H_i\zihff>gIxv\CtIiRWLCthSlZ?d{ztsLfUz<@r^OsnCyC{OJl[nd{{]lAt[jyQ\AfeCv>[iSJM{pnh>R?YXOMzKsr?wCvYJiO=]z>[iqJU Qa\FCtB[b[\f[`Uzx]x=vwZvmZwOyx>{Z =CxMZqWdE{]X_xBg[ZkfCte{bh>R?MoUL]{=][=tCHwYRHE{Cx>sLfUz<@r]RKJ>O\_v@pOj qoPoLA]=vjbTCftAXu`gdz`[IZt{=t_tHSbVzfuzMrPznM{MZawaQ\zq{vDathSjhzlJK{SLd[^c zVlETE[vjfw>W]EFm[=tJzCd=ftS_csRT@RM>HA[PrtDyCa\gtD[\ ?jBk^fzB]ZCCyQQQOELKiSiDhACi`ZiqQQLpaGdAS^Sf^ daoRQGZNjHS`W^NjSr[n Cx]x=vwLAbVjhEj>JqFClCxv<{Vqngtauat?u=S{uOk>LD{z ]S_rt<^_FqUaUQPd =ftvXkA_xnAEZ<=ftVi\Dz=\ ]L[tUt`eb@AtUM{iHDLOePA>CQocfcO^Ig[qIQQLrKqQFZrP?ioqIx@EZIQU`_CP[cwaa[xxFEQ={HPhp @@KoI>]WU[^L<`tJ^mZL^ect<>S`YBTLS{h[cpX=Ubi=t[m@h^HKoDAEwV_ipiIHn<OcuztCztdCxzdfUzWlA]]Zgd[H[fwCxCvtETEbG{\N\ojff]@KoDlRrI_ifnfff]Wt>K^W]SJU\czglA]][fuL[iR][uS[QQC?w@JZpLLwYQQQQRBLf\FCrC\>[ffdP[n^LRltwVnhiO\?hLK`>[n`NtlwWQ HqG\F\BhQo_d[f`Fg?inqHiDU=C\Jt>=>FX<>[hh\]{DPZsGQAESZIr_@B\S_O>cyH=wVHnI\F\WqN?Ay@EwXqQ]a`Daj f\E{D>Zr^nh\\GJwNdSpbZroGLcwNBcy>cihfMT [iDPCyavf`aw[lLlS`nRsQOAx_cxBc iqV>SdE=Z]LZrnmukAat`aiqP{lgdLDs\Fx>{eFe?Z=\Bc\>k^Gtfz?KtDItfZ>kfItdc^e tfZfcaFZBetNciGu@GtNk]Oz@?ZNc]gtTc]etvZAGtls_>ZJc^NZHcgEuRc]@ccEtQChOu=K\otHz_K `Pz=otAKeSuUtJZ_c`Rz=BZCc\RZaC`otEK^otI[\]S^u tEk^BZGc\pZ?KfQtec^`ZGC^mvhzPaZ@bZNMuHZWC]HZqK`MK]HzAQtM[`AZOS]RZ@Wu=c`utQC]otU c]`ZCC_mtQK_AZHUtmC_mtaC_MvpzQAZABZPMuXXMMcLAHL