[pstricks] GetCoorinates Modification

Michael Sharpe msharpe at ucsd.edu
Tue Apr 14 22:59:23 CEST 2009


I didn't go over your code in detail, but I noticed that in a number  
of places in the Postscript code, you failed to add \space following a  
TeX command. Omitting the \space will concatenate the command output  
and the following word.

Michael

On Apr 14, 2009, at 10:22 AM, Buddy Ledger wrote:

> Please help me.  I've modified one of the macro examples from the  
> Latex Graphics Companion (See below).  My objective was to specify  
> the relative error in the measurements via passing to the macro  
> rather than from the file.  This is for singular measurements where  
> the equipment error is estimated a priori.  Also I wanted to be able  
> to plot data files in the form (x y1 y2 y3 ... yn) much like the  
> pstricks-add listplot function.
>
> The code actually works for simply formatted data files example:
> 1 2 3 4
> 2 3 4 5
> 3 4 5 6
> 4 5 6 7
>
> Will plot fine with GetCoordinates{\dataA}{relxerr}{relyerr}{plotno} 
> {totalcol}.  However my data files are formatted as such:
> 1.00E+001 2.00E+001 3.00E+001 4.00E+001
> 2.00E+001 3.00E+001 4.00E+001 5.00E+001
> 3.00E+001 4.00E+001 5.00E+001 6.00E+001
> 4.00E+001 5.00E+001 6.00E+001 7.00E+001
>
> Listplot will handle this data file just fine but my macro gives a  
> number error on the character "E".  Now I assume I can do a  
> conversion (text to number) of the number at the GetCoordinates at ii  
> level, but I don't know how.  I am no Tex/Latex/Postscript expert so  
> my code may not be pretty.  An suggestions for improvement would be  
> appreciated.
>
> Thanks,
>
> Buddy Ledger
>
> \documentclass[]{article}
>
>         \usepackage{pst-all}
>         \usepackage{pst-func}
>         \usepackage{pst-eucl}
>         \usepackage{pst-stru}
>         \usepackage{pst-ob3d}
>         \usepackage{pst-3dplot}
>         \usepackage{pst-vue3d}
>         \usepackage{pstricks-add}
>         \usepackage{graphicx}
>         \usepackage{ifthen}
>
> \makeatletter
>
> %\SpecialCoor
> \def\pserrorLine{\pst at object{pserrorLine}}
> \def\pserrorLine at i(#1)#2#3{\begingroup
>  \use at par \pst at getcoor{#1}\pst at tempA
>  \def\ps at xErr{#2}\def\ps at yErr{#3}%
>  \psline{|-|}(! /yDot \pst at tempA exch pop \pst at number\psyunit div def
>       /xDot \pst at tempA pop \pst at number\psxunit div def
>       xDot yDot yDot \ps at yErr\space mul add )
>      (! /yDot \pst at tempA exch pop \pst at number\psyunit div def
>       /xDot \pst at tempA pop \pst at number\psxunit div def
>       xDot yDot yDot \ps at yErr\space mul sub )
>  \psline{|-|}(! /yDot \pst at tempA exch pop \pst at number\psyunit div def
>       /xDot \pst at tempA pop \pst at number\psxunit div def
>       xDot xDot \ps at xErr\space mul add yDot )
>      (! /yDot \pst at tempA exch pop \pst at number\psyunit div def
>       /xDot \pst at tempA pop \pst at number\psxunit div def
>       xDot xDot \ps at xErr\space mul sub yDot )
> \endgroup}
>
> \def\GetCoordinates#1#2#3#4#5{%
> \def\relxerr{#2}
> \def\relyerr{#3}
> \def\numplot{#4}
> \def\numplotmax{#5}
> \newcounter{loopcount}
> \expandafter\GetCoordinates at i#1}
>
> \def\GetCoordinates at i#1{\GetCoordinates at ii#1}
> \def\GetCoordinates at ii D #1 {%
>  \addtocounter{loopcount}{1}
>  \ifthenelse{\value{loopcount}=1}{\def\plotxval{#1}}{%
>  \ifthenelse{\value{loopcount}=\numplot}{\def\plotyval{#1}}{%
>  \ifthenelse{\value{loopcount}=\numplotmax}{%
>  \psdot(\plotxval,\plotyval)
>  \pserrorLine(\plotxval,\plotyval){\relxerr}{\relyerr}%
>  \setcounter{loopcount}{0}}{}}}
>  \@ifnextchar D{\GetCoordinates at ii}{}}
>
> \makeatother
>
> \begin{document}
> \pagestyle{empty}
> \pagenumbering{arabic}
>
> \psset{xAxisLabel=Centerline Velocity[m/s],
>   yAxisLabel=Vibration Amplitude [\%Dia],
>   xAxisLabelPos={c,-0.5in},
>   yAxisLabelPos={-0.5in,c},
>   lly=-0.55in,llx=-0.55in,ury=0.25in,urx=0.15in}
>
> \readdata[ignoreLines=0]{\dataA}{data/doterrorbar.dat}
>
> \begin{figure}
> \centering
> \begin{psgraph}[Dx=5,Dy=5,xsubticks=0,ysubticks=0](0,0)(0,0)(40,40) 
> {5.3in}{5.3in}
>
> \GetCoordinates{\dataA}{0.01}{0.1}{2}{4}
>
> \end{psgraph}
> \caption{Error Bars.}
> \end{figure}
>
> \end{document}
>
>
> _______________________________________________
> PSTricks mailing list
> PSTricks at tug.org
> http://tug.org/mailman/listinfo/pstricks



More information about the PSTricks mailing list