\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{}
% $Id: pst-plot-doc.tex 1056 2019-05-17 07:39:59Z herbert $
\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
headinclude=false,footinclude=false,twoside]{pst-doc}
\listfiles
%\usepackage[utf8]{inputenc}
\usepackage{pst-ode,
pst-node,
pst-calculate,
pst-plot
}
\let\pstFV\fileversion
\let\belowcaptionskip\abovecaptionskip
%
\def\bgImage{%
\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
\psaxes[axesstyle=polar,subticklinestyle=dashed,subticks=2,
labelFontSize=\scriptstyle](3,360)
\psplot[polarplot,algebraic,linecolor=red,linewidth=2pt,
plotpoints=2000]{0}{TwoPi}{6*sin(x)*cos(x)}
\end{pspicture}
}
\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
escapechar=?}
\def\textat{\char064}%
%\usepackage{biblatex}
\addbibresource{pst-plot-doc.bib}
\begin{document}
\title{\texttt{pst-plot}\\plotting data and functions \\\small v.\pstFV}
\docauthor{Herbert Vo\ss}
\author{Timothy Van Zandt\\Herbert Vo\ss}
\date{\today}
\settitle
\begin{abstract}
This version of \LPack{pst-plot} uses the extended keyval handling
of \LPack{pst-xkey} and has a lot of the macros which were recently in
the package \LPack{pstricks-add}. This documentation describes only the
new and changed stuff. For the default behaviour look into the
documentation part of the base \LPack{pstricks} package. You find the
documentation here: \url{
https://mirror.ctan.org/graphics/pstricks/base/doc/}.
\vfill
\noindent
Thanks to:
Guillaume van Baalen;
Stefano Baroni;
Martin Chicoine;
Gerry Coombes;
Ulrich Dirr;
Christophe Fourey;
Hubert Gäßlein;
Jürgen Gilg;
Denis Girou;
Peter Hutnick;
Christophe Jorssen;
Uwe Kern;
Alexander Kornrumpf;
Marcel Krüger;
Manuel Luque;
Patrice Mégret;
Jens-Uwe Morawski;
Tobias Nähring;
Rolf Niepraschk;
Martin Paech;
Alan Ristow;
Christine Römer;
Arnaud Schmittbuhl;
Uwe Siart;
Thomas Söll;
\end{abstract}
\clearpage
\tableofcontents
\clearpage
\part{Basic commands, connections and labels}
\section{Introduction}
The plotting commands described in this part are defined in the very first version
of \LPack{pst-plot.tex} and available for all new and ancient versions.
The \Lcs{psdots}, \Lcs{psline}, \Lcs{pspolygon}, \Lcs{pscurve}, \Lcs{psecurve} and
\Lcs{psccurve} graphics objects let you plot data in a variety of ways. However,
first you have to generate the data and enter it as coordinate pairs \CAny.
The plotting macros in this section give you other ways to get and use the
data. %(Section \ref{S-axes} tells you how to generate axes.)
To parameter
\Lkeyset{plotstyle=style}
determines what kind of plot you get. Valid styles are \Lkeyval{dots}, \Lkeyval{line},
\Lkeyval{polygon}, \Lkeyval{curve}, \Lkeyval{ecurve}, \Lkeyval{ccurve}. E\,,g., if the \Lkeyword{plotstyle} is
\Lkeyval{polygon}, then the macro becomes a variant of the \Lcs{pspolygon} object.
You can use arrows with the plot styles that are open curves, but there is no
optional argument for specifying the arrows. You have to use the \Lkeyword{arrows}
parameter instead.
No\XInfoDanger{~} PostScript error checking is provided for the data arguments. %Read Appendix
%\ref{S-raw} before including PostScript code in the arguments.
There are system-dependent limits on the amount of data \TeX{} and PostScript
can handle. You are much less likely to exceed the PostScript limits when you
use the \Lkeyval{line}, \Lkeyval{polygon} or \Lkeyval{dots} plot style, with \LKeyword{showpoints=false},
\LKeyset{linearc=0pt}, and no arrows.
Note that the lists of data generated or used by the plot commands cannot
contain units. The values of \Lcs{psxunit} and \Lcs{psyunit} are used as the unit.
\section{Plotting data records}
\begin{BDef}
\Lcs{fileplot}\OptArgs\Largb{file}\\
\Lcs{psfileplot}\OptArgs\Largb{file}\\
\Lcs{dataplot}\OptArgs\Largb{\Lcs{\Larga{macro}}}\\
\Lcs{psdataplot}\OptArgs\Largb{\Lcs{\Larga{macro}}}\\
\Lcs{savedata}\Largb{\Lcs{\Larga{macro}}}\Largs{data}\\
\Lcs{readdata}\Largb{\Lcs{\Larga{macro}}}\Largb{file}\\
\Lcs{psreadDataColumn}\OptArgs\Largb{colNo}\Largb{delimiter}\Largb{\Lcs{\Larga{macro}}}\Largb{filename}\\
\Lcs{listplot}\Largb{data}\\
\Lcs{pslistplot}\Largb{data}
\end{BDef}
The macros with a preceeding \verb|ps| are equivalent to those without.
\Lcs{fileplot} is the simplest of the plotting functions to use. You just need a
file that contains a list of coordinates (without units), such as generated by
Mathematica or other mathematical packages. The data can be delimited by curly
braces \verb|{ }|, parentheses \verb|( )|, commas, and/or white space. Bracketing
all the data with square brackets \verb|[ ]| will significantly speed up the rate
at which the data is read, but there are system-dependent limits on how much
data \TeX{} can read like this in one chunk. (The \verb|[| \emph{must} go at the
beginning of a line.) The file should not contain anything else (not even
\Lcs{endinput}), except for comments marked with \verb|%|.
\Lcs{fileplot} only recognizes the \Lkeyval{line}, \Lkeyval{polygon} and \Lkeyval{dots} plot styles, and
it ignores the \Lkeyword{arrows}, \Lkeyword{linearc} and \Lkeyword{showpoints} parameters. The
\Lcs{listplot} command, described below, can also plot data from file, without
these restrictions and with faster \TeX{} processing. However, you are less
likely to exceed PostScript's memory or operand stack limits with \Lcs{fileplot}.
If you find that it takes \TeX{} a long time to process your \Lcs{fileplot}
command, you may want to use the \Lcs{PSTtoEPS} command described on page
\pageref{+PSTtoEPS}. This will also reduce \TeX's memory requirements.
\Lcs{dataplot} is also for plotting lists of data generated by other programs,
but you first have to retrieve the data with one of the following commands:
\Larg{data} or the data in \Larg{file} should conform to the rules described above for
the data in \Lcs{fileplot} (with \Lcs{savedata}, the data must be delimited by
\verb|[ ]|, and with \Lcs{readdata}, bracketing the data with \verb|[ ]| speeds things
up). You can concatenate and reuse lists, as in
\begin{lstlisting}[style=syntax]
\readdata{\foo}{data/foo.data}
\readdata{\bar}{data/bar.data}
\dataplot{\foo\bar}
\dataplot[origin={0,1}]{\bar}
\end{lstlisting}
The \Lcs{readdata} and \Lcs{dataplot} combination is faster than \Lcs{fileplot}
if you reuse the data. \Lcs{fileplot} uses less of \TeX's memory than
\Lcs{readdata} and \Lcs{dataplot} if you are also use \Lcs{PSTtoEPS}.
Here is a plot of $\int\sin(x)\mathrm{d}x$. The data was generated by Mathematica,
with
\begin{lstlisting}
Table[{x,N[SinIntegral[x]]},{x,0,20}]
\end{lstlisting}
and then copied to this document.
\begin{LTXexample}[pos=t]
\pspicture(4,3) \psset{xunit=.2cm,yunit=1.5cm}
\savedata{\mydata}[
{{0, 0}, {1., 0.946083}, {2., 1.60541}, {3., 1.84865}, {4., 1.7582},
{5., 1.54993}, {6., 1.42469}, {7., 1.4546}, {8., 1.57419},
{9., 1.66504}, {10., 1.65835}, {11., 1.57831}, {12., 1.50497},
{13., 1.49936}, {14., 1.55621}, {15., 1.61819}, {16., 1.6313},
{17., 1.59014}, {18., 1.53661}, {19., 1.51863}, {20., 1.54824}}]
\dataplot[plotstyle=curve,showpoints,dotstyle=triangle]{\mydata}
\psline{<->}(0,2)(0,0)(22,0)
\endpspicture
\end{LTXexample}
\Lcs{listplot} is yet another way of plotting lists of data. This time, <list>
should be a list of data (coordinate pairs), delimited only by white space.
\Larg{list} is first expanded by \TeX{} and then by PostScript. This means that
\Larg{list} might be a PostScript program that leaves on the stack a list of data,
but you can also include data that has been retrieved with \Lcs{readdata} and
\Lcs{dataplot}. However, when using the \Lkeyval{line}, \Lkeyval{polygon} or \Lkeyval{dots} plotstyles
with \LKeyset{showpoints=false}, \LKeyset{linearc=0pt} and no arrows, \Lcs{dataplot} is much
less likely than \Lcs{listplot} to exceed PostScript's memory or stack limits.
In the preceding example, these restrictions were not satisfied, and so the
example is equivalent to when \Lcs{listplot} is used:
\begin{lstlisting}[style=syntax]
...
\listplot[plotstyle=curve,showpoints=true,dotstyle=triangle]{\mydata}
...
\end{lstlisting}
\section{Plotting mathematical functions}
\begin{BDef}
\Lcs{psplot}\OptArgs\Largb{$x_!\min@$}\Largb{$x_!\max@$}\Largb{function}\\
\Lcs{parametricplot}\OptArgs\Largb{$t_!\min@$}\Largb{$t_!\max@$}\Largb{x(t) y(t)}\\
\Lcs{parametricplot}\OptArg{algebraic,...}\Largb{$t_!\min@$}\Largb{$t_!\max@$}\Largb{x(t) | y(t)}
\end{BDef}
\Lcs{psplot} can be used to plot a function $f(x)$, if you know a little
PostScript. \Larg{function} should be the PostScript or algebraic code for calculating $f(x)$.
Note that you must use $x$ as the dependent variable.
\begin{lstlisting}
\psplot[plotpoints=200]{0}{720}{x sin}
\end{lstlisting}
plots $\sin(x)$ from 0 to 720 degrees, by calculating $\sin(x)$ roughly every
3.6 degrees and then connecting the points with \Lcs{psline}. Here are plots of
$\sin(x)\cos((x/2)^2)$ and $\sin^2(x)$:
\begin{LTXexample}[pos=t]
\pspicture(0,-1)(4,1)
\psset{xunit=1.2pt}
\psplot[linecolor=gray,linewidth=1.5pt,plotstyle=curve]{0}{90}{x sin dup mul}
\psplot[plotpoints=100]{0}{90}{x sin x 2 div 2 exp cos mul}
\psline{<->}(0,-1)(0,1) \psline{->}(100,0)
\endpspicture
\end{LTXexample}
\Lcs{parametricplot} is for a parametric plot of $(x(t),y(t))$. \Larg{function} is the PostScript
code or algebraic expression for calculating the pair $x(t)$ $y(t)$. For an algebraic expression they must be
devided by a vertical rule.
For example,
\begin{LTXexample}[wide,width=4cm]
\pspicture(3,3)
\parametricplot[plotstyle=dots,plotpoints=13]%
{-6}{6}{1.2 t exp 1.2 t neg exp}
\endpspicture
\end{LTXexample}
plots 13 points from the hyperbola $xy=1$, starting with $(1.2^{-6},1.2^6)$
and ending with $(1.2^6,1.2^{-6})$.
Here is a parametric plot of $(\sin(t),\sin(2t))$:
\begin{LTXexample}[wide,width=4cm]
\pspicture(-2,-1)(2,1)
\psset{xunit=1.7cm}
\parametricplot[linewidth=1.2pt,plotstyle=ccurve]%
{0}{360}{t sin t 2 mul sin}
\psline{<->}(0,-1.2)(0,1.2)
\psline{<->}(-1.2,0)(1.2,0)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[wide,width=6.5cm]
\begin{pspicture}[showgrid,algebraic](-3,-3)(3,3)
\psframe[dimen=m](-3,-3)(3,3)
\pscustom[fillstyle=hlines]{%
\psplot{-3}{3}{-x^2/3}
\psparametricplot{-3}{3}{t^2/3 | t}
\psplot{3}{-3}{x^2/3}
\psparametricplot{3}{-3}{-t^2/3 | t}
}
\end{pspicture}
\end{LTXexample}
The number of points that the \Lcs{psplot} and \Lcs{parametricplot} commands
calculate is set by the
\LKeyset{plotpoints=<value>}
parameter. Using "curve" or its variants instead of "line" and increasing the
value of \Lkeyword{plotpoints} are two ways to get a smoother curve. Both ways
increase the imaging time. Which is better depends on the complexity of the
computation. (Note that all PostScript lines are ultimately rendered as a
series (perhaps short) line segments.) Mathematica generally uses "lineto" to
connect the points in its plots. The default minimum number of plot points for
Mathematica is 25, but unlike \Lcs{psplot} and \Lcs{parametricplot}, Mathematica
increases the sampling frequency on sections of the curve with greater
fluctuation.
\part{New commands}
%--------------------------------------------------------------------------------------
\section[Extended syntax]{Extended syntax for \nxLcs{psplot}, \nxLcs{psparametricplot}, and \nxLcs{psaxes}}
There is now a new optional argument for \Lcs{psplot} and \Lcs{psparametricplot} to pass
additional \PS commands into the code. This makes the use of \Lcs{pstVerb} in
most cases superfluous.
\begin{BDef}
\Lcs{psplot}\OptArgs\Largb{x0}\Largb{x1}\OptArg{PS commands}\Largb{function}\\
\Lcs{psparametricplot}\OptArgs\Largb{t0}\Largb{t1}\OptArg{PS commands}\Largb{x(t) y(t)}\\
\Lcs{psparametricplot}\OptArg{algebraic,...}\Largb{t0}\Largb{t1}\OptArg{PS commands}\Largb{x(t) | y(t)}\\
\Lcs{psaxes}\OptArgs\OptArg*{\Largb{arrows}}\coord0\coord1\coord2\OptArg{Xlabel,Xangle}\OptArg{Ylabel,Yangle}
\end{BDef}
The macro \Lcs{psaxes} has now four optional arguments, one for the setting, one for
the arrows, one for the x-label and one for the y-label. If you
want only a y-label, then leave the x one empty. A missing y-label
is possible. The following examples show how it can be used.
\begin{lstlisting}
\begin{pspicture}(-1,-0.5)(12,5)
\psaxes[Dx=100,dx=1,Dy=0.00075,dy=1]{->}(0,0)(12,5)?\ON?[$x$,-90][$y$,180]?\OFF?
\psplot[linecolor=red, plotstyle=curve,linewidth=2pt,plotpoints=200]{0}{11}%
?\ON?[ /const1 3.3 10 8 neg exp mul def ?\OFF?
?\ON?/s 10 def ?\OFF?
?\ON?/const2 6.04 10 6 neg exp mul def ] % optional PS commands?\OFF?
{ const1 x 100 mul dup mul mul Euler const2 neg x 100 mul dup mul mul exp mul 2000 mul}
\end{pspicture}
\end{lstlisting}
\begin{pspicture}(-1,-0.5)(12,5)
\psaxes[Dx=100,dx=1,Dy=0.00075,dy=1]{->}(0,0)(12,5)[$x$,-90][$y$,180]
\psplot[linecolor=red, plotstyle=curve,linewidth=2pt,plotpoints=200]{0}{11}%
[ /const1 3.3 10 8 neg exp mul def
/s 10 def
/const2 6.04 10 6 neg exp mul def ] % optional PS commands
{ const1 x 100 mul dup mul mul Euler const2 neg x 100 mul dup mul mul exp mul 2000 mul}
\end{pspicture}
%--------------------------------------------------------------------------------------
\clearpage
\section{New Macro \nxLcs{psBoxplot}}
%--------------------------------------------------------------------------------------
A \Index{box-and-whisker plot} (often called simply a \Index{box plot}) is a histogram-like method of
displaying data, invented by John.\,Tukey. The box-and-whisker plot is a box with
ends at the quartiles $Q_1$ and $Q_3$ and has a statistical median M as a horizontal line in
the box. The "`whiskers"* are lines to the farthest points that are not outliers (i.e.,
that are within 3/2 times the interquartile range of $Q_1$ and $Q_3$). Then, for every point
more than 3/2 times the interquartile range from the end of a box, is a dot.
The only special optional arguments, beside all other which are valid for drawing lines
and filling areas, are \Lkeyword{IQLfactor}, \Lkeyword{barwidth}, and
\Lkeyword{arrowlength}, where the latter is a factor
which is multiplied with the barwidth for the line ends.
The \Lkeyword{IQLfactor}, preset to 1.5, defines the area for the outliners.
The outliners are plotted as a dot and take the settings for such a dot into account,
eg. \Lkeyword{dotstyle}, \Lkeyword{dotsize}, \Lkeyword{dotscale}, and \Lkeyword{fillcolor}. The default
is the black dot.
%\begin{LTXexample}[pos=t,preset=\centering]
\begin{pspicture}(-1,-1)(12,14)
\psset{yunit=0.1,fillstyle=solid}
\savedata{\data}[100 90 120 115 120 110 100 110 100 90 100 100 120 120 120]
\rput(1,0){\psBoxplot[fillcolor=red!30]{\data}}
\rput(1,105){2001}
\savedata{\data}[90 120 115 116 115 110 90 130 120 120 120 85 100 130 130]
\rput(3,0){\psBoxplot[arrowlength=0.5,fillcolor=blue!30]{\data}}
\rput(3,107){2008}
\savedata{\data}[35 70 90 60 100 60 60 80 80 60 50 55 90 70 70]
\rput(5,0){\psBoxplot[barwidth=40pt,arrowlength=1.2,fillcolor=red!30]{\data}}
\rput(5,65){2001}
\savedata{\data}[60 65 60 75 75 60 50 90 95 60 65 45 45 60 90]
\rput(7,0){\psBoxplot[barwidth=40pt,fillcolor=blue!30]{\data}}
\rput(7,65){2008}
\savedata{\data}[20 20 25 20 15 20 20 25 30 20 20 20 30 30 30]
\rput(9,0){\psBoxplot[fillcolor=red!30]{\data}}
\rput(9,22){2001}
\savedata{\data}[20 30 20 35 35 20 20 60 50 20 35 15 30 20 40]
\rput(11,0){\psBoxplot[fillcolor=blue!30,linestyle=dashed]{\data}}
\rput(11,25){2008}
\psaxes[dy=1cm,Dy=10](0,0)(12,130)
\end{pspicture}
%\end{LTXexample}
\begin{lstlisting}
\begin{pspicture}(-1,-1)(12,14)
\psset{yunit=0.1,fillstyle=solid}
\savedata{\data}[100 90 120 115 120 110 100 110 100 90 100 100 120 120 120]
\rput(1,0){?\ON?\psBoxplot?\OFF?[fillcolor=red!30]{\data}}
\rput(1,105){2001}
\savedata{\data}[90 120 115 116 115 110 90 130 120 120 120 85 100 130 130]
\rput(3,0){?\ON?\psBoxplot?\OFF?[arrowlength=0.5,fillcolor=blue!30]{\data}}
\rput(3,107){2008}
\savedata{\data}[35 70 90 60 100 60 60 80 80 60 50 55 90 70 70]
\rput(5,0){?\ON?\psBoxplot?\OFF?[barwidth=40pt,arrowlength=1.2,fillcolor=red!30]{\data}}
\rput(5,65){2001}
\savedata{\data}[60 65 60 75 75 60 50 90 95 60 65 45 45 60 90]
\rput(7,0){?\ON?\psBoxplot?\OFF?[barwidth=40pt,fillcolor=blue!30]{\data}}
\rput(7,65){2008}
\savedata{\data}[20 20 25 20 15 20 20 25 30 20 20 20 30 30 30]
\rput(9,0){?\ON?\psBoxplot?\OFF?[fillcolor=red!30]{\data}}
\rput(9,22){2001}
\savedata{\data}[20 30 20 35 35 20 20 60 50 20 35 15 30 20 40]
\rput(11,0){?\ON?\psBoxplot?\OFF?[fillcolor=blue!30,linestyle=dashed]{\data}}
\rput(11,25){2008}
\psaxes[dy=1cm,Dy=10](0,0)(12,130)
\end{pspicture}
\end{lstlisting}
The next example uses an external file for the data, which must first be read by the
macro \Lcs{readdata}. The next one creates a horizontal boxplot by rotating
the output with $-90$ degrees.
%\begin{LTXexample}[pos=t]
\readdata{\data}{data/boxplot.data}
\begin{pspicture}(-1,-1)(2,10)
\psset{yunit=0.25,fillstyle=solid}
\savedata{\data}[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32]
\rput(1,0){\psBoxplot[fillcolor=blue!30]{\data}}
\psaxes[dy=1cm,Dy=4](0,0)(2,35)
\end{pspicture}
%
\begin{pspicture}(-1,-1)(11,2)
\psset{xunit=0.25,fillstyle=solid}
\savedata{\data}[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32]
\rput{-90}(0,1){\psBoxplot[yunit=0.25,fillcolor=blue!30]{\data}}
\psaxes[dx=1cm,Dx=4](0,0)(35,2)
\end{pspicture}
%\end{LTXexample}
\begin{lstlisting}
\readdata{\data}{data/boxplot.data}
\begin{pspicture}(-1,-1)(2,10)
\psset{yunit=0.25,fillstyle=solid}
\savedata{\data}[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32]
\rput(1,0){?\ON?\psBoxplot?\OFF?[fillcolor=blue!30]{\data}}
\psaxes[dy=1cm,Dy=4](0,0)(2,35)
\end{pspicture}
%
\begin{pspicture}(-1,-1)(11,2)
\psset{xunit=0.25,fillstyle=solid}
\savedata{\data}[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32]
\rput{-90}(0,1){\psBoxplot[yunit=0.25,fillcolor=blue!30]{\data}}
\psaxes[dx=1cm,Dx=4](0,0)(35,2)
\end{pspicture}
\end{lstlisting}
It is also possible to read a data column from an external file:
\begin{pspicture}(-1,-1)(5,6)
\psaxes[axesstyle=frame,dy=1cm,Dy=20,ticksize=4pt 0](0,0)(4,5)
\psreadDataColumn{1}{,}{\data}{data/Data.dat}
\rput(1,0){\psBoxplot[fillcolor=red!40,yunit=0.05]{\data}}
\psreadDataColumn{2}{,}{\data}{data/Data.dat}
\rput(3,0){\psBoxplot[fillcolor=blue!40,yunit=0.05]{\data}}
\end{pspicture}
\begin{lstlisting}
\begin{filecontents*}{data/Data.dat}
98, 32
20, 11
79, 26
14, 9
23, 22
21, 10
58, 25
13, 8
19, 5
53, 29
41, 37
11, 2
83, 25
71, 51
10, 7
89, 17
10, 6
, 41
, 75
\end{filecontents*}
\begin{pspicture}(-1,-1)(5,6)
\psaxes[axesstyle=frame,dy=1cm,Dy=20,ticksize=4pt 0](0,0)(4,5)
\psreadDataColumn{1}{,}{\data}{data/Data.dat}
\rput(1,0){\psBoxplot[fillcolor=red!40,yunit=0.05]{\data}}
\psreadDataColumn{2}{,}{\data}{data/Data.dat}
\rput(3,0){\psBoxplot[fillcolor=blue!40,yunit=0.05]{\data}}
\end{pspicture}
\end{lstlisting}
With the optional argument \Lkeyword{postAction} one can modify the $y$ value of the boxplot, e.g. for
an output with a vertical axis in logarithm scaling:
\begin{pspicture}(-1,-3)(6,5)
\psset{fillstyle=solid}
\iffalse
\psaxes[ylogBase=10,Oy=-2,logLines=y,ticksize=0 4pt, subticks=5](1,-2)(9,4)
\rput(3,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=1 gt {Log} if]{
0.09 0.44 0.12 0.06 0.32 0.23 0.44 0.02 0.15 0.18 0 0.29 0 0.11 0.26 0.11
0 0.45 0.04 0.14 0.03 0.12 0.14 0.31 0.06 0.06 0.11 0.12 0.12 0.12 0.13
0.01 0.40 0.01 0.03 0.17 0 0.10 0.15 0.16 0.06 0.10 0.01 0.60 0.26 0.11
0.15 0.22 0.14 0.01 }}
\rput(4,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=1 gt {Log} if]{
0.07 0.49 0.34 0.20 0.02 1.08 6.83 0.31 0.54 0.02 0.29 0.18 0.60 0.09 0.61
1.37 0.26 0.03 2.30 0.09 3.15 0.13 0.29 0.27 1.30 0.73 0.63 0.24 10.03 0
0.26 0.18 3.29 2.43 1.94 0.22 0.23 0.60 1.69 0.35 3.96 0.56 9.90 0.10 0.43
0.22 0.26 0.31 0.29 0.79 }}
\fi
\psaxes[ylogBase=10,Oy=-2,Ox=1,logLines=y,ticksize=0 4pt, subticks=5](1,-2)(6,4)
\rput(2,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=Log]{
12.70 1.34 0.68 0.51 1.77 0.04 3.79 287.05 1.35 5.41 15.56 3.13 0.91 7.48
2.40 1.04 3.53 0.58 31.71 7.89 4.90 2.61 0.89 0.03 3.78 8.11 4.82 1.02 5.57
8.85 0.15 17.59 0.21 8.10 2.15 3.43 6.44 1.65 6.83 23.54 0.52 1.47 0.75
3.54 3.59 5.56 0.33 8.58 1.90 0.78 }}
\rput(3,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=Log]{
55.72 14.91 14.95 6.01 6.53 88.30 281.50 40.15 13.41 0.91 1.65 44.32 13.41
7.33 3.51 3.44 70.40 0.75 58.20 54.88 26.45 33.76 0.70 0.05 0.29 57.12
14.30 31.11 18.56 0.48 21.33 1.15 2.22 3.88 1.78 151.25 7.77 137.92 0.50
3.01 1.99 23.18 119.59 17.50 15.87 13.63 21.85 23.53 68.72 2.90 }}
\rput(4,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=Log]{
1.19 1.94 13.40 7.40 267.30 5.94 11.05 6.51 2.94 5.45 5.24 231 4.48 0.68
311.29 77.47 621.20 139.08 1933.59 2.52 100.96 11.02 153.43 26.67 83.84
4.31 106.34 15.90 1118.59 9.49 131.48 48.92 5.85 3.74 1.05 32.03 5.69
45.10 12.43 238.56 28.75 1.01 119.29 12.09 31.18 16.60 29.67 138.55
17.42 0.83 }}
\rput(5,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=Log]{
2077.45 762.10 469 143.60 685 3600 20.20 249.60 269 0.30 0.20 779.40 1.80
146.80 1.30 32.50 137 2016.40 2.30 33.90 801.60 2.20 646.90 3600 1184 627
500.50 238.30 477.40 3600 17.80 1726.80 2 316.70 174.50 2802.70 335.30
201.20 1.10 247.10 2705.10 156.90 5.10 2342.50 3600 3600 72.70 47.40
301.20 1.60 }}
\end{pspicture}
\begin{lstlisting}
\begin{pspicture}(-1,-3)(6,5)
\psset{fillstyle=solid}
\psaxes[ylogBase=10,Oy=-2,Ox=1,logLines=y,ticksize=0 4pt, subticks=5](1,-2)(6,4)
\rput(2,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=Log]{
12.70 1.34 0.68 0.51 1.77 0.04 3.79 287.05 1.35 5.41 15.56 3.13 0.91 7.48
2.40 1.04 3.53 0.58 31.71 7.89 4.90 2.61 0.89 0.03 3.78 8.11 4.82 1.02 5.57
8.85 0.15 17.59 0.21 8.10 2.15 3.43 6.44 1.65 6.83 23.54 0.52 1.47 0.75
3.54 3.59 5.56 0.33 8.58 1.90 0.78 }}
\rput(3,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=Log]{
55.72 14.91 14.95 6.01 6.53 88.30 281.50 40.15 13.41 0.91 1.65 44.32 13.41
7.33 3.51 3.44 70.40 0.75 58.20 54.88 26.45 33.76 0.70 0.05 0.29 57.12
14.30 31.11 18.56 0.48 21.33 1.15 2.22 3.88 1.78 151.25 7.77 137.92 0.50
3.01 1.99 23.18 119.59 17.50 15.87 13.63 21.85 23.53 68.72 2.90 }}
\rput(4,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=Log]{
1.19 1.94 13.40 7.40 267.30 5.94 11.05 6.51 2.94 5.45 5.24 231 4.48 0.68
311.29 77.47 621.20 139.08 1933.59 2.52 100.96 11.02 153.43 26.67 83.84
4.31 106.34 15.90 1118.59 9.49 131.48 48.92 5.85 3.74 1.05 32.03 5.69
45.10 12.43 238.56 28.75 1.01 119.29 12.09 31.18 16.60 29.67 138.55
17.42 0.83 }}
\rput(5,0){\psBoxplot[fillcolor=red!30,barwidth=0.9cm,postAction=Log]{
2077.45 762.10 469 143.60 685 3600 20.20 249.60 269 0.30 0.20 779.40 1.80
146.80 1.30 32.50 137 2016.40 2.30 33.90 801.60 2.20 646.90 3600 1184 627
500.50 238.30 477.40 3600 17.80 1726.80 2 316.70 174.50 2802.70 335.30
201.20 1.10 247.10 2705.10 156.90 5.10 2342.50 3600 3600 72.70 47.40
301.20 1.60 }}
\end{pspicture}
\end{lstlisting}
It uses the PostScript function \Lps{Log} instead of \Lps{log}. The latter
cannot handle zero values. The next examples shows how a very small intervall
can be handled:
\psset{yunit=0.5cm}
\begin{pspicture}(-2,-1)(2,11)
\savedata{\data}[0.9936 0.9937 0.9934 0.9936 0.9937 0.9938 0.9934 0.9933 0.9930 0.9935]
\psaxes[Oy=0.9930,Dy=0.0005,dy=2cm](0,0)(1,10)
\rput(.5,0){\psBoxplot[barwidth=.5\psxunit,postAction=0.993 sub 1e4 mul]{\data}}
\end{pspicture}
\begin{lstlisting}
\psset{yunit=0.5cm}
\begin{pspicture}(-2,-1)(2,11)
\savedata{\data}[0.9936 0.9937 0.9934 0.9936 0.9937 0.9938 0.9934 0.9933 0.9930 0.9935]
\psaxes[Oy=0.9930,Dy=0.0005,dy=2cm](0,0)(1,10)
\rput(.5,0){\psBoxplot[barwidth=.5\psxunit,postAction=0.993 sub 1e4 mul]{\data}}
\end{pspicture}
\end{lstlisting}
\clearpage
%--------------------------------------------------------------------------------------
\section{The \nxLenv{psgraph} environment}
%--------------------------------------------------------------------------------------
This new environment \Lenv{psgraph} does the scaling, it expects as parameter the values (without units!) for the
coordinate system and the values of the physical width and height (with units!). The syntax is:
\begin{BDef}
\Lcs{psgraph}\OptArgs\Largb{<arrows>}\%\\
\qquad\Largr{xOrig,yOrig}\Largr{xMin,yMin}\Largr{xMax,yMax}\Largb{xLength}\Largb{yLength}\\
\ldots\\
\Lcs{endpsgraph}\\[10pt]
\LBEG{psgraph}\OptArgs\Largb{<arrows>}\%\\
\qquad\Largr{xOrig,yOrig}\Largr{xMin,yMin}\Largr{xMax,yMax}\Largb{xLength}\Largb{yLength}\\
\ldots\\
\LEND{psgraph}
\end{BDef}
where the options are valid \textbf{only} for the the \Lcs{psaxes} macro. The first
two arguments have the usual \verb+PSTricks+ behaviour.
\begin{compactitem}
\item if \verb+(xOrig,yOrig)+ is missing, it is substituted to \verb+(xMin,xMax)+;
\item if \verb+(xOrig,yOrig)+ \textbf{and} \verb+(xMin,yMin)+ are missing, they are both
substituted to \verb+(0,0)+.
\end{compactitem}
The y-length maybe given as !; then the macro uses the same unit
as for the x-axis.
\psset{unit=1cm}
\begin{center}
\readdata{\data}{data/demo1.data}
\pstScalePoints(1,1e-08){}{}% (x,y){additional x operator}{y op}
\psset{llx=-1cm,lly=-1cm}
\begin{psgraph}[axesstyle=frame,xticksize=0 7.59,yticksize=0 25,%
subticks=0,ylabelFactor=\cdot 10^8,
Dx=5,dy=1\psyunit,Dy=1](0,0)(25,7.5){10cm}{6cm} % parameters
\listplot[linecolor=red,linewidth=2pt,showpoints=true]{\data}
\end{psgraph}
\end{center}
\begin{lstlisting}
\readdata{\data}{data/demo1.data}
\pstScalePoints(1,1e-08){}{}% (x,y){additional x operator}{y op}
\psset{llx=-1cm,lly=-1cm}
?\ON?\begin{psgraph}?\OFF?[axesstyle=frame,xticksize=0 7.59,yticksize=0 25,%
subticks=0,ylabelFactor=\cdot 10^8,
Dx=5,dy=1\psyunit,Dy=1](0,0)(25,7.5){10cm}{6cm} % parameters
\listplot[linecolor=red,linewidth=2pt,showpoints=true]{\data}
?\ON?\end{psgraph}?\OFF?
\end{lstlisting}
%-----------------------------------------------------------------------------
In the following example, the y unit gets the same value as the one for the x-axis.
\begin{center}
\psset{llx=-1cm,lly=-0.5cm,ury=0.5cm}
\begin{psgraph}(0,0)(5,3){6cm}{!} % x-y-axis with same unit
\psplot[linecolor=red,linewidth=1pt]{0}{5}{x dup mul 10 div}
\end{psgraph}
\end{center}
\begin{lstlisting}
\psset{llx=-1cm,lly=-0.5cm,ury=0.5cm}
\begin{psgraph}(0,0)(5,3){6cm}?\ON?{!}?\OFF? % x-y-axis with same unit
\psplot[linecolor=red,linewidth=1pt]{0}{5}{x dup mul 10 div}
\end{psgraph}
\end{lstlisting}
%-----------------------------------------------------------------------------
\begin{center}
\readdata{\data}{data/demo1.data}
\psset{xAxisLabel=x-Axis,yAxisLabel=y-Axis,llx=-.5cm,lly=-1cm,lly=-1cm,ury=0.5cm,
xAxisLabelPos={c,-1},yAxisLabelPos={-7,c}}
\pstScalePoints(1,0.00000001){}{}
\begin{psgraph}[axesstyle=frame,xticksize=0 7.5,yticksize=0 25,subticksize=1,
ylabelFactor=\cdot 10^8,Dx=5,Dy=1,xsubticks=2](0,0)(25,7.5){5.5cm}{5cm}
\listplot[linecolor=red, linewidth=2pt, showpoints=true]{\data}
\end{psgraph}
\end{center}
\begin{lstlisting}
\readdata{\data}{data/demo1.data}
\psset{?\ON?xAxisLabel?\OFF?=x-Axis,?\ON?yAxisLabel?\OFF?=y-Axis,llx=-.5cm,lly=-1cm,ury=0.5cm,
?\ON?xAxisLabelPos?\OFF?={c,-1},?\ON?yAxisLabelPos?\OFF?={-7,c}}
\pstScalePoints(1,0.00000001){}{}
\begin{psgraph}[axesstyle=frame,xticksize=0 7.5,yticksize=0 25,subticksize=1,
?\ON?ylabelFactor?\OFF?=\cdot 10^8,Dx=5,Dy=1,xsubticks=2](0,0)(25,7.5){5.5cm}{5cm}
\listplot[linecolor=red, linewidth=2pt, showpoints=true]{\data}
\end{psgraph}
\end{lstlisting}
%-----------------------------------------------------------------------------
\begin{LTXexample}[pos=t,preset=\centering]
\readdata{\data}{data/demo1.data}
\psset{llx=-0.5cm,lly=-1cm}
\pstScalePoints(1,0.000001){}{}
\psgraph[arrows=->,Dx=5,dy=200\psyunit,Dy=200,subticks=5,ticksize=-10pt 0,
tickwidth=0.5pt,subtickwidth=0.1pt](0,0)(25,750){5.5cm}{5cm}
\listplot[linecolor=red,linewidth=0.5pt,showpoints=true,dotscale=3,
plotstyle=LineToYAxis,dotstyle=o]{\data}
\endpsgraph
\end{LTXexample}
%-----------------------------------------------------------------------------
\begin{center}
\readdata{\data}{data/demo1.data}
\pstScalePoints(1,0.2){}{log}
\psset{lly=-0.75cm}
\psgraph[ylogBase=10,Dx=5,Dy=1,subticks=5](0,0)(25,2){12cm}{4cm}
\listplot[linecolor=red,linewidth=1pt,showpoints,dotstyle=x,dotscale=2]{\data}
\endpsgraph
\end{center}
\begin{lstlisting}
\readdata{\data}{data/demo1.data}
\pstScalePoints(1,0.2){}{log}
\psset{lly=-0.75cm}
\psgraph[?\ON?ylogBase?\OFF?=10,Dx=5,Dy=1,subticks=5](0,0)(25,2){12cm}{4cm}
\listplot[linecolor=red,linewidth=1pt,showpoints,dotstyle=x,dotscale=2]{\data}
\endpsgraph
\end{lstlisting}
%-----------------------------------------------------------------------------
\begin{LTXexample}[pos=t,preset=\centering]
\readdata{\data}{data/demo0.data}
\psset{lly=-0.75cm,ury=0.5cm}
\pstScalePoints(1,1){}{log}
\begin{psgraph}[arrows=->,Dx=0.5,ylogBase=10,Oy=-1,xsubticks=10,%
ysubticks=2](0,-3)(3,1){12cm}{4cm}
\psset{Oy=-2}% must be global
\listplot[linecolor=red,linewidth=1pt,showpoints=true,
plotstyle=LineToXAxis]{\data}
\listplot[plotstyle=values,rot=90]{\data}
\end{psgraph}
\end{LTXexample}
\begin{LTXexample}[pos=t,preset=\centering]
\psset{lly=-0.75cm,ury=0.5cm}
\readdata{\data}{data/demo0.data}
\pstScalePoints(1,1){}{log}
\psgraph[arrows=->,Dx=0.5,ylogBase=10,Oy=-1,subticks=4](0,-3)(3,1){6cm}{3cm}
\listplot[linecolor=red,linewidth=2pt,showpoints=true,plotstyle=LineToXAxis]{\data}
\endpsgraph
\end{LTXexample}
%-----------------------------------------------------------------------------
\begin{center}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\pstScalePoints(1,1){1989 sub}{}
\psset{llx=-0.5cm,lly=-1cm, xAxisLabel=Year,yAxisLabel=Whatever,%
xAxisLabelPos={c,-0.4in},yAxisLabelPos={-0.4in,c}}
\psgraph[axesstyle=frame,Dx=2,Ox=1989,subticks=2](0,0)(12,6){4in}{2in}%
\listplot[linecolor=red,linewidth=2pt]{\data}
\listplot[linecolor=blue,linewidth=2pt]{\dataII}
\listplot[linecolor=cyan,linewidth=2pt,yunit=0.5]{\dataII}
\endpsgraph
\end{center}
\begin{lstlisting}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\pstScalePoints(1,1){1989 sub}{}
\psset{llx=-0.5cm,lly=-1cm, ?\ON?xAxisLabel?\OFF?=Year,?\ON?yAxisLabel?\OFF?=Whatever,%
?\ON?xAxisLabelPos?\OFF?={c,-0.4in},?\ON?yAxisLabelPos?\OFF?={-0.4in,c}}
\psgraph[axesstyle=frame,Dx=2,Ox=1989,subticks=2](0,0)(12,6){4in}{2in}%
\listplot[linecolor=red,linewidth=2pt]{\data}
\listplot[linecolor=blue,linewidth=2pt]{\dataII}
\listplot[linecolor=cyan,linewidth=2pt,yunit=0.5]{\dataII}
\endpsgraph
\end{lstlisting}
%-----------------------------------------------------------------------------
%\begin{LTXexample}[pos=t,preset=\centering]
\begin{center}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\psset{llx=-0.5cm,lly=-0.75cm,plotstyle=LineToXAxis}
\pstScalePoints(1,1){1989 sub}{2 sub}
\begin{psgraph}[axesstyle=frame,Dx=2,Ox=1989,Oy=2,subticks=2](0,0)(12,4){6in}{3in}
\listplot[linecolor=red,linewidth=12pt]{\data}
\listplot[linecolor=blue,linewidth=12pt]{\dataII}
\listplot[linecolor=cyan,linewidth=12pt,yunit=0.5]{\dataII}
\end{psgraph}
\end{center}
%\end{LTXexample}
\begin{lstlisting}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\psset{llx=-0.5cm,lly=-0.75cm,plotstyle=LineToXAxis}
\pstScalePoints(1,1){1989 sub}{2 sub}
\begin{psgraph}[axesstyle=frame,Dx=2,Ox=1989,Oy=2,subticks=2](0,0)(12,4){6in}{3in}
\listplot[linecolor=red,linewidth=12pt]{\data}
\listplot[linecolor=blue,linewidth=12pt]{\dataII}
\listplot[linecolor=cyan,linewidth=12pt,yunit=0.5]{\dataII}
\end{psgraph}
\end{lstlisting}
%\newpage
An example with ticks on every side of the frame and filled areas:
\begin{center}
\def\data{0 0 1 4 1.5 1.75 2.25 4 2.75 7 3 9}
\psset{lly=-0.5cm}
\begin{psgraph}[axesstyle=none,ticks=none,labels=none](0,0)(3.0,9.0){12cm}{5cm}
\pscustom[fillstyle=solid,fillcolor=red!40,linestyle=none]{%
\listplot{\data}
\psline(3,9)(3,0)}
\pscustom[fillstyle=solid,fillcolor=blue!40,linestyle=none]{%
\listplot{\data}
\psline(3,9)(0,9)}
\listplot[linewidth=2pt]{\data}
\psaxes[axesstyle=frame,ticksize=0 5pt,xsubticks=20,ysubticks=4,ticks=all,labels=all,
tickstyle=inner,dy=2,Dy=2,tickwidth=1.5pt,subtickcolor=black](0,0)(3,9)
\rput*(2.5,3){level 1}\rput*(1,7){level 2}
\end{psgraph}
\end{center}
\begin{lstlisting}
\def\data{0 0 1 4 1.5 1.75 2.25 4 2.75 7 3 9}
\psset{lly=-0.5cm}
\begin{psgraph}[axesstyle=none,ticks=none,labels=none](0,0)(3.0,9.0){12cm}{5cm}
\pscustom[fillstyle=solid,fillcolor=red!40,linestyle=none]{%
\listplot{\data}
\psline(3,9)(3,0)}
\pscustom[fillstyle=solid,fillcolor=blue!40,linestyle=none]{%
\listplot{\data}
\psline(3,9)(0,9)}
\listplot[linewidth=2pt]{\data}
\psaxes[axesstyle=frame,ticksize=0 5pt,xsubticks=20,ysubticks=4,ticks=all,labels=all,
tickstyle=inner,dy=2,Dy=2,tickwidth=1.5pt,subtickcolor=black](0,0)(3,9)
\rput*(2.5,3){level 1}\rput*(1,7){level 2}
\end{psgraph}
\end{lstlisting}
\clearpage
\subsection{Coordinates of the \nxLenv{psgraph} area}
The coordinates of the calculated area are saved in the four macros \Lcs{psgraphLLx}, \Lcs{psgraphLLy}, \Lcs{psgraphURx}, and \Lcs{psgraphURy},
which is LowerLeft, UpperLeft, LowerRight, and UpperRight. The values have no dimension but are saved in the current unit.
\begin{LTXexample}[width=4cm]
\psset{llx=-5mm,lly=-1cm}
\begin{psgraph}[axesstyle=none,ticks=none](0,0)(3.0,9.0){4cm}{5cm}
\psdot[dotscale=2](\psgraphLLx,\psgraphLLy)
\psdot[dotscale=2](\psgraphLLx,\psgraphURy)
\psdot[dotscale=2](\psgraphURx,\psgraphLLy)
\psdot[dotscale=2](\psgraphURx,\psgraphURy)
\end{psgraph}
\end{LTXexample}
%-------------------------------------------------------------------------------------------
\subsection{The new options for \nxLenv{psgraph}}\label{psgraphoptions}
%-------------------------------------------------------------------------------------------
\begin{center}
\begin{tabular}{@{} l>{\ttfamily}ll @{}}
\textrm{name} & \textrm{default} & meaning\\\hline
\Lkeyword{xAxisLabel} & x & label for the x-axis\\
\Lkeyword{yAxisLabel} & y & label for the y-axis\\
\Lkeyword{xAxisLabelPos} & \{\} & where to put the x-label\\
\Lkeyword{yAxisLabelPos} & \{\} & where to put the y-label\\
\Lkeyword{xlabelsep} & 5pt & labelsep for the x-axis labels\\
\Lkeyword{ylabelsep} & 5pt & labelsep for the x-axis labels\\
\Lkeyword{llx} & 0pt & trim for the lower left x\\
\Lkeyword{lly} & 0pt & trim for the lower left y\\
\Lkeyword{urx} & 0pt & trim for the upper right x\\
\Lkeyword{ury} & 0pt & trim for the upper right y\\
\Lkeyword{axespos} & bottom & draw axes first (bottom or last (top)
\end{tabular}
\end{center}
There is one restriction in using the trim parameters, they must
been set \textbf{before} \Lcs{psgraph} is called. They are
redundant when used as parameters of \Lcs{psgraph} itself. The
\Lkeyword{xAxisLabelPos} and \Lkeyword{yAxisLabelPos} options can use the letter \Lnotation{c} for
centering an $x$-axis or $y$-axis label. The \Lnotation{c} is a replacement for
the $x$ or $y$ value. When using values with units, the position is
always measured from the origin of the coordinate system, which
can be outside of the visible \Lenv{pspicture} environment.
\medskip
\begin{center}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\psset{llx=-1cm,lly=-1.25cm,urx=0.5cm,ury=0.1in,xAxisLabel=Year,%
yAxisLabel=Whatever,xAxisLabelPos={c,-0.4in},%
yAxisLabelPos={-0.4in,c}}
\pstScalePoints(1,1){1989 sub}{}
\psframebox[linestyle=dashed,boxsep=false]{%
\begin{psgraph}[axesstyle=frame,Ox=1989,subticks=2](0,0)(12,6){0.8\linewidth}{2.5in}%
\listplot[linecolor=red,linewidth=2pt]{\data}%
\listplot[linecolor=blue,linewidth=2pt]{\dataII}%
\listplot[linecolor=cyan,linewidth=2pt,yunit=0.5]{\dataII}%
\end{psgraph}%
}
\end{center}
\begin{lstlisting}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\psset{llx=-1cm,lly=-1.25cm,urx=0.5cm,ury=0.1in,xAxisLabel=Year,%
yAxisLabel=Whatever,xAxisLabelPos={c,-0.4in},%
yAxisLabelPos={-0.4in,c}}
\pstScalePoints(1,1){1989 sub}{}
\psframebox[linestyle=dashed,boxsep=false]{%
\begin{psgraph}[axesstyle=frame,Ox=1989,subticks=2](0,0)(12,6){0.8\linewidth}{2.5in}%
\listplot[linecolor=red,linewidth=2pt]{\data}%
\listplot[linecolor=blue,linewidth=2pt]{\dataII}%
\listplot[linecolor=cyan,linewidth=2pt,yunit=0.5]{\dataII}%
\end{psgraph}%
}
\end{lstlisting}
\subsection{The new macro \Lcs{pslegend} for \nxLenv{psgraph}}\label{pslegend}
\begin{BDef}
\Lcs{pslegend}\OptArg{Reference}\OptArg*{\Largr{xOffset,yOffset}}\Largb{Text}
\end{BDef}
The reference can be one of the \Lkeyval{lb}, \Lkeyval{lt}, \Lkeyval{rb}, or \Lkeyval{rt}, where the
latter is the default. The values for \texttt{xOffset} and \texttt{yOffset} must be multiples of the unit pt.
Without an offset the value of \Lcs{pslabelsep} are used.
The legend has to be defined \emph{before} the environment \Lenv{psgraph}.
\medskip
\begin{center}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\psset{llx=-1cm,lly=-1.25cm,urx=0.5cm,ury=0.1in,xAxisLabel=Year,%
yAxisLabel=Whatever,xAxisLabelPos={c,-0.4in},%
yAxisLabelPos={-0.4in,c}}
\pstScalePoints(1,1){1989 sub}{}
\pslegend[lt]{\red\rule[1ex]{2em}{1pt} & Data I\\
\blue\rule[1ex]{2em}{1pt} & Data II\\
\cyan\rule[1ex]{2em}{1pt} & Data III}
\begin{psgraph}[axesstyle=frame,Ox=1989,subticks=2](0,0)(12,6){0.8\linewidth}{2.5in}%
\listplot[linecolor=red,linewidth=2pt]{\data}%
\listplot[linecolor=blue,linewidth=2pt]{\dataII}%
\listplot[linecolor=cyan,linewidth=2pt,yunit=0.5]{\dataII}%
\end{psgraph}%
\end{center}
\begin{lstlisting}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\psset{llx=-1cm,lly=-1.25cm,urx=0.5cm,ury=0.1in,xAxisLabel=Year,%
yAxisLabel=Whatever,xAxisLabelPos={c,-0.4in},%
yAxisLabelPos={-0.4in,c}}
\pstScalePoints(1,1){1989 sub}{}
\pslegend[lt]{\red\rule[1ex]{2em}{1pt} & Data I\\
\blue\rule[1ex]{2em}{1pt} & Data II\\
\cyan\rule[1ex]{2em}{1pt} & Data III}
\begin{psgraph}[axesstyle=frame,Ox=1989,subticks=2](0,0)(12,6){0.8\linewidth}{2.5in}%
\listplot[linecolor=red,linewidth=2pt]{\data}%
\listplot[linecolor=blue,linewidth=2pt]{\dataII}%
\listplot[linecolor=cyan,linewidth=2pt,yunit=0.5]{\dataII}%
\end{psgraph}%
\end{lstlisting}
\begin{compactitem}
\item \Lcs{pslegend} uses the commands \Lcs{tabular} and \Lcs{endtabular}, which are only available
when running \LaTeX. With \TeX\ you have to redefine the macro \nxLcs{pslegend@ii}:
\begin{lstlisting}
\def\pslegend@ii[#1](#2){\rput[#1](!#2){\psframebox[style=legendstyle]{%
\footnotesize\tabcolsep=2pt%
\tabular[t]{@{}ll@{}}\pslegend@text\endtabular}}\gdef\pslegend@text{}}
\end{lstlisting}
\item The fontsize can be changed locally for each cell or globally, when also redefining the
macro \nxLcs{pslegend@ii}.
\item If you want to use more than two columns for the table or a shadow box, then redefine \nxLcs{pslegend@ii}.
\end{compactitem}
The macro \Lcs{psframebox} uses the style \Lkeyval{legendstyle} which is preset to \Lkeyset{fillstyle=solid},
\Lkeyset{fillcolor=white}, and \nxLkeyword{linewidth=0.5pt} and can be redefined by
\begin{lstlisting}
\newpsstyle{legendstyle}{fillstyle=solid,fillcolor=red!20,shadow=true}
\end{lstlisting}
\medskip
\begin{center}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\psset{llx=-1cm,lly=-1.25cm,urx=0.5cm,ury=0.1in,xAxisLabel=Year,%
yAxisLabel=Whatever,xAxisLabelPos={c,-0.4in},%
yAxisLabelPos={-0.4in,c}}
\newpsstyle{legendstyle}{fillstyle=solid,fillcolor=red!20,shadow=true}
\pstScalePoints(1,1){1989 sub}{}
\pslegend[lt](10,10){\red\rule[1ex]{2em}{1pt} & Data I\\
\blue\rule[1ex]{2em}{1pt} & Data II\\
\cyan\rule[1ex]{2em}{1pt} & Data III}
\begin{psgraph}[axesstyle=frame,Ox=1989,subticks=2](0,0)(12,6){0.8\linewidth}{2.5in}%
\listplot[linecolor=red,linewidth=2pt]{\data}%
\listplot[linecolor=blue,linewidth=2pt]{\dataII}%
\listplot[linecolor=cyan,linewidth=2pt,yunit=0.5]{\dataII}%
\end{psgraph}%
\end{center}
\begin{lstlisting}
\readdata{\data}{data/demo2.data}%
\readdata{\dataII}{data/demo3.data}%
\psset{llx=-1cm,lly=-1.25cm,urx=0.5cm,ury=0.1in,xAxisLabel=Year,%
yAxisLabel=Whatever,xAxisLabelPos={c,-0.4in},%
yAxisLabelPos={-0.4in,c}}
\pstScalePoints(1,1){1989 sub}{}
\newpsstyle{legendstyle}{fillstyle=solid,fillcolor=red!20,shadow=true}
\pslegend[lt](10,10){\red\rule[1ex]{2em}{1pt} & Data I\\
\blue\rule[1ex]{2em}{1pt} & Data II\\
\cyan\rule[1ex]{2em}{1pt} & Data III}
\begin{psgraph}[axesstyle=frame,Ox=1989,subticks=2](0,0)(12,6){0.8\linewidth}{2.5in}%
\listplot[linecolor=red,linewidth=2pt]{\data}%
\listplot[linecolor=blue,linewidth=2pt]{\dataII}%
\listplot[linecolor=cyan,linewidth=2pt,yunit=0.5]{\dataII}%
\end{psgraph}%
\end{lstlisting}
\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\nxLcs{psxTick} and \nxLcs{psyTick}}
Single ticks with labels on an axis can be set with the two
macros \Lcs{psxTick} and \Lcs{psyTick}. The label is set with the macro \Lcs{pshlabel},
the setting of \Lkeyword{mathLabel} is taken into account.
\begin{BDef}
\Lcs{psxTick}\OptArgs\OptArg*{\Largb{rotation}}\Largr{x value}\Largb{label}\\
\Lcs{psyTick}\OptArgs\OptArg*{\Largb{rotation}}\Largr{y value}\Largb{label}
\end{BDef}
\begin{LTXexample}[width=.4\linewidth]
\begin{psgraph}[Dx=2,Dy=2,showorigin=false]%
(0,0)(-4,-2.2)(4,2.2){.5\textwidth}{!}
\psxTick[linecolor=red,labelsep=-20pt]{45}(1.25){x_0}
\psyTick[linecolor=blue](1){y_0}
\end{psgraph}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\section{\nxLcs{pstScalePoints}}
%--------------------------------------------------------------------------------------
The syntax is
\begin{BDef}
\Lcs{pstScalePoints}\Largr{xScale,xScale}\Largb{xPS}\Largb{yPS}
\end{BDef}
\verb+xScale,yScale+ are decimal values used as scaling factors,
the \verb+xPS+ and \verb+yPS+ are additional PostScript code
applied to the x- and y-values of the data records. This macro is
only valid for the \Lcs{listplot} macro!
\begin{LTXexample}[width=7cm]
\def\data{%
0 0 1 3 2 4 3 1
4 2 5 3 6 6 }
\begin{pspicture}(-0.5,-1)(6,6)
\psaxes{->}(0,0)(6,6)
\listplot[showpoints=true,%
linecolor=red]{\data}
\pstScalePoints(1,0.5){}{3 add}
\listplot[showpoints=true,%
linecolor=blue]{\data}
\end{pspicture}
\end{LTXexample}
\bigskip
\Lcs{pstScalePoints}\Largr{1,0.5}\Largb{}\Largb{3 add} means that \textbf{first} the value $3$ is added
to the $y$ values and \textbf{second} this value is scaled with the factor $0.5$.
As seen for the blue line for $x=0$ we get $y(0)=(0+3)\cdot 0.5=1.5$.
Changes with \Lcs{pstScalePoints} are always global to all following \Lcs{listplot}
macros. This is the reason why it is a good idea to reset the values at the end of the
\Lenv{pspicture} environment.
%--------------------------------------------------------------------------------------
\section{New or extended options}
%--------------------------------------------------------------------------------------
\subsection{Introduction}
The option \Lkeyset{tickstyle=full}|\Lkeyval{top}|\Lkeyval{bottom} no longer works in the
usual way. Only the additional value \Lkeyval{inner} is valid for
\LPack{pst-plot}, because everything can be set by the
\Lkeyword{ticksize} option. When using the \Lkeyword{comma} or
\Lkeyword{trigLabels} option, the macros \Lcs{pshlabel} and
\Lcs{psvlabel} shouldn't be redefined, because the package does
it itself internally in these cases. However, if you need a
redefinition, then do it for \nxLcs{pst@@@hlabel} and
\nxLcs{pst@@@vlabel} with
\begin{lstlisting}[style=syntax]
\makeatletter
\def\pst@@@hlabel#1{...}
\def\pst@@@vlabel#1{...}
\makeatother
\end{lstlisting}
{\rowcolors{1}{blue!10}{red!5}
\begin{longtable}{ llll }
\caption{All new parameters for \texttt{pst-plot}}\\\toprule
\rowcolor{white}\emph{name} & \emph{type} & \emph{default} & \emph{page}\\\midrule
\endfirsthead
\multicolumn{4}{l}{\ldots\ continued}\\\midrule
\rowcolor{white}\emph{name} & \emph{type} & \emph{default} & \emph{page}\\\midrule
\endhead
\midrule
\multicolumn{4}{r}{continued \ldots}\\
\endfoot
\bottomrule
\endlastfoot
\Lkeyword{axesstyle} & \Lkeyval{none}|\Lkeyval{axes}|\Lkeyval{frame}|\Lkeyval{polar}|\Lkeyval{inner}
& \Lkeyval{axes} &\pageref{axesstyle}\\
\Lkeyword{barwidth} & length & 0.25cm & \pageref{barwidth}\\ %ok
\Lkeyword{ChangeOrder} & boolean & \false & \pageref{changeorder}\\
\Lkeyword{comma} & boolean & \false & \pageref{comma}\\ %ok
\Lkeyword{decimals} & integer & -1\footnote{A negative value plots all decimals}
& \pageref{values}\\
\Lkeyword{decimalSeparator} & char & . & \pageref{comma}\\ %ok
\Lkeyword{fontscale} & real & 10 & \pageref{values}\\
\Lkeyword{fractionLabelBase} & integer & 0 & \pageref{fraclabels}\\
\Lkeyword{fractionLabels} & boolean & \false & \pageref{fraclabels}\\
\Lkeyword{ignoreLines} & integer & 0 & \pageref{ignorelines}\\
\Lkeyword{labelFontSize} & macro & \{\} & \pageref{labelfontsize}\\
\Lkeyword{labels} & \Lkeyval{all}|\Lkeyval{x}|\Lkeyval{y}|\Lkeyval{none}
& \Lkeyval{all} & \pageref{labels}\\%ok
\Lkeyword{llx} & length & 0pt & \pageref{psgraphoptions}\\
\Lkeyword{lly} & length & 0pt & \pageref{psgraphoptions}\\
\Lkeyword{logLines} & \Lkeyval{none}|\Lkeyval{x}|\Lkeyval{y}|\Lkeyval{all}
& \Lkeyval{none} & \pageref{loglines}\\
\Lkeyword{mathLabel} & boolean & \false & \pageref{labelfontsize}\\
\Lkeyword{nEnd} & integer or empty & \{\} & \pageref{nxend}\\
\Lkeyword{nStart} & integer & 0 & \pageref{nxstart}\\
\Lkeyword{nStep} & integer & 1 & \pageref{nxstep}\\
\Lkeyword{plotNo} & integer & 1 & \pageref{plotno}\\
\Lkeyword{plotNoMax} & integer & 1 & \pageref{plotno}\\
\Lkeyword{plotstyle} & style & \Lkeyval{line} & \pageref{plotstyle}\\
\Lkeyword{polarplot} & boolean & \false & \pageref{polarplots}\\
\Lkeyword{PSfont} & PS font & \Lkeyval{Times-Romasn} & \pageref{values}\\
\Lkeyword{psgrid} & boolean & \false & \pageref{psgrid}\\
\Lkeyword{quadrant} & integer & 4 & \pageref{quadrant}\\
\Lkeyword{subtickcolor} & color & \Lkeyval{darkgray} & \pageref{tickcolor}\\
\Lkeyword{subticklinestyle} & \Lkeyval{solid}|\Lkeyval{dashed}|\Lkeyval{dotted}|\Lkeyval{none}
& \Lkeyval{solid}&\pageref{ticklinestyle}\\
\Lkeyword{subticks} & integer & 0 & \pageref{subticks}\\
\Lkeyword{subticksize} & real & 0.75 & \pageref{subticksize}\\
\Lkeyword{subtickwidth} & length & 0.5\Lcs{pslinewidth} & \pageref{tickwidth}\\
\Lkeyword{tickcolor} & color & black & \pageref{tickcolor}\\
\Lkeyword{ticklinestyle} & \Lkeyval{solid}|\Lkeyval{dashed}|\Lkeyval{dotted}|\Lkeyval{none}
& \Lkeyval{solid}&\pageref{ticklinestyle}\\
\Lkeyword{ticks} & \Lkeyval{all}|\Lkeyval{x}|\Lkeyval{y}|\Lkeyval{none}
& \Lkeyval{all} & \pageref{ticks}\\%ok
\Lkeyword{ticksize} & length \OptArg{length} & -4pt 4pt & \pageref{ticksize}\\
\Lkeyword{tickstyle} & \Lkeyval{full}|\Lkeyval{top}|\Lkeyval{bottom}|\Lkeyval{inner} & full & \pageref{tickstyle}\\%ok
\Lkeyword{tickwidth} & length & 0.5\Lcs{pslinewidth} & \pageref{tickwidth}\\
\Lkeyword{trigLabelBase} & integer & 0 & \pageref{triglabels}\\
\Lkeyword{trigLabels} & boolean & \false & \pageref{triglabels}\\
\Lkeyword{urx} & length & 0pt & \pageref{psgraphoptions}\\
\Lkeyword{ury} & length & 0pt & \pageref{psgraphoptions}\\
\Lkeyword{valuewidth} & integer & 10 & \pageref{values}\\
\Lkeyword{xAxis} & boolean & \true & \pageref{xyAxes}\\%ok
\Lkeyword{xAxisLabel} & literal & \{\nxLcs{@empty}\} & \pageref{psgraphoptions}\\
\Lkeyword{xAxisLabelPos} & (x,y) or empty & \{\nxLcs{@empty}\} & \pageref{psgraphoptions}\\
\Lkeyword{xDecimals} & integer or empty & \{\} & \pageref{xydecimals}\\%ok
\Lkeyword{xEnd} & integer or empty & \{\} & \pageref{nxend}\\
\Lkeyword{xLabels} & list & \{\nxLcs{empty}\} & \pageref{xLabels}\\
\Lkeyword{xlabelFactor} & anything & \{\nxLcs{@empty}\} & \pageref{labelfactor}\\
\Lkeyword{xlabelFontSize} & macro & \{\} & \pageref{labelfontsize}\\
\Lkeyword{xlabelOffset} & length & 0 & \pageref{labelOffset}\\
\Lkeyword{xlabelPos} & \Lkeyval{bottom},\Lkeyval{axis},\Lkeyval{top}
& \Lkeyval{bottom} & \pageref{labelpos}\\
\Lkeyword{xLabelsRot} & angle & 0 & \pageref{xLabels}\\
\Lkeyword{xlogBase} & integer or empty & \{\} & \pageref{xlogbase}\\
\Lkeyword{xmathLabel} & boolean & \false & \pageref{labelfontsize}\\
\Lkeyword{xticklinestyle} & \Lkeyval{solid}|\Lkeyval{dashed}|\Lkeyval{dotted}|\Lkeyval{none}
& \Lkeyval{solid} & \pageref{ticklinestyle}\\
\Lkeyword{xStart} & integer or empty & \{\} & \pageref{nxstart}\\
\Lkeyword{xStep} & integer & 0 & \pageref{nxstep}\\
\Lkeyword{xsubtickcolor} & color & \Lkeyval{darkgray} & \pageref{tickcolor}\\
\Lkeyword{xsubticklinestyle}& \Lkeyval{solid}|\Lkeyval{dashed}|\Lkeyval{dotted}|\Lkeyval{none}
& \Lkeyval{solid} & \pageref{ticklinestyle}\\
\Lkeyword{xsubticks} & integer & 0 & \pageref{subticks}\\
\Lkeyword{xsubticksize} & real & 0.75 & \pageref{subticksize}\\
\Lkeyword{xtickcolor} & color & \Lkeyval{black} & \pageref{tickcolor}\\
\Lkeyword{xticksize} & length \OptArg{length} & -4pt 4pt & \pageref{ticksize}\\
\Lkeyword{xtrigLabels} & boolean & \false & \pageref{xtriglabels}\\
\Lkeyword{xtrigLabelBase} & integer & 0 & \pageref{triglabels}\\
\Lkeyword{xyAxes} & boolean & \true & \pageref{xyAxes}\\%ok
\Lkeyword{xyDecimals} & integer or empty & \{\} & \pageref{xydecimals}\\%ok
\Lkeyword{xylogBase} & integer or empty & \{\} & \pageref{xylogbase}\\
\Lkeyword{yAxis} & boolean & \true & \pageref{xyAxes}\\%ok
\Lkeyword{yAxisLabel} & literal & \{\nxLcs{@empty}\} & \pageref{psgraphoptions}\\
\Lkeyword{yAxisLabelPos} & (x,y) or empty & \{\nxLcs{@empty}\} & \pageref{psgraphoptions}\\
\Lkeyword{yDecimals} & integer or empty & \{\} & \pageref{xydecimals}\\%ok
\Lkeyword{yEnd} & integer or empty & \{\} & \pageref{ystartend}\\
\Lkeyword{yLabels} & list & \{\nxLcs{empty}\} & \pageref{xLabels}\\
\Lkeyword{ylabelFactor} & literal & \{nx\Lcs{empty}\} & \pageref{labelfactor}\\
\Lkeyword{ylabelFontSize} & macro & \{\} & \pageref{labelfontsize}\\
\Lkeyword{ylabelOffset} & length & 0 & \pageref{labelOffset}\\
\Lkeyword{ylabelPos} & \Lkeyval{left}|\Lkeyval{axis}|\Lkeyval{right}
& \Lkeyval{left} & \pageref{labelpos}\\
\Lkeyword{xLabelsRot} & angle & 0 & \pageref{xLabels}\\
\Lkeyword{ylogBase} & integer or empty & \{\} & \pageref{ylogbase}\\
\Lkeyword{ymathLabel} & boolean & \false & \pageref{labelfontsize}\\
\Lkeyword{yMaxValue} & real & 1.e30 & \pageref{yMaxValue}\\
\Lkeyword{yMinValue} & real & -1.e30 & \pageref{yMaxValue}\\
\Lkeyword{yStart} & integer or empty & \{\} & \pageref{ystartend}\\
\Lkeyword{yStep} & integer & 0 & \pageref{nxstep}\\
\Lkeyword{ysubtickcolor} & <color> & darkgray & \pageref{tickcolor}\\
\Lkeyword{ysubticklinestyle}& \Lkeyval{solid}|\Lkeyval{dashed}|\Lkeyval{dotted}|\Lkeyval{none}
& \Lkeyval{solid} &\pageref{ticklinestyle}\\
\Lkeyword{ysubticks} & integer & 0 & \pageref{subticks}\\
\Lkeyword{ysubticksize} & real & 0.75 & \pageref{subticksize}\\
\Lkeyword{ytickcolor} & color> & \Lkeyval{black} & \pageref{tickcolor}\\
\Lkeyword{yticklinestyle} & \Lkeyval{solid}|\Lkeyval{dashed}|\Lkeyval{dotted}|\Lkeyval{none}
& \Lkeyval{solid} &\pageref{ticklinestyle}\\
\Lkeyword{yticksize} & length \OptArg{length} & -4pt 4pt & \pageref{ticksize}\\
\Lkeyword{ytrigLabels} & boolean & \false & \pageref{ytriglabels}\\
\Lkeyword{ytrigLabelBase} & integer & 0 & \pageref{triglabels}\\
\end{longtable}
}
\clearpage
%-------------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{plotstyle} (Christoph Bersch)}\label{plotstyle}
%-------------------------------------------------------------------------------------------
\xLkeyword{plotstyle}\xLkeyval{cspline}
There is a new value \Lkeyval{cspline} for the plotstyle to interpolate a curve with cubic splines.
%
\begin{LTXexample}[pos=b]
\readdata{\foo}{data/data1.dat}
\begin{psgraph}[axesstyle=frame,ticksize=6pt,subticks=5,ury=1cm,
Ox=250,Dx=10,Oy=-2,](250,-2)(310,0.2){0.8\linewidth}{0.3\linewidth}
\listplot[plotstyle=cspline,linecolor=red,linewidth=0.5pt,showpoints]{\foo}
\end{psgraph}
\end{LTXexample}
\vspace{1cm}
%-------------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{xLabels}, \nxLkeyword{yLabels},
\nxLkeyword{xLabelsrot}, and \nxLkeyword{yLabelsrot}}\label{xLabels}
%-------------------------------------------------------------------------------------------
\xLkeyword{xLabels}\xLkeyword{yLabels}\xLkeyword{xLabelsRot}\xLkeyword{yLabelsRot}
\begin{LTXexample}[pos=b]
\psset{xunit=0.75}
\begin{pspicture}(-2,-2)(14,4)
\psaxes[xLabels={,Kerry,Laois,London,Waterford,Clare,Offaly,Galway,Wexford,%
Dublin,Limerick,Tipperary,Cork,Kilkenny},xLabelsRot=45,
yLabels={,low,medium,high},mathLabel=false](14,4)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[pos=b]
\begin{pspicture}(-0.5,-1.5)(1.5,1.5)
\psaxes[showorigin=false,yLabels={a,b,c}](0,0)(0,-1)(1,1)
\end{pspicture}
\begin{pspicture}(-0.5,-0.5)(1.5,2.5)
\psaxes[showorigin=false,yLabels={a,b,c}](1,2)
\end{pspicture}
\begin{pspicture}(-0.5,-2.5)(1.5,.5)
\psaxes[showorigin=false,yLabels={a,b,c}](0,0)(0,-2)(1,0)
\end{pspicture}
\begin{pspicture}(-1.5,-1.5)(1.5,1.5)
\psaxes[showorigin=false,xLabels={a,b,c}](0,0)(-1,-1)(1,1)
\end{pspicture}
\begin{pspicture}(-0.5,-0.5)(1.5,2.5)
\psaxes[showorigin=false,xLabels={a,b,c}](2,2)
\end{pspicture}
\begin{pspicture}(-2.5,-2.5)(1.5,.5)
\psaxes[showorigin=false,xLabels={a,b,c}](0,0)(-2,-2)(0,0)
\end{pspicture}
\end{LTXexample}
The values for \Lkeyword{xlabelsep} and \Lkeyword{ylabelsep} are taken into account.
\subsection{Option \nxLkeyword{xLabelOffset} and \nxLkeyword{ylabelOffset}}\label{labelOffset}
\begin{LTXexample}[width=7cm]
\psset{xAxisLabel=,yAxisLabel=,
llx=-5mm,urx=1cm,lly=-5mm,
mathLabel=false,xlabelsep=-5pt,
xLabels={A,b,C,d,E,f}}
\begin{psgraph}{->}(5,2){6cm}{2cm}
\end{psgraph}
\end{LTXexample}
\xLkeyword{xlabelOffset}\xLkeyword{xLabels}\xLkeyword{xlabelsep}\xLkeyword{mathLabel}
\begin{LTXexample}[width=7cm]
\psset{xAxisLabel=,yAxisLabel=,
llx=-5mm,urx=1cm,lly=-5mm,
mathLabel=false,xlabelsep=-5pt,
xLabels={,A,b,C,d,E},
xlabelOffset=-0.5,
ylabelOffset=0.5}
\begin{psgraph}{->}(5,2){6cm}{2cm}
\end{psgraph}
\end{LTXexample}
%------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{yMaxValue} and \nxLkeyword{yMinValue}}\label{yMaxValue}
%------------------------------------------------------------------------------------
With the new optional arguments \Lkeyword{yMaxValue} and
\Lkeyword{yMinValue} one can control the behaviour of
discontinuous functions, like the tangent function. The
code does not check that \Lkeyword{yMaxValue} is bigger than
\Lkeyword{yMinValue} (if not, the function is {\em not} plotted at all).
All four possibilities can be used, i.e. one, both or none of the
two arguments \Lkeyword{yMaxValue} and \Lkeyword{yMinValue} can
be set.
\begin{lstlisting}
\begin{pspicture}(-6.5,-6)(6.5,7.5)
\multido{\rA=-4.71239+\psPiH}{7}{%
\psline[linecolor=black!20,linestyle=dashed](\rA,-5.5)(\rA,6.5)}
\psset{algebraic,plotpoints=10000,plotstyle=line}
\psaxes[trigLabelBase=2,dx=\psPiH,xunit=\psPi,trigLabels]
{->}(0,0)(-1.7,-5.5)(1.77,6.5)[$x$,0][$y$,-90]
\psclip{\psframe[linestyle=none](-4.55,-5.5)(5.55,6.5)}
\psplot[?\ON?yMaxValue=6,yMinValue=-5?\OFF?,linewidth=2pt,linecolor=red]{-4.55}{4.55}{(x)/(sin(2*x))}
\endpsclip
\psplot[linestyle=dashed,linecolor=blue!30]{-4.8}{4.8}{x}
\psplot[linestyle=dashed,linecolor=blue!30]{-4.8}{4.8}{-x}
\rput(0,0.5){$\times$}
\end{pspicture}
\end{lstlisting}
\begingroup
\begin{pspicture}(-6.5,-6)(6.5,7.5)
\multido{\rA=-4.71239+\psPiH}{7}{%
\psline[linecolor=black!20,linestyle=dashed](\rA,-5.5)(\rA,6.5)}
\psset{algebraic,plotpoints=10000,plotstyle=line}
\psaxes[trigLabelBase=2,dx=\psPiH,xunit=\psPi,trigLabels]
{->}(0,0)(-1.7,-5.5)(1.77,6.5)[$x$,0][$y$,-90]
\psclip{\psframe[linestyle=none](-4.55,-5.5)(5.55,6.5)}
\psplot[yMaxValue=6,yMinValue=-5,linewidth=2pt,linecolor=red]{-4.55}{4.55}{(x)/(sin(2*x))}
\endpsclip
\psplot[linestyle=dashed,linecolor=blue!30]{-4.8}{4.8}{x}
\psplot[linestyle=dashed,linecolor=blue!30]{-4.8}{4.8}{-x}
\rput(0,0.5){$\times$}
\end{pspicture}
\endgroup
\begingroup
\begin{pspicture}(-6.5,-4)(6.5,7.5)
\psaxes[trigLabelBase=2,dx=\psPiH,
xunit=\psPi,trigLabels]{->}(0,0)(-1.7,-3.5)(1.77,6.5)[$x$,0][$y$,90]
\psplot[yMaxValue=6,yMinValue=-3,linewidth=1.6pt,plotpoints=2000,
linecolor=red,algebraic]{-4.55}{4.55}{tan(x)}
\end{pspicture}
\endgroup
\begin{lstlisting}
\begin{pspicture}(-6.5,-4)(6.5,7.5)
\psaxes[trigLabelBase=2,dx=\psPiH,xunit=\psPi,trigLabels]%
{->}(0,0)(-1.7,-3.5)(1.77,6.5)[$x$,0][$y$,90]
\psplot[yMaxValue=6,yMinValue=-3,linewidth=1.6pt,plotpoints=2000,
linecolor=red,algebraic]{-4.55}{4.55}{tan(x)}
\end{pspicture}
\end{lstlisting}
%--------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{axesstyle}}\label{axesstyle}\label{quadrant}
%--------------------------------------------------------------------------------------
There is a new axes style \Lkeyval{polar} which plots a \Index{polar coordinate} system.
Syntax:
\begin{lstlisting}[style=syntax]
\psplot[axesstyle=polar](Rx,Angle)
\psplot[axesstyle=polar](...)(Rx,Angle)
\psplot[axesstyle=polar](...)(...)(Rx,Angle)
\end{lstlisting}
Important is the fact, that only one pair of coordinates is taken into account for
the radius and the angle. It is \emph{always} the last pair in a sequence of allowed coordinates
for the \Lcs{psaxes} macro. The other ones are ignored; they are not valid for the
polar coordinate system. However, if the angle is set to 0 it is changed to 360 degrees for a
full circle.
\begin{LTXexample}[pos=r]
\begin{pspicture}(-1,-1)(5.75,5.75)
\psaxes[axesstyle=polar,
subticks=2](5,90)
\psline[linewidth=2pt]{->}(5;15)
\psline[linewidth=2pt]{->}(2;40)
\psline{->}(2;10)(4;85)
\end{pspicture}
\end{LTXexample}
All valid optional arguments for the axes are also possible for the polar style, if they make sense \ldots\ :-)
Important are the \Lkeyword{Dy} option, it defines the angle interval and \Lkeyword{subticks}, for
the intermediate circles and lines. The number can be different for the circles (\Lkeyword{ysubticks}) and the
lines (\Lkeyword{xsubticks}).
\begin{LTXexample}[pos=r]
\begin{pspicture}(-3,-1)(4.5,4.5)
\psaxes[axesstyle=polar,
subticklinestyle=dashed,
subticks=2,Dy=20,Oy=20,
ylabelFactor=^\circ](4,140)
\psline[linewidth=2pt]{->}(4;15)
\psline[linewidth=2pt]{->}(2;40)
\psline{->}(2;10)(3;85)
\end{pspicture}
\end{LTXexample}
\begin{lstlisting}
\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
\psaxes[axesstyle=polar](3,0)
\psplot[polarplot,algebraic,linecolor=blue,linewidth=2pt,
plotpoints=2000]{0}{TwoPi 4 mul}{2*(sin(x)-x)/(cos(x)+x)}
\end{pspicture}
%
\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
\psaxes[axesstyle=polar,subticklinestyle=dashed,subticks=2,
xlabelFontSize=\scriptstyle](3,360)
\psplot[polarplot,algebraic,linecolor=red,linewidth=2pt,
plotpoints=2000]{0}{TwoPi}{6*sin(x)*cos(x)}
\end{pspicture}
\end{lstlisting}
%\begin{LTXexample}[pos=b]
\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
\psaxes[axesstyle=polar](3,0)
\psplot[polarplot,algebraic,linecolor=blue,linewidth=2pt,
plotpoints=2000]{0}{TwoPi 4 mul}{2*(sin(x)-x)/(cos(x)+x)}
\end{pspicture}
%
\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
\psaxes[axesstyle=polar,subticklinestyle=dashed,subticks=2,
ylabelFontSize=\scriptstyle](3,360)
\psplot[polarplot,algebraic,linecolor=red,linewidth=2pt,
plotpoints=2000]{0}{TwoPi}{6*sin(x)*cos(x)}
\end{pspicture}
%\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{xyAxes}, \nxLkeyword{xAxis} and \nxLkeyword{yAxis}}\label{xyAxes}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
xyAxes=true|false
xAxis=true|false
yAxis=true|false
\end{lstlisting}
Sometimes there is only a need for one axis with ticks. In this
case you can set one of the preceding options to false. The
\Lkeyword{xyAxes} only makes sense when you want to set both x and y
to true with only one command, back to the default, because with
\Lkeyword{xyAxes}=\false you get nothing with the \Lcs{psaxes} macro.
\begin{LTXexample}
\begin{pspicture}(5,1)
\psaxes[yAxis=false,linecolor=blue]{->}(0,0.5)(5,0.5)
\end{pspicture}
\begin{pspicture}(1,5)
\psaxes[xAxis=false,linecolor=red]{->}(0.5,0)(0.5,5)
\end{pspicture}
\begin{pspicture}(1,5)
\psaxes[xAxis=false,linecolor=red,
ylabelPos=right]{->}(0.5,0)(0.5,5)
\end{pspicture}\\[0.5cm]
\begin{pspicture}(5,1)
\psaxes[yAxis=false,linecolor=blue,
xlabelPos=top]{->}(0,0.5)(5,0.5)
\end{pspicture}
\end{LTXexample}
As seen in the example, a single y axis gets the labels on the left side. This can be
changed with the option \Lkeyword{ylabelPos} or with \Lkeyword{xlabelPos} for the
$x$-axis.
%--------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{labels}}\label{labels}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
labels=all|x|y|none
\end{lstlisting}
This option was already in the \LPack{pst-plot} package and
only mentioned here for completeness.
\begin{LTXexample}[width=3.5cm]
\psset{ticksize=6pt}
\begin{pspicture}(-1,-1)(2,2)
\psaxes[labels=all,subticks=5]{->}(0,0)(-1,-1)(2,2)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(-1,-1)(2,2)
\psaxes[labels=y,subticks=5]{->}(0,0)(-1,-1)(2,2)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(-1,-1)(2,2)
\psaxes[labels=x,subticks=5]{->}(0,0)(2,2)(-1,-1)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(-1,-1)(2,2)
\psaxes[labels=none,subticks=5]{->}(0,0)(2,2)(-1,-1)
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{xlabelPos} and \nxLkeyword{ylabelPos}}\label{labelpos}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
xlabelPos=bottom|axis|top
ylabelPos=left|axis|right
\end{lstlisting}
By default the \Index{label}s for ticks are placed at the bottom (x axis)
and left (y-axis). If both axes are drawn in the negative
direction the default is top (x axis) and right (y axis). It be
changed with the two options \Lkeyword{xlabelPos} and
\Lkeyword{ylabelPos}. With the value \Lkeyval{axis} the user can
place the labels depending on the value of \Lkeyword{labelsep}, which is
taken into account for \Lkeyval{axis}.
\bigskip
\begin{LTXexample}[width=9cm]
\begin{pspicture}(3,3)
\psaxes{->}(3,3)
\end{pspicture}\hspace{2cm}
\begin{pspicture}(3,-3)
\psaxes[xlabelPos=top]{->}(3,-3)
\end{pspicture}
\end{LTXexample}
\vspace{1cm}
\begin{LTXexample}[width=9cm]
\begin{pspicture}(-3,-3)
\psaxes{->}(-3,-3)
\end{pspicture}\hspace{2cm}
\begin{pspicture}(3,3)
\psaxes[labelsep=0pt,
ylabelPos=axis,
xlabelPos=axis]{->}(3,3)
\end{pspicture}
\end{LTXexample}
\vspace{1cm}
\begin{LTXexample}[width=5cm]
\begin{pspicture}(-1,1)(3,-3)
\psaxes[xlabelPos=top,
xticksize=0 20pt,
yticksize=-20pt 0]{->}(3,-3)
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{x|ylabelFontSize} and \nxLkeyword{x|ymathLabel}}\label{labelfontsize}
%--------------------------------------------------------------------------------------
This option sets the horizontal \textbf{and} vertical font size
for the labels depending on the option \Lkeyword{mathLabel} (\Lkeyword{xmathLabel}/\Lkeyword{ymathLabel}) for the
text or the math mode. It will be overwritten when another package
or a user defines
\begin{lstlisting}[style=syntax]
\def\pshlabel#1{\xlabelFontSize ...}
\def\psvlabel#1{\ylabelFontSize ...}
\def\pshlabel#1{$\xlabelFontSize ...$}% for mathLabel=true (default)
\def\psvlabel#1{$\ylabelFontSize ...$}% for mathLabel=true (default)
\end{lstlisting}
in another way. Note that for \Lkeyword{mathLabel}=\true the font size
must be set by one of the mathematical styles \Lcs{textstyle},
\Lcs{displaystyle}, \Lcs{scriptstyle}, or \Lcs{scriptscriptstyle}.
\begin{LTXexample}[width=6cm]
\psset{mathLabel=false}
\begin{pspicture}(-0.25,-0.25)(5,2.25)
\psaxes{->}(5,2.25)[$x$,0][$y$,90]
\end{pspicture}\\[20pt]
\begin{pspicture}(-0.25,-0.25)(5,2.25)
\psaxes[labelFontSize=\footnotesize]{->}(5,2.25)
\end{pspicture}\\[20pt]
\begin{pspicture}(-0.25,-0.25)(5,2.25)
\psaxes[xlabelFontSize=\footnotesize]{->}(5,2.25)
\end{pspicture}\\[20pt]
\end{LTXexample}
\begin{LTXexample}[width=6cm]
\begin{pspicture}(-0.25,-0.25)(5,2.25)
\psaxes[labelFontSize=\scriptstyle]{->}(5,2.25)[\textbf{x},-90][\textbf{y},0]
\end{pspicture}\\[20pt]
\psset{mathLabel=true}
\begin{pspicture}(-0.25,-0.25)(5,2.25)
\psaxes[ylabelFontSize=\scriptscriptstyle]{->}(5,2.25)
\end{pspicture}\\[20pt]
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{xlabelFactor} and \nxLkeyword{ylabelFactor}}\label{labelfactor}
%--------------------------------------------------------------------------------------
When having big numbers as data records then it makes sense to
write the values as ${<number>\cdot 10^{<exp>}}$. These new
options allow you to define the additional part of the value, but
it must be set in math mode when using math operators or macros like \Lcs{cdot}!
\begin{LTXexample}[pos=b]
\readdata{\data}{data/demo1.data}
\pstScalePoints(1,0.000001){}{}% (x,y){additional x operator}{y op}
\psset{llx=-1cm,lly=-1cm}
\psgraph[ylabelFactor=\cdot 10^6,Dx=5,Dy=100](0,0)(25,750){8cm}{5cm}
\listplot[linecolor=red, linewidth=2pt, showpoints=true]{\data}
\endpsgraph
\pstScalePoints(1,1){}{}% reset
\end{LTXexample}
\begin{LTXexample}[pos=t]
\psset{xunit=0.05, yunit=2,labelFontSize=\scriptstyle,algebraic,plotpoints=500}
\newpsstyle{mygrid}{%
Dx=10,Dy=0.5,labels=none,subticks=5,tickwidth=0.4pt,subtickwidth=0.2pt,
tickcolor=Red!30,subtickcolor=ForestGreen!30,
xticksize=-1 1.5,yticksize=0 180,subticksize=1}
\begin{pspicture}(-10,-1.3)(190,1.8)
\psaxes[style=mygrid](0,0)(0,-1)(180,1.51)
\psplot[linecolor=NavyBlue]{0}{180}{sin(x*Pi/180)+1/2}
\psaxes[Dx=20,Dy=0.5,linecolor=gray,tickcolor=gray,linewidth=1pt,ticksize=-3pt 3pt,
xlabelFactor={}^\circ]{<->}(0,0)(-5,-1.2)(185,1.7)[$x$,0][$y$,90]
\end{pspicture}
\end{LTXexample}
\psset{unit=1cm}
\clearpage
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{decimalSeparator} and \nxLkeyword{comma}}\label{comma}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
comma=false|true
decimalSeparator=<charactor>
\end{lstlisting}
Setting the option \Lkeyword{comma} to true gives labels with a comma as a decimal separator instead
of the default dot. \Lkeyword{comma} and \verb|comma=true| is the same. The optional argument
\Lkeyword{decimalSeparator} allows an individual setting for languages with a different
character than a dot or a comma. The character has to be set into braces, if it is an
active one, e.\,g. \Lkeyword{decimalSeparator}=\Largb{,}.
\medskip
\begin{LTXexample}[width=5.5cm]
\begin{pspicture}(-0.5,-0.5)(5,5.5)
\psaxes[Dx=1.5,comma,Dy=0.75,dy=0.75]{->}(5,5)
\psplot[linecolor=red,linewidth=3pt]{0}{4.5}%
{x RadtoDeg cos 2 mul 2.5 add}
\psline[linestyle=dashed](0,2.5)(4.5,2.5)
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{xyDecimals}, \nxLkeyword{xDecimals} and \nxLkeyword{yDecimals}}\label{xydecimals}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
xyDecimals=<number>
xDecimals=<any>
yDecimals=<any>
\end{lstlisting}
By default the labels of the axes get numbers with or without
decimals, depending on the numbers itself. With these options
it is possible to determine the decimals, where
the option \Lkeyword{xyDecimals} sets this identical for both axes.
\Lkeyword{xDecimals} only for the $x$ and \Lkeyword{yDecimals} only
for the $y$ axis.
The default setting \verb|{}| means, that you'll get the standard
behaviour.
\begin{LTXexample}[width=6cm]
\begin{pspicture}(-1.5,-0.5)(5,3.75)
\psaxes[xyDecimals=2]{->}(0,0)(4.5,3.5)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[pos=t]
\psset{xunit=10cm,yunit=0.01cm,labelFontSize=\scriptstyle}
\begin{pspicture}(-0.1,-150)(1.5,550.0)
\psaxes[Dx=0.25,Dy=100,ticksize=-4pt 0,comma,xDecimals=3,yDecimals=1]{->}%
(0,0)(0,-100)(1.4,520)[\textbf{Amp\`ere},-90][\textbf{Voltage},0]
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection[Option \nxLkeyword{fractionLabels}]{Options \nxLkeyword{fractionLabels},
\nxLkeyword{xfractionLabels}, \nxLkeyword{yfractionLabels}, \nxLkeyword{fractionLabelBase}, \nxLkeyword{xfractionLabelBase},
and \nxLkeyword{yfractionLabelBase}}\label{fraclabels}
%--------------------------------------------------------------------------------------
With the option \Lkeyword{fractionLabels}=\true\ the labels on the axes
are set as fractions.
The option \Lkeyword{fractionLabelBase} sets the
denominator of fraction. The default value of 0 is the same as no
fraction.
\begin{LTXexample}[pos=t]
\psset{fractionLabels,fractionLabelBase=3,unit=3cm}
\begin{pspicture}(-2,-1)(2,1)
\psaxes[dx=0.333,dy=0.333](0,0)(-2,-1)(2,1)
\psplot[algebraic,plotpoints=100]{-2}{2}{0.4*x-1/3}
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection[Option \nxLkeyword{triglabels}]{Options \nxLkeyword{trigLabels},
\nxLkeyword{xtrigLabels}, \nxLkeyword{ytrigLabels}, \nxLkeyword{trigLabelBase}, \nxLkeyword{xtrigLabelBase},
and \nxLkeyword{ytrigLabelBase}
for an axis with trigonmetrical units}\label{triglabels}
%--------------------------------------------------------------------------------------
With the option \Lkeyword{trigLabels}=\true\ \emph{only} the labels on the $x$ axis
are trigonometrical ones. It is the same than setting \Lkeyword{xtrigLabels}=\true.
The option \Lkeyword{trigLabelBase} sets the
denominator of fraction. The default value of 0 is the same as no
fraction. The following constants are defined in the package:
\begin{lstlisting}[style=syntax]
\def?\ON?\psPiFour?\OFF?{12.566371}
\def?\ON?\psPiTwo?\OFF?{6.283185}
\def?\ON?\psPi?\OFF?{3.14159265}
\def?\ON?\psPiH?\OFF?{1.570796327}
\newdimen\pstRadUnit
\newdimen\pstRadUnitInv
?\ON?\pstRadUnit?\OFF?=1.047198cm % this is pi/3
?\ON?\pstRadUnitInv?\OFF?=0.95493cm % this is 3/pi
\end{lstlisting}
Because it is a bit complicated to set the right values, we show
some more examples here.
For \textbf{all} following examples in this section we did a
global
\begin{Xverbatim}{}
\psset{trigLabels,labelFontSize=\scriptstyle}
\end{Xverbatim}
\psset{trigLabels,labelFontSize=\scriptstyle} Translating the
decimal ticks to trigonometrical ones makes no real sense, because
every 1 xunit (1cm) is a tick and the last one is at 6cm.
\clearpage
\psset{unit=1cm}
\begin{minipage}{0.45\fullWidth}
\begin{pspicture}[trigLabels](-0.5,-1.25)(6.5,1.25)%
\pnode(5,0){A}%
\psaxes{->}(0,0)(-0.5,-1.25)(\psPiTwo,1.25)%
\end{pspicture}
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)%
\pnode(5,0){A}%
\psaxes{->}(0,0)(-.5,-1.25)(\psPiTwo,1.25)
\end{pspicture}
\end{lstlisting}
\end{minipage}
\begin{minipage}{0.45\fullWidth}
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)%
\psaxes[trigLabelBase=3]{->}(0,0)(-0.5,-1.25)(\psPiTwo,1.25)
\end{pspicture}
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)%
\psaxes[?\ON?trigLabelBase=3?\OFF?]{->}(0,0)(-0.5,-1.25)(\psPiTwo,1.25)
\end{pspicture}
\end{lstlisting}
\end{minipage}
Modifying the ticks to have the last one exactly at the end is
possible with a different dx value ($\frac{\pi}{3}\approx 1.047$):
\begin{minipage}{0.45\fullWidth}
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)\pnode(\psPiTwo,0){C}%
\psaxes[dx=\pstRadUnit]{->}(0,0)(-0.5,-1.25)(\psPiTwo,1.25)
\end{pspicture}%
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)\pnode(\psPiTwo,0){C}%
\psaxes[?\ON?dx=\pstRadUnit?\OFF?]{->}(0,0)(-0.5,-1.25)(\psPiTwo,1.25)
\end{pspicture}%
\end{lstlisting}
\end{minipage}
\begin{minipage}{0.45\fullWidth}
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)\pnode(5,0){B}%
\psaxes[dx=\pstRadUnit,trigLabelBase=3]{->}(0,0)(-0.5,-1.25)(\psPiTwo,1.25)
\end{pspicture}%
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)\pnode(5,0){B}%
\psaxes[dx=\pstRadUnit,?\ON?trigLabelBase=3?\OFF?] {->}(0,0)(-0.5,-1.25)(\psPiTwo,1.25)
\end{pspicture}%
\end{lstlisting}
\end{minipage}
\ncline[linestyle=dashed,linewidth=0.4pt]{A}{B}
Set everything globally in radian units. Now 6 units on the
$x$-axis are $6\pi$. Using \Lkeyword{trigLabelBase}=3 reduces this
value to $2\pi$, a.s.o.
\bigskip
\begin{minipage}{0.45\fullWidth}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)\pnode(6,0){D}%
\psaxes{->}(0,0)(-0.5,-1.25)(6.5,1.25)%
\end{pspicture}%
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\psset{?\ON?xunit=\pstRadUnit?\OFF?}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)\pnode(6,0){D}%
\psaxes{->}(0,0)(-0.5,-1.25)(6.5,1.25)%
\end{pspicture}%
\end{lstlisting}
\end{minipage}
\ncline[linestyle=dashed,linewidth=0.4pt]{C}{D}
\begin{minipage}{0.45\fullWidth}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[trigLabelBase=3]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\end{pspicture}%
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\psset{?\ON?xunit=\pstRadUnit?\OFF?}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[?\ON?trigLabelBase=3?\OFF?]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\end{pspicture}%
\end{lstlisting}
\end{minipage}
\begin{minipage}{0.45\fullWidth}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[trigLabelBase=4]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\end{pspicture}%
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\psset{?\ON?xunit=\pstRadUnit?\OFF?}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[?\ON?trigLabelBase=4?\OFF?]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\end{pspicture}%
\end{lstlisting}
\end{minipage}
\begin{minipage}{0.45\fullWidth}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[trigLabelBase=6]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\end{pspicture}%
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\psset{?\ON?xunit=\pstRadUnit?\OFF?}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[?\ON?trigLabelBase=6?\OFF?]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\end{pspicture}%
\end{lstlisting}
\end{minipage}
The best way seems to be to set the $x$-unit to
\Lcs{pstRadUnit}. Plotting a function doesn't consider the value
for \Lkeyword{trigLabelBase}, it has to be done by the user. The first
example sets the unit locally for the \Lcs{psplot} back to 1cm,
which is needed, because we use this unit on the PostScript side.
\begin{minipage}{0.45\fullWidth}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.4,-1.25)(6.5,1.25)
\psaxes[trigLabelBase=3]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\psplot[xunit=1cm,linecolor=red,linewidth=1.5pt]{0}{\psPiTwo}{x RadtoDeg sin}
\end{pspicture}
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[trigLabelBase=3]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\psplot[?\ON?xunit=1cm?\OFF?,linecolor=red,linewidth=1.5pt]{0}{?\ON?\psPiTwo?\OFF?}{x RadtoDeg sin}
\end{pspicture}
\end{lstlisting}
\end{minipage}
\begin{minipage}{0.45\fullWidth}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.4,-1.25)(6.5,1.25)
\psaxes[trigLabelBase=3]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\psplot[linecolor=red,linewidth=1.5pt]{0}{6}{x Pi 3 div mul RadtoDeg sin}
\end{pspicture}
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[trigLabelBase=3]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\psplot[linecolor=red,linewidth=1.5pt]{0}{6}{x ?\ON?Pi 3 div mul ?\OFF?RadtoDeg sin}
\end{pspicture}
\end{lstlisting}
\end{minipage}
\begin{minipage}{0.45\fullWidth}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.4,-1.25)(6.5,1.25)
\psaxes[dx=1.5]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\psplot[xunit=.5cm,linecolor=red,linewidth=1.5pt]{0}{\psPiFour}{x RadtoDeg sin}
\end{pspicture}
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[?\ON?dx=1.5?\OFF?]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\psplot[?\ON?xunit=0.5cm?\OFF?,linecolor=red,linewidth=1.5pt]{0}{?\ON?\psPiFour?\OFF?}{x RadtoDeg sin}
\end{pspicture}
\end{lstlisting}
\end{minipage}
\begin{minipage}{0.45\fullWidth}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.4,-1.25)(6.5,1.25)
\psaxes[dx=0.75,trigLabelBase=2]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\psplot[xunit=.5cm,linecolor=red,linewidth=1.5pt]{0}{\psPiFour}{x RadtoDeg sin}
\end{pspicture}
\end{minipage}%
\begin{minipage}{0.55\fullWidth}
\begin{lstlisting}
\psset{xunit=\pstRadUnit}%
\begin{pspicture}(-0.5,-1.25)(6.5,1.25)
\psaxes[?\ON?dx=0.75?\OFF?,?\ON?trigLabelBase=2?\OFF?]{->}(0,0)(-0.5,-1.25)(6.5,1.25)
\psplot[?\ON?xunit=0.5cm?\OFF?,linecolor=red,linewidth=1.5pt]{0}{\psPiFour}{x RadtoDeg sin}
\end{pspicture}
\end{lstlisting}
\end{minipage}
It is also possible to set the $x$ unit and $dx$ value to get the
labels right. But this needs some more understanding as to how it
really works. A \Lkeyword{xunit}=1.570796327 sets the unit to $\pi/2$
and a \Lkeyword{dx}=0.666667 then puts at every $2/3$ of the unit a
tick mark and a label. The length of the $x$-axis is 6.4 units
which is $6.4\cdot 1.570796327cm\approx 10cm$. The function then
is plotted from $0$ to $3\pi=9.424777961$.
\begin{center}
\psset{unit=1cm}
\begin{pspicture}(-0.5,-1.25)(10,1.25)
\psaxes[xunit=\psPiH,showorigin=false,trigLabelBase=3,dx=0.666667]{->}(0,0)(-0.5,-1.25)(6.4,1.25)
\psplot[linecolor=red,linewidth=1.5pt]{0}{9.424777961}{%
x RadtoDeg dup sin exch 1.1 mul cos add}
\end{pspicture}
\end{center}
\begin{lstlisting}
\begin{pspicture}(-0.5,-1.25)(10,1.25)
\psaxes[?\ON?xunit=\psPiH?\OFF?,?\ON?trigLabelBase=3?\OFF?,?\ON?dx=0.666667?\OFF?]{->}(0,0)(-0.5,-1.25)(6.4,1.25)
\psplot[linecolor=red,linewidth=1.5pt]{0}{?\ON?9.424777961?\OFF?}{%
x RadtoDeg dup sin exch 1.1 mul cos add}
\end{pspicture}
\end{lstlisting}
\begin{center}
\psset{unit=1cm}
\begin{pspicture}(-0.5,-1.25)(10,1.25)
\psaxes[xunit=\psPi,dx=0.25]{->}(0,0)(-0.25,-1.25)(3.2,1.25)
\psplot[xunit=0.25,plotpoints=500,linecolor=red,linewidth=1.5pt]{0}{37.70}{%
x RadtoDeg dup sin exch 1.1 mul cos add}
\end{pspicture}
\end{center}
\begin{lstlisting}
\psset{?\ON?unit=1cm?\OFF?}
\psplot[?\ON?xunit=0.25?\OFF?,?\ON?plotpoints=500?\OFF?,linecolor=red,linewidth=1.5pt]{0}{37.70}{%
x RadtoDeg dup sin exch 1.1 mul cos add}
\end{pspicture}
\end{lstlisting}
\begin{center}
\psset{unit=1cm}
\begin{pspicture}(-0.5,-2)(10,2)
\psplot[xunit=0.0625,linecolor=red,linewidth=1.5pt,plotpoints=5000]{0}{150.80}{%
x RadtoDeg dup sin exch 1.1 mul cos add}
\psaxes[xunit=\psPi,dx=0.5,Dx=8,subticks=2]{->}(0,0)(-0.1,-2)(3.2,2)
\end{pspicture}
\end{center}
\begin{lstlisting}
\psset{?\ON?unit=1cm?\OFF?}
\begin{pspicture}(-0.5,-1.25)(10,1.25)
\psplot[?\ON?xunit=0.0625?\OFF?,linecolor=red,linewidth=1.5pt,%
?\ON?plotpoints=5000?\OFF?]{0}{150.80}%
{x RadtoDeg dup sin exch 1.1 mul cos add}
\psaxes[?\ON?xunit=\psPi?\OFF?,?\ON?dx=0.5?\OFF?,?\ON?Dx=8?\OFF?]{->}(0,0)(-0.25,-1.25)(3.2,1.25)
\end{pspicture}
\end{lstlisting}
\begin{center}
\psset{unit=1cm}
\begin{pspicture}(-7,-1.5)(7,1.5)
\psaxes[trigLabels=true,xunit=\psPi]{->}(0,0)(-2.2,-1.5)(2.2,1.5)
\psplot[linecolor=red,linewidth=1.5pt]{-7}{7}{x RadtoDeg sin}
\end{pspicture}
\end{center}
\begin{lstlisting}
\begin{pspicture}(-7,-1.5)(7,1.5)
\psaxes[trigLabels=true,?\ON?xunit=\psPi?\OFF?]{->}(0,0)(-2.2,-1.5)(2.2,1.5)
\psplot[linecolor=red,linewidth=1.5pt]{-7}{7}{x RadtoDeg sin}
\end{pspicture}
\end{lstlisting}
\begin{center}
\psset{unit=1cm}
\begin{pspicture}(-7,-1.5)(7,1.5)
\psaxes[trigLabels=true,
trigLabelBase=2,dx=\psPiH,xunit=\psPi]{->}(0,0)(-2.2,-1.5)(2.2,1.5)
\psplot[linecolor=red,linewidth=1.5pt]{-7}{7}{x RadtoDeg sin}
\end{pspicture}
\end{center}
\begin{lstlisting}
\begin{pspicture}(-7,-1.5)(7,1.5)
\psaxes[trigLabels=true,
trigLabelBase=2,dx=\psPiH,xunit=\psPi]{->}(0,0)(-2.2,-1.5)(2.2,1.5)
\psplot[linecolor=red,linewidth=1.5pt]{-7}{7}{x RadtoDeg sin}
\end{pspicture}
\end{lstlisting}
\psset{unit=1cm,trigLabels=false}
The setting of trigonometrical labels with \Lkeyword{ytriglabels}=\true\
for the $y$ axis is the same as for the $x$ axis.
\label{xtriglabels}\label{ytriglabels}
\begin{center}
\psset{unit=1cm}
\begin{pspicture}(-6.5,-7)(6.5,7.5)
\psaxes[trigLabelBase=2,dx=\psPiH,xunit=\psPi,ytrigLabels]
{->}(0,0)(-1.7,-6.5)(1.77,6.5)[$x$,0][$y$,90]
\end{pspicture}
\end{center}
\begin{lstlisting}
\psset{unit=1cm}
\begin{pspicture}(-6.5,-7)(6.5,7.5)
\psaxes[trigLabelBase=2,dx=\psPiH,xunit=\psPi,ytrigLabels]
{->}(0,0)(-1.7,-6.5)(1.77,6.5)[$x$,0][$y$,90]
\end{pspicture}
\end{lstlisting}
Also setting labels for the $x$ axis is possible with \Lkeyword{trigLabels}=\true\
or alternatively with \Lkeyword{ytrigLabels}=\true.
\begin{center}
\psset{unit=1cm}
\begin{pspicture}(-6.5,-7)(6.5,7.5)
\psaxes[trigLabels,xtrigLabelBase=2,ytrigLabelBase=3,dx=\psPiH,
xunit=\psPi,Dy=2]{->}(0,0)(-1.7,-6.5)(1.77,6.5)[$x$,0][$y$,90]
\end{pspicture}
\end{center}
\begin{lstlisting}
\psset{unit=1cm}
\begin{pspicture}(-6.5,-7)(6.5,7.5)
\psaxes[trigLabels,xtrigLabelBase=2,ytrigLabelBase=3,dx=\psPiH,
xunit=\psPi,Dy=2]{->}(0,0)(-1.7,-6.5)(1.77,6.5)[$x$,0][$y$,90]
\end{pspicture}
\end{lstlisting}
\clearpage
\psset{yAxis=false,xtrigLabels,xtrigLabelBase=3}
\begin{pspicture}(-\psPi,-5mm)(\psPiTwo,12pt)
\def\pi{\omega}% Hold it local
\psaxes[dx=\pstRadUnit,Ox=-3](-\psPi,-12pt)(\psPiTwo,12pt)
\end{pspicture}
\bigskip
\begin{pspicture}(-\psPi,-5mm)(\psPiTwo,12pt)
\psaxes[dx=\pstRadUnit,Ox=-3](-\psPi,-12pt)(\psPiTwo,12pt)
\end{pspicture}
\bigskip
\begin{pspicture}(-\psPi,-5mm)(\psPiTwo,12pt)
\def\pi{\sqrt2}% Hold it local
\psaxes[dx=\pstRadUnit,Ox=-3](-\psPi,-12pt)(\psPiTwo,12pt)
\end{pspicture}
\bigskip
\psset{trigLabels=false}
\begin{pspicture}(-\psPi,-10mm)(\psPiTwo,12pt)
\psaxes[dx=\pscalculate{3.14/2},Dx=90,Ox=-180](-\psPi,-12pt)(\psPiTwo,12pt)
\end{pspicture}
\bigskip
\begin{lstlisting}
\begin{pspicture}(-\psPi,-5mm)(\psPiTwo,12pt)
\def\pi{\omega}% Hold it local
\psaxes[dx=\pstRadUnit,Ox=-3](-\psPi,-12pt)(\psPiTwo,12pt)
\end{pspicture}
\bigskip
\begin{pspicture}(-\psPi,-5mm)(\psPiTwo,12pt)
\psaxes[dx=\pstRadUnit,Ox=-3](-\psPi,-12pt)(\psPiTwo,12pt)
\end{pspicture}
\bigskip
\begin{pspicture}(-\psPi,-5mm)(\psPiTwo,12pt)
\def\pi{\sqrt2}% Hold it local
\psaxes[dx=\pstRadUnit,Ox=-3](-\psPi,-12pt)(\psPiTwo,12pt)
\end{pspicture}
\bigskip
\psset{trigLabels=false}
\begin{pspicture}(-\psPi,-10mm)(\psPiTwo,12pt)
\psaxes[dx=\pscalculate{3.14/2},Dx=90,Ox=-180](-\psPi,-12pt)(\psPiTwo,12pt)
\end{pspicture}
\end{lstlisting}
\psset{trigLabels=false,labelFontSize=\scriptstyle,unit=1cm}
\clearpage
%--------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{ticks}}\label{ticks}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
ticks=all|x|y|none
\end{lstlisting}
This option was already in the \LPack{pst-plot} package and
only mentioned here for some completeness.
\begin{LTXexample}[width=3.5cm]
\psset{ticksize=6pt}
\begin{pspicture}(-1,-1)(2,2)
\psaxes[ticks=all,subticks=5]{->}(0,0)(-1,-1)(2,2)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(-1,-1)(2,2)
\psaxes[ticks=y,subticks=5]{->}(0,0)(-1,-1)(2,2)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(-1,-1)(2,2)
\psaxes[ticks=x,subticks=5]{->}(0,0)(2,2)(-1,-1)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(-1,-1)(2,2)
\psaxes[ticks=none,subticks=5]{->}(0,0)(2,2)(-1,-1)
\end{pspicture}
\end{LTXexample}
\clearpage
% full= 0, top=1, bottom=-1, inner=2 => -1 0 1 2
%--------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{tickstyle}}\label{tickstyle}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
tickstyle=full|top|bottom|inner
\end{lstlisting}
The value \Lkeyval{inner} is only possible for the axes style \Lkeyval{frame}.
\medskip
\begin{LTXexample}[pos=t]
\psset{subticks=10}
\begin{pspicture}(-1,-1)(3,3) \psaxes[tickstyle=full]{->}(3,3) \end{pspicture}
\begin{pspicture}(-1,-1)(3,3) \psaxes[tickstyle=top]{->}(3,3) \end{pspicture}
\begin{pspicture}(-1,-1)(3,3) \psaxes[tickstyle=bottom]{->}(3,3)\end{pspicture}
\begin{pspicture}(-1,-1)(3,3)
\psaxes[axesstyle=frame, tickstyle=inner, ticksize=0 4pt]{->}(3,3)
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{ticksize}, \nxLkeyword{xticksize}, \nxLkeyword{yticksize}}\label{ticksize}
%--------------------------------------------------------------------------------------
With this new option the recent \Lkeyword{tickstyle} option of
\LPack{pst-plot} is obsolete and no longer supported by \LPack{pstricks-add}.
Syntax:
\begin{lstlisting}[style=syntax]
ticksize=value[unit]
ticksize=value[unit] value[unit]
xticksize=value[unit]
xticksize=value[unit] value[unit]
yticksize=value[unit]
yticksize=value[unit] value[unit]
\end{lstlisting}
\Lkeyword{ticksize} sets both values. The first one is left/below and the optional second
one is right/above of the coordinate axis. The old setting \Lkeyset{tickstyle=bottom} is
now easy to realize, e.\,g.: \Lkeyword{ticksize}=-6pt 0, or vice versa, if the coordinates
are set from positive to negative values.
\medskip
\begin{LTXexample}[width=6cm]
\psset{arrowscale=2}
\begin{pspicture}(-1.5,-1.5)(4,3.5)
\psaxes[ticksize=0.5cm]{->}(0,0)(-1.5,-1.5)(4,3.5)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=6cm]
\psset{arrowscale=2}
\begin{pspicture}(-1.5,-1.5)(4,3.5)
\psaxes[xticksize=-10pt 0,yticksize=0 10pt]%
{->}(0,0)(-1.5,-1.5)(4,3.5)
\end{pspicture}
\end{LTXexample}
A grid is also possible by setting the values to the max/min coordinates.
\begin{LTXexample}[width=6cm]
\psset{arrowscale=2}
\begin{pspicture}(-.5,-.5)(5,4.5)
\psaxes[ticklinestyle=dashed,
ticksize=0 4cm]{->}(0,0)(-.5,-.5)(5,4.5)
\end{pspicture}
\end{LTXexample}
\clearpage
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{subticks}, \nxLkeyword{xsubticks}, and \nxLkeyword{ysubticks}}\label{subticks}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
subticks=<number>
xsubticks=<number>
ysubticks=<number>
\end{lstlisting}
By default \Lkeyword{subticks} cannot have labels.
\begin{LTXexample}[width=3.5cm]
\psset{ticksize=6pt}
\begin{pspicture}(-1,-1)(2,2)
\psaxes[ticks=all,xsubticks=5,
ysubticks=10]{->}(0,0)(-1,-1)(2,2)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(-1,-1)(2,2)
\psaxes[ticks=y,subticks=5]{->}(0,0)(-1,-1)(2,2)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(-1,-1)(2,2)
\psaxes[ticks=x,subticks=5]{->}(0,0)(2,2)(-1,-1)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(-1,-1)(2,2)
\psaxes[ticks=none,subticks=5]{->}(0,0)(2,2)(-1,-1)
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{subticksize}, \nxLkeyword{xsubticksize}, \nxLkeyword{ysubticksize}}\label{subticksize}
%--------------------------------------------------------------------------------------
\Lkeyword{subticksize} sets both values, \Lkeyword{xsubticksize} only for the $x$-axis and
\Lkeyword{ysubticksize} only for the $y$-axis,
which must be relative to the ticksize length and
can have any number. 1 sets it to the same length as the main ticks.
Syntax:
\begin{lstlisting}[style=syntax]
subticksize=value
xsubticksize=value
ysubticksize=value
\end{lstlisting}
\begin{LTXexample}[preset=\centering,pos=t]
\psset{yunit=1.5cm,xunit=3cm}
\begin{pspicture}(-1.25,-4.75)(3.25,.75)
\psaxes[xticksize=-4.5 0.5,ticklinestyle=dashed,subticks=5,xsubticksize=1,%
ysubticksize=0.75,xsubticklinestyle=dotted,xsubtickwidth=1pt,
subtickcolor=gray]{->}(0,0)(-1,-4)(3.25,0.5)
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection[\nxLkeyword{tickcolor} and \nxLkeyword{subtickcolor}]%
{Options \nxLkeyword{tickcolor}, \nxLkeyword{xtickcolor}, \nxLkeyword{ytickcolor},
\nxLkeyword{subtickcolor}, \nxLkeyword{xsubtickcolor}, and \nxLkeyword{ysubtickcolor}}\label{tickcolor}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
tickcolor=<color>
xtickcolor=<color>
ytickcolor=<color>
subtickcolor=<color>
xsubtickcolor=<color>
ysubtickcolor=<color>
\end{lstlisting}
\Lkeyword{tickcolor} and \Lkeyword{subtickcolor} set both for the $x$- and the $y$-Axis.
\begin{LTXexample}[preset=\centering,pos=t]
\begin{pspicture}(0,-0.75)(10,1)
\psaxes[yAxis=false,labelFontSize=\scriptstyle,ticksize=0 10mm,subticks=10,subticksize=0.75,
tickcolor=red,subtickcolor=blue,tickwidth=1pt,subtickwidth=0.5pt](10.01,0)
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[width=5cm]
\begin{pspicture}(5,-0.75)(10,1)
\psaxes[yAxis=false,labelFontSize=\scriptstyle,ticksize=0 -10mm,subticks=10,subticksize=0.75,
tickcolor=red,subtickcolor=blue,tickwidth=1pt,subtickwidth=0.5pt,Ox=5](5,0)(5,0)(10.01,0)
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection[\nxLkeyword{ticklinestyle} and \nxLkeyword{subticklinestyle}]%
{Options \nxLkeyword{ticklinestyle}, \nxLkeyword{xticklinestyle}, \nxLkeyword{yticklinestyle},
\nxLkeyword{subticklinestyle}, \nxLkeyword{xsubticklinestyle}, and \nxLkeyword{ysubticklinestyle}}\label{ticklinestyle}
%--------------------------------------------------------------------------------------
Syntax:
\begin{lstlisting}[style=syntax]
ticklinestyle=solid|dashed|dotted|none
xticklinestyle=solid|dashed|dotted|none
yticklinestyle=solid|dashed|dotted|none
subticklinestyle=solid|dashed|dotted|none
xsubticklinestyle=solid|dashed|dotted|none
ysubticklinestyle=solid|dashed|dotted|none
\end{lstlisting}
\Lkeyword{ticklinestyle} and \Lkeyword{subticklinestyle} set both values
for the x and y axis. The value \Lkeyval{none} doesn't really makes
sense, because it is the same as \verb+[sub]ticklines=0+
\xLkeyword{xticklinestyle}\xLkeyword{yticklinestyle}
\xLkeyword{xsubticklinestyle}\xLkeyword{ysubticklinestyle}
\begin{LTXexample}[preset=\centering,pos=t]
\psset{unit=4cm}
\pspicture(-0.15,-0.15)(2.5,1)
\psaxes[axesstyle=frame,logLines=y,xticksize=0 1,xsubticksize=1,ylogBase=10,
tickcolor=red,subtickcolor=blue,tickwidth=1pt,subticks=9,xsubticks=10,
xticklinestyle=dashed,xsubticklinestyle=dashed](2.5,1)
\endpspicture
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{\nxLkeyword{logLines}}\label{loglines}
%--------------------------------------------------------------------------------------
Syntax:
\begin{BDef}
logLines=all|x|y
\end{BDef}
By default the option \Lkeyword{logLines} sets the ticksize to the maximal length for x, y, or both.
It can be changed, when \emph{after} the option \Lkeyword{logLines} the ticksize is set.
\begin{LTXexample}[pos=t]
\pspicture(-1,-1)(5,5)
\psaxes[subticks=5,xylogBase=10,logLines=all](5,5)
\endpspicture\hspace{1cm}
\pspicture(-1,-1)(5,5)
\psaxes[subticks=9,axesstyle=frame,xylogBase=10,logLines=all,
ticksize=0 5pt,tickstyle=inner](5,5)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[preset=\centering,pos=t]
\psset{unit=4cm}
\pspicture(-0.15,-0.15)(2.5,2)
\psaxes[axesstyle=frame,logLines=y,xticksize=max,xsubticksize=1,ylogBase=10,
tickcolor=red,subtickcolor=blue,tickwidth=1pt,subticks=9,xsubticks=10](2.5,2)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[preset=\centering,pos=t]
\psset{unit=4}
\pspicture(-0.5,-0.3)(3,1.2)
\psaxes[axesstyle=frame,tickstyle=inner,logLines=x,xlogBase=10,Dy=0.5,tickcolor=red,
subtickcolor=blue,tickwidth=1pt,ysubticks=5,xsubticks=9](3,1)
\endpspicture
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{\nxLkeyword{xylogBase}, \nxLkeyword{xlogBase} and \nxLkeyword{ylogBase}}\label{xylogbase}
%--------------------------------------------------------------------------------------
There are additional options \Lkeyword{xylogBase}, \Lkeyword{xlogBase},
\Lkeyword{ylogBase} to get one or both axes with \Index{logarithmic label}s. For an
interval of [$10^{-3} ... 10^2$] choose a \PST interval
of [-3,2]. \PST takes $0$ as the origin of this axes,
which is wrong if we want to have a logarithmic axes. With the
options \Lkeyword{Oy} and \Lkeyword{Ox} we can set the origin to $-3$, so
that the first label gets $10^{-3}$. If this is not done by the
user then \LPack{pst-plot} does it by default. An alternative
is to set these parameters to empty values \verb|Ox={},Oy={}|, in
this case the package does nothing.
%------------------------------------------------------------------------------------
\subsection{\nxLkeyword{xylogBase}}\label{logbase}
%------------------------------------------------------------------------------------
This mode in math is also called double logarithmic. It is a
combination of the two foregoing modes and the function is now
$y=\log x$ and is shown in the following example.
\psset{xyAxes=true}
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
\psplot[linewidth=2pt,linecolor=red]{0.001}{3}{x log}
\psaxes[xylogBase=10,Oy=-3,Ox=-3]{->}(-3,-3)(3.5,3.5)
\uput[-90](3.5,-3){x}
\uput[180](-3,3.5){y}
\rput(2.5,1){$y=\log x$}
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------------
\subsection{\nxLkeyword{ylogBase}}\label{ylogbase}
%--------------------------------------------------------------------------------------------
The values for the \Lcs{psaxes} y-coordinate are now the
exponents to the base $10$ and for the right function to the base
$e$: $10^{-3} \ldots 10^1$ which corresponds to the given
y-interval $-3\ldots 1.5$, where only integers as exponents are
possible. These logarithmic labels have no effect on the
internally used units. To draw the logarithm function we have to
use the math function
\[y=\log\{\log x\}\]
\[y=\ln\{\ln x\}\]
with an drawing interval of $1.001\ldots 6$.
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-0.5,-3.5)(6.5,1.5)
\psaxes[ylogBase=10,Oy=-3]{->}(0,-3)(6.5,1.5)
\uput[-90](6.5,-3){x}
\uput[0](0,1.4){y}
\rput(5,1){$y=\log x$}
\psplot[linewidth=2pt,%
plotpoints=100,linecolor=red]{1.001}{6}{x log log} % log(log(x))
\end{pspicture}
\end{LTXexample}
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-0.5,-3.5)(6.5,1.5)
\psplot[linewidth=2pt,plotpoints=100,linecolor=red]%
{1.04}{6}[ /ln {log 0.4343 div} def ]{x ln ln} % log(x)
\psaxes[ylogBase=e,Oy=-3]{->}(0,-3)(6.5,1.5)
\uput[-90](6.5,-3){x}
\uput[0](0,1.5){y}
\rput(5,1){$y=\ln x$}
\end{pspicture}
\end{LTXexample}
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-0.5,1.75)(6.5,4.5)
\psaxes[ylogBase=10,Oy=2]{->}(0,2)(0,2)(6.5,4.5)
\end{pspicture}
\end{LTXexample}
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-0.5,-0.25)(6.5,4.5)
\psplot{0}{6}{x x cos add log} % x + cox(x)
\psplot[linecolor=red]{0}{6}{x 3 exp x cos add log} % x^3 + cos(x)
\psplot[linecolor=cyan]{0}{6}{x 5 exp x cos add log} % x^5 + cos(x)
\psaxes[ylogBase=10]{->}(6.5,4.5)
\end{pspicture}
\end{LTXexample}
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-0.5,-1.25)(6.5,4.5)
\psplot{0}{6}{x x cos add log} % x + cox(x)
\psplot[linecolor=red]{0}{6}{x 3 exp x cos add log} % x^3 + cos(x)
\psplot[linecolor=cyan]{0}{6}{x 5 exp x cos add log} % x^5 + cos(x)
\psaxes[ylogBase=10]{->}(0,-1)(0,-1)(6.5,4.5)
\end{pspicture}
\end{LTXexample}
\medskip
\begin{LTXexample}[width=4cm]
\begin{pspicture}(2.5,1.75)(6.5,4.5)
\psplot[linecolor=cyan]{3}{6}{x 5 exp x cos add log} % x^5 + cos(x)
\psaxes[ylogBase=10,Ox=3,Oy=2]{->}(3,2)(3,2)(6.5,4.5)
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{\nxLkeyword{xlogBase}}\label{xlogbase}
%--------------------------------------------------------------------------------------
Now we have to use the easy math function $y=x$ because the x axis is still $\log x$.
\xLkeyword{xlogBase}
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-3.5,-3.5)(3.5,3.5)
\psplot[linewidth=2pt,linecolor=red]{-3}{3}{x} % log(x)
\psplot[linewidth=2pt,linecolor=blue]{-1.3}{1.5}{x 0.4343 div} % ln(x)
\psaxes[xlogBase=10,Oy=-3,Ox=-3]{->}(-3,-3)(3.5,3.5)
\uput[-90](3.5,-3){x}
\uput[180](-3,3.5){y}
\rput(2.5,1){$y=\log x$}
\rput[lb](0,-1){$y=\ln x$}
\end{pspicture}
\end{LTXexample}
\begin{center}
\psset{yunit=3cm,xunit=2cm}
\begin{pspicture}(-1.25,-1.25)(4.25,1.5)
\uput[-90](4.25,-1){x}
\uput[0](-1,1.25){y}
\rput(0,1){$y=\sin x$}
\psplot[linewidth=2pt,plotpoints=5000,linecolor=red]{-1}{3.5}{10 x exp sin }
\psaxes[xlogBase=10,Oy=-1,Ox=-1]{->}(-1,-1)(4.25,1.25)
\psline[linestyle=dashed](!0 1)(!90 log 1)(!90 log 0)
\end{pspicture}
\end{center}
\begin{lstlisting}
\psset{yunit=3cm,xunit=2cm}
\begin{pspicture}(-1.25,-1.25)(4.25,1.5)
\uput[-90](4.25,-1){x}
\uput[0](-1,1.25){y}
\rput(0,1){$y=\sin x$}
\psplot[linewidth=2pt,plotpoints=5000,linecolor=red]{-1}{3.5}{10 x exp sin }
\psaxes[xlogBase=10,Ox=-1,Oy=-1]{->}(-1,-1)(4.25,1.25)
\psline[linestyle=dashed](-1,0)(4,0)
\psline[linestyle=dashed](!-1 1)(!90 log 1)(!90 log -1)
\psline[linestyle=dashed](!90 log 1)(!180 log 1)(!180 log -1)
\end{pspicture}
\end{lstlisting}
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-3.5,-2.5)(3.5,2.5)
\psaxes[xlogBase=10]{->}(0,0)(-3.5,-2.5)(3.5,2.5)
\psplot{-2.5}{2.5}{10 x exp log}
\end{pspicture}
\end{LTXexample}
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-3.5,-2.5)(3.5,2.5)
\psaxes[xlogBase=10,Ox={},Oy={}]{->}(0,0)(-3.5,-2.5)(3.5,2.5)
\psplot{-2.5}{2.5}{10 x exp log}
\end{pspicture}
\end{LTXexample}
%------------------------------------------------------------------------------------
\subsection{No logstyle (\nxLkeyword{xylogBase=\{\}})}
%------------------------------------------------------------------------------------
This is only a demonstration that the default option \xLkeyword{xylogBase}=\{\} still works ... :-)
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-3.5,-0.5)(3.5,2.5)
\psplot[linewidth=2pt,linecolor=red,xylogBase={}]{0.5}{3}{x log} % log(x)
\psaxes{->}(0,0)(-3.5,0)(3.5,2.5)
\uput[-90](3.5,0){x}
\uput[180](0,2.5){y}
\rput(2.5,1){$y=\log x$}
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{tickwidth} and \nxLkeyword{subtickwidth}}\label{tickwidth}
%--------------------------------------------------------------------------------------
\begin{center}
{\psset{arrowscale=3,arrows=-D>,yAxis=false}
\psaxes[subticks=8](0,0)(-5,-1)(5,1)\\[1cm]
\psaxes[subticks=4,ticksize=-4pt 0,xlabelPos=top](0,0)(5,1)(-5,-1)\\
\psaxes[subticks=4,ticksize=-10pt 0](0,0)(-5,-5)(5,5)\\[1cm]
\psaxes[subticks=10,ticksize=0 -10pt](0,0)(-5,-5)(5,5)\\[1cm]
\psaxes[subticks=4,ticksize=0 10pt,xlabelPos=bottom](0,0)(5,5)(-5,-5)\\[1cm]
\psaxes[subticks=4,ticksize=0 -10pt,xlabelPos=top](0,0)(5,5)(-5,-5)\\[0.25cm]
\psaxes[subticks=0](0,0)(-5,-5)(5,5)\\[1cm]
\psaxes[subticks=0,tickcolor=red,linecolor=blue,xlabelPos=top](0,0)(5,5)(-5,-5)\\
\psaxes[subticks=5,tickwidth=2pt,subtickwidth=1pt](0,0)(-5,-5)(5,5)\\[1cm]
\psaxes[subticks=0,tickcolor=red,xlabelPos=top](0,0)(5,5)(-5,-5)}
\end{center}
\begin{lstlisting}[xrightmargin=-1.75cm]
\psset{arrowscale=3,arrows=-D>,yAxis=false}
\psaxes[subticks=8](0,0)(-5,-1)(5,1)\\[1cm]
\psaxes[subticks=4,ticksize=-4pt 0,xlabelPos=top](0,0)(5,1)(-5,-1)\\
\psaxes[subticks=4,ticksize=-10pt 0](0,0)(-5,-5)(5,5)\\[1cm]
\psaxes[subticks=10,ticksize=0 -10pt](0,0)(-5,-5)(5,5)\\[1cm]
\psaxes[subticks=4,ticksize=0 10pt,xlabelPos=bottom](0,0)(5,5)(-5,-5)\\[1cm]
\psaxes[subticks=4,ticksize=0 -10pt,xlabelPos=top](0,0)(5,5)(-5,-5)\\[0.25cm]
\psaxes[subticks=0](0,0)(-5,-5)(5,5)\\[1cm]
\psaxes[subticks=0,tickcolor=red,linecolor=blue,xlabelPos=top](0,0)(5,5)(-5,-5)\\
\psaxes[subticks=5,tickwidth=2pt,subtickwidth=1pt](0,0)(-5,-5)(5,5)\\[1cm]
\psaxes[subticks=0,tickcolor=red,xlabelPos=top](0,0)(5,5)(-5,-5)}
\end{lstlisting}
\clearpage
\vspace*{4cm}
\begin{center}
\psset{arrowscale=3,xAxis=false}
\psaxes[subticks=8]{->}(0,0)(-5,-5)(5,5)\hspace{2em}
\psaxes[subticks=4,ylabelPos=right,ylabelPos=left]{->}(0,0)(5,5)(-5,-5)\hspace{4em}
\psaxes[subticks=4,ticksize=0 4pt]{->}(0,0)(-5,-5)(5,5)\hspace{3em}
\psaxes[subticks=4,ticksize=-4pt 0]{->}(0,0)(-5,-5)(5,5)\hspace{1em}
\psaxes[subticks=4,ticksize=0 4pt,ylabelPos=right]{->}(0,0)(5,5)(-5,-5)\hspace{3em}
\psaxes[subticks=4,ticksize=-4pt 0,linecolor=red,ylabelPos=right]{->}(0,0)(5,5)(-5,-5)\hspace{5em}
\psaxes[subticks=0]{->}(0,0)(-5,-5)(5,5)\hspace{1em}
\psaxes[subticks=0,tickcolor=red,linecolor=blue,ylabelPos=right]{->}(0,0)(5,5)(-5,-5)\hspace{5em}
\psaxes[subticks=5,tickwidth=2pt,subtickwidth=1pt]{->}(0,0)(-5,-5)(5,5)\hspace{1em}
\psaxes[subticks=5,tickcolor=red,tickwidth=2pt,%
ticksize=10pt,subtickcolor=blue,subticksize=0.75,ylabelPos=right]{->}(0,0)(5,5)(-5,-5)
\end{center}
\vspace*{5cm}
\begin{lstlisting}[xrightmargin=-1.75cm]
\psset{arrowscale=3,xAxis=false}
\psaxes[subticks=8]{->}(0,0)(-5,-5)(5,5)\hspace{2em}
\psaxes[subticks=4,ylabelPos=right,ylabelPos=left]{->}(0,0)(5,5)(-5,-5)\hspace{4em}
\psaxes[subticks=4,ticksize=0 4pt]{->}(0,0)(-5,-5)(5,5)\hspace{3em}
\psaxes[subticks=4,ticksize=-4pt 0]{->}(0,0)(-5,-5)(5,5)\hspace{1em}
\psaxes[subticks=4,ticksize=0 4pt,ylabelPos=right]{->}(0,0)(5,5)(-5,-5)\hspace{3em}
\psaxes[subticks=4,ticksize=-4pt 0,linecolor=red,ylabelPos=right]{->}(0,0)(5,5)(-5,-5)\hspace{5em}
\psaxes[subticks=0]{->}(0,0)(-5,-5)(5,5)\hspace{1em}
\psaxes[subticks=0,tickcolor=red,linecolor=blue,ylabelPos=right]{->}(0,0)(5,5)(-5,-5)\hspace{5em}
\psaxes[subticks=5,tickwidth=2pt,subtickwidth=1pt]{->}(0,0)(-5,-5)(5,5)\hspace{1em}
\psaxes[subticks=5,tickcolor=red,tickwidth=2pt,%
ticksize=10pt,subtickcolor=blue,subticksize=0.75,ylabelPos=right]{->}(0,0)(5,5)(-5,-5)
\end{lstlisting}
\psset{xyAxes=true}
\begin{LTXexample}[width=5.5cm]
\pspicture(5,5.5)
\psaxes[subticks=4,ticksize=6pt,subticksize=0.5,%
tickcolor=red,subtickcolor=blue]{->}(5.4,5)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=5.5cm]
\pspicture(5,5.5)
\psaxes[subticks=5,ticksize=0 6pt,subticksize=0.5]{->}(5.4,5)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=5.5cm]
\pspicture(5,5.5)
\psaxes[subticks=5,ticksize=-6pt 0,subticksize=0.5]{->}(5.4,5)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=6.5cm]
\pspicture(-3,-3)(3,3.5)
\psaxes[subticks=5,ticksize=0 6pt,subticksize=0.5]{->}(0,0)(3,3)(-3,-3)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=6.5cm]
\pspicture(0,0.5)(-3,-3)
\psaxes[subticks=5,ticksize=-6pt 0,subticksize=0.5,linecolor=red]{->}(-3,-3)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=5.5cm]
\psset{axesstyle=frame}
\pspicture(5,5.5)
\psaxes[subticks=4,tickcolor=red,subtickcolor=blue](5,5)
\endpspicture
\end{LTXexample}
\vspace{1cm}
\begin{LTXexample}[width=5.5cm]
\pspicture(5,5.5)
\psaxes[subticks=5,subticksize=1,subtickcolor=lightgray](5,5)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=5.5cm]
\pspicture(5,5.5)
\psaxes[subticks=2,subticksize=1,subtickcolor=lightgray](5,5)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\pspicture(3,4.5)
\psaxes[subticks=5,ticksize=-7pt 0](3,4)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\pspicture(0,1)(-3,-4)
\psaxes[subticks=5](-3,-4)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\pspicture(3,4.5)
\psaxes[axesstyle=axes,subticks=5](3,4)
\endpspicture
\end{LTXexample}
\begin{LTXexample}[width=3.5cm]
\pspicture(0,1)(-3,-4)
\psaxes[axesstyle=axes,subticks=5,%
ticksize=0 10pt](-3,-4)
\endpspicture
\end{LTXexample}
\subsection{Option \nxLkeyword{psgrid}, \nxLkeyword{gridcoor}, and \nxLkeyword{gridpara}}\label{psgrid}
A simple grid can be set with the optional argument \Lkeyword{psgrid} which uses
the setting of \Lkeyword{gridpara} and \Lkeyword{gridcoor}.
\Lkeyword{gridpara} is preset to
\begin{lstlisting}
\gridpara={gridlabels=0pt,gridcolor=red!30,subgridcolor=green!30,
subgridwidth=0.5\pslinewidth,subgriddiv=5},...
\end{lstlisting}
\begin{LTXexample}[pos=t]
\usepackage{pst-plot}
\psset{llx=-5mm,lly=-5mm,urx=5mm,ury=5mm,labelFontSize=\scriptstyle,
algebraic,plotpoints=200,psgrid,gridcoor={(0,0)(9,4)}}
\begin{psgraph}[linecolor=gray]{->}(0,0)(9,4){10cm}{!}
\psplot[linecolor=NavyBlue]{0}{9}{sqrt(x)}% needs dvipsnames
\psdots(*2 {sqrt(2)})(4,2)(4,0)
\uput[90](*2 {sqrt(2)}){$(x,y)$}\uput[90](4,2){$(4,2)$}\uput[90](4,0){$(4,0)$}
\rput(7,2.2){\textcolor{NavyBlue}{$y=\sqrt{x}$}}
\end{psgraph}
\end{LTXexample}
%$
%------------------------------------------------------------------------------------
\section{New options for \nxLcs{readdata}}\label{ignorelines}
%------------------------------------------------------------------------------------
By default the macro \Lcs{readdata} reads every data record,
which could be annoying when you have some text lines at top of
your data files or when there are more than 10000 records to read.
\LPack{pst-plot} defines two additional keys \Lkeyword{ignoreLines}
and \Lkeyword{nStep}, which allows you to ignore preceeding lines, e.\,g.
\Lkeyword{ignoreLines}=2, or to read only a selected part of the data
records, e.\,g. \Lkeyword{nStep}=10, only every 10\textsuperscript{th}
record is saved.
\begin{lstlisting}
\readdata[ignoreLines=2]{\dataA}{data/stressrawdata.data}
\readdata[nStep=10]{\dataA}{data/stressrawdata.data}
\end{lstlisting}
The default value for \Lkeyword{ignoreLines} is $0$ and for \Lkeyword{nStep} is $1$.
the following data file has two text lines which shall be ignored by the \Lcs{readdata} macro:
\begin{LTXexample}[width=4cm]
\begin{filecontents*}{data/pstricks-add-data9.data}
some nonsense in this line ---time forcex forcey
0 0.2
1 1
2 4
\end{filecontents*}
\readdata[ignoreLines=2]{\data}{data/pstricks-add-data9.data}
\pspicture(2,4)
\listplot[showpoints]{\data}
\psaxes{->}(2,4)
\endpspicture
\end{LTXexample}
%--------------------------------------------------------------------------------------
\section{New options for \nxLcs{listplot}}
%--------------------------------------------------------------------------------------
By default the plot macros \Lcs{dataplot}, \Lcs{fileplot} and \Lcs{listplot} plot every
data record. There are noew additional keys
\Lkeyword{nStep}, \Lkeyword{nStart}, \Lkeyword{nEnd}, and \Lkeyword{xStep}, \Lkeyword{xStart},
\Lkeyword{xEnd}, which allows
to plot only a selected part of the data records, e.\,g. \Lkeyword{nStep}=10. These "`n"'
options mark the number of the record to be plotted ($0,1,2,...$) and the "`x"' ones the x-values of the data records.
The new options are only available
for the \Lcs{listplot} macro, which is not a real limitation, because all data records can be read
from a file with the \Lcs{readdata} macro (see example files or~\cite{dtk02.2:jackson.voss:plot-funktionen}):
\begin{lstlisting}[style=syntax]
\readdata[nStep=10]{\data}{data/data1.data}
\end{lstlisting}
\xLcs{readdata}
The use \Lkeyword{nStep} and \Lkeyword{xStep} options only make real sense
when also using the option \Lkeyset{plotstyle=dots}. Otherwise the
coordinates are connected by a line as usual. Also the
\Lkeyword{xStep} option needs increasing x values. Note that
\Lkeyword{nStep} can be used for \Lcs{readdata} and for
\Lcs{listplot}. If used in both macros then the effect is
multiplied, e.g. \Lcs{readdata} with \Lkeyword{nStep}=5 and
\Lcs{listplot} with \Lkeyword{nStep}=10 means, that only every
50\textsuperscript{th} data record is read and plotted.
When both, \verb|x/yStart/End| are defined then the values are also compared with
both values.
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{nStep}, \nxLkeyword{xStep}, and \nxLkeyword{yStep}}\label{nxstep}
%--------------------------------------------------------------------------------------
The datafile \verb|data.data| contains $1000$ data records. The thin blue line is the plot
of all records with the plotstyle option \Lkeyval{curve}.\xLkeyword{nStep}\xLkeyword{xStep}\xLkeyword{yStep}
\begin{LTXexample}[preset=\centering,pos=t]
\readdata{\data}{data/data.data}
\psset{xunit=12.5cm,yunit=0.2mm}
\begin{pspicture}(-0.080,-30)(1,270)
\pstScalePoints(1,1){1000 div}{1000 div}
\psaxes[Dx=200,dx=2.5cm,Dy=100,ticksize=0 5pt,tickstyle=inner,
subticks=10,ylabelFactor=\cdot10^3,dy=2cm](0,0)(1,250)
\listplot[nStep=50,linewidth=3pt,linecolor=red,plotstyle=dots]{\data}
\listplot[linewidth=1pt,linecolor=blue]{\data}
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[preset=\centering,pos=t]
\readdata{\data}{data/data.data}
\psset{xunit=12.5cm,yunit=0.2mm}
\begin{pspicture}(-0.080,-30)(1,270)
\pstScalePoints(1,1){1000 div}{1000 div}
\psaxes[Dx=200,dx=2.5cm,Dy=100,ticksize=0 5pt,tickstyle=inner,
subticks=10,ylabelFactor=\cdot10^3,dy=2cm](0,0)(1,250)
\listplot[xStep=100,linewidth=2pt,linecolor=red,plotstyle=dots]{\data}
\multido{\rA=0.1+0.1}{9}{%
\psline[linecolor=black!40,linestyle=dashed](\rA,0)(\rA,250)}
\listplot[yStep=50000,linewidth=2pt,linecolor=blue,plotstyle=dots]{\data}
\multido{\nA=50+50}{5}{%
\psline[linecolor=black!40,linestyle=dashed](0,\nA)(1,\nA)}
\listplot[linewidth=0.5pt]{\data}
\end{pspicture}
\end{LTXexample}
\clearpage
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{nStart} and \nxLkeyword{xStart}}\label{nxstart}
%--------------------------------------------------------------------------------------
\begin{LTXexample}[preset=\centering,pos=t]
\readdata{\data}{data/data.data}
\psset{xunit=12.5cm,yunit=0.2mm}
\begin{pspicture}(-0.080,-30)(1,270)
\pstScalePoints(1,1){1000 div}{1000 div}
\psaxes[Dx=200,dx=2.5cm,Dy=100,ticksize=0 5pt,tickstyle=inner,
subticks=10,ylabelFactor=\cdot10^3,dy=2cm](0,0)(1,250)
\listplot[nStart=200,linewidth=3pt,
linecolor=blue,plotstyle=dots]{\data}
\listplot[linewidth=1pt,linecolor=blue]{\data}
\end{pspicture}
\end{LTXexample}
\clearpage
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{nEnd} and \nxLkeyword{xEnd}}\label{nxend}
%--------------------------------------------------------------------------------------
\begin{LTXexample}[preset=\centering,pos=t]
\readdata{\data}{data/data.data}
\psset{xunit=12.5cm,yunit=0.2mm}
\begin{pspicture}(-0.080,-30)(1,270)
\pstScalePoints(1,1){1000 div}{1000 div}
\psaxes[axesstyle=frame,Dx=200,dx=2.5cm,Dy=100,ticksize=0 5pt,tickstyle=inner,
subticks=10,ylabelFactor=\cdot10^3,dy=2cm](0,0)(1,250)
\listplot[nStart=200,linewidth=3pt,
linecolor=blue]{\data}
\listplot[linewidth=1pt,linecolor=blue]{\data}
\end{pspicture}
\end{LTXexample}
\clearpage
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{yStart} and \nxLkeyword{yEnd}}\label{ystartend}
%--------------------------------------------------------------------------------------
\begin{LTXexample}[preset=\centering,pos=t]
\readdata{\data}{data/data.data}
\psset{xunit=12.5cm,yunit=0.2mm}
\begin{pspicture}(-0.080,-30)(1,270)
\pstScalePoints(1,1){1000 div}{1000 div}
\psaxes[axesstyle=frame,Dx=200,dx=2.5cm,Dy=100,ticksize=0 5pt,tickstyle=inner,
ylabelFactor=\cdot10^3,dy=2cm](0,0)(1,250)
\psset{linewidth=0.1pt, linestyle=dashed,linecolor=red}
\psline(0,40)(1,40)
\psline(0,175)(1,175)
\listplot[yStart=40000, yEnd=175000,linewidth=3pt,linecolor=blue,plotstyle=dots]{\data}
\end{pspicture}
\end{LTXexample}
%--------------------------------------------------------------------------------------
\subsection{Options \nxLkeyword{plotNo}, \nxLkeyword{plotNoX}, and \nxLkeyword{plotNoMax}}\label{plotno}
%--------------------------------------------------------------------------------------
By default the plot macros expect \verb+x|y+ data records, but
when having data files with multiple values for y, like:
\begin{lstlisting}[style=syntax]
x y1 y2 y3 y4 ... yMax
x y1 y2 y3 y4 ... yMax
..
\end{lstlisting}
you can select the y value which should be plotted. The option \Lkeyword{plotNo} marks the plotted
value (default $1$) and the option \Lkeyword{plotNoMax} tells \LPack{pst-plot} how many $y$ values are
present. There are no real restrictions in the maximum number for \Lkeyword{plotNoMax}.
We have the following data file:
\begin{lstlisting}[style=syntax]
[% file data.data
0 0 3.375 0.0625
10 5.375 7.1875 4.5
20 7.1875 8.375 6.25
30 5.75 7.75 6.6875
40 2.1875 5.75 5.9375
50 -1.9375 2.1875 4.3125
60 -5.125 -1.8125 0.875
70 -6.4375 -5.3125 -2.6875
80 -4.875 -7.1875 -4.875
90 0 -7.625 -5.625
100 5.5 -6.3125 -5.8125
110 6.8125 -2.75 -4.75
120 5.25 2.875 -0.75
]%
\end{lstlisting}
\noindent which holds data records for multiple plots (\verb+x y1 y2 y3+). This can be plotted
without any modification to the data file:
\begin{LTXexample}[preset=\centering,pos=t]
\readdata\Data{data/dataMul.data}
\psset{xunit=0.1cm, yunit=0.5cm,lly=-0.5cm}
\begin{pspicture}(0,-7.5)(150,10)
\psaxes[Dx=10,Dy=2.5]{->}(0,0)(0,-7.5)(150,7.5)[$\mathbf{x}$,-90][$\mathbf{y}$,0]
\psset{linewidth=2pt,plotstyle=curve}
\listplot[linecolor=green,plotNo=1,plotNoMax=3]{\Data}
\listplot[linecolor=red,plotNo=2,plotNoMax=3]{\Data}
\listplot[linecolor=blue,plotNo=3,plotNoMax=3]{\Data}
\end{pspicture}
\end{LTXexample}
It is also possible to select another column for the $x$-value. Suppose we have
a data base with records like \verb+x y y x y+, then it is by default a record
with one $x$ value and four possible $y$ values. We still have to define
\Lkeyword{plotNoMax}=4. However, it is possible to select the forth value as
new $x$ value by setting \Lkeyword{plotNoX=4} (it is preset to 1).
Then the forth value is taken as $x$. The example uses the the following
data set.
\begin{lstlisting}[style=syntax]
% X1 X2 Y1 Y2
2 55.1500 10.35 11.26
31 59.7167 11.06 11.11
34 65.7167 11.87 10.83
40 62.1833 11.59 11.19
45 56.0500 10.74 11.50
47 68.2667 12.65 11.11
52 69.7500 13.23 11.38
55 76.3333 14.28 11.22
59 75.4000 14.69 11.69
62 78.6000 15.25 11.64
66 69.3167 14.06 12.17
69 77.5500 15.24 11.79
73 70.8833 14.52 12.29
75 60.6167 13.10 12.97
79 68.3833 14.43 12.66
82 56.6833 12.05 12.75
87 95.1333 21.10 13.31
\end{lstlisting}
\begin{LTXexample}[pos=t,preset=\centering]
\readdata{\data}{data/demo.txt}
\psset{xAxisLabel={},yAxisLabel={},llx=-5mm}
\begin{psgraph}[axesstyle=frame,Dy=5,Dx=10,ticksize=5pt 0](0,0)(100,25){10cm}{8cm}
\psset{dotstyle=square,dotscale=1.5,linewidth=1.5pt}
\listplot[plotNoMax=3,plotNo=2,linecolor=red,plotstyle=dots]{\data}
\listplot[plotNoMax=3,plotNoX=2,plotNo=3,linecolor=blue,plotstyle=dots]{\data}
\end{psgraph}
\end{LTXexample}
\clearpage
%--------------------------------------------------------------------------------------
\subsection{Option \nxLkeyword{changeOrder}}\label{changeorder}
%--------------------------------------------------------------------------------------
It is only possible to fill the region between two listplots with
\Lcs{pscustom} if one of them has the values in reverse order.
Otherwise we do not get a closed path. With the option
\Lkeyword{ChangeOrder} the values are used in reverse order:
\begin{LTXexample}[pos=t,preset=\centering]
\begin{filecontents*}{data/test.data}
0 3 8
2 4 7
5 5 5.5
7 3.5 5
10 2 9
\end{filecontents*}
\psset{lly=-.5cm}
\begin{psgraph}[axesstyle=frame,ticklinestyle=dotted,ticksize=0 10](0,0)(10,10){4in}{2in}%
\readdata{\data}{data/test.data}%
\pscustom[fillstyle=solid,fillcolor=blue!40]{%
\listplot[plotNo=2,plotNoMax=2]{\data}%
\listplot[plotNo=1,plotNoMax=2,ChangeOrder]{\data}}
\end{psgraph}
\end{LTXexample}
\clearpage
\section{New plot styles}
%--------------------------------------------------------------------------------------
\subsection{Plot style \nxLkeyword{colordot} and option \nxLkeyword{Hue}}\label{colordot}
%--------------------------------------------------------------------------------------
The plotted dots can be colored with the \Index{HSB} color model, where \Index{Hue}
is set by an angle (0\ldots360) and the values of \Index{Saturation} and \Index{Brightnes}
are set by the relative $y$ value of the data records. The default value for
\Lkeyword{Hue} is 180.
\readdata{\data}{data/data3.data}
\psset{xunit=10,yunit=0.02}
\begin{pspicture}(0,-50)(1.1,400)
\psaxes[dy=1cm,Dy=50]{->}(0,0)(0,-50)(1.1,400)
\listplot[Hue=280,plotstyle=colordots]{\data}
\end{pspicture}
\psset{unit=1cm}
\begin{lstlisting}
\readdata{\data}{data/data3.data}
\psset{xunit=10,yunit=0.02}
\begin{pspicture}(0,-50)(1.1,400)
\psaxes[dy=1cm,Dy=50]{->}(0,0)(0,-50)(1.1,400)
\listplot[?\ON?Hue=280?\OFF?,plotstyle=?\ON?colordots?\OFF?]{\data}
\end{pspicture}
\end{lstlisting}
\clearpage
%--------------------------------------------------------------------------------------
\subsection{Plot style \nxLkeyword{bar} and option \nxLkeyword{barwidth}}\label{barwidth}
%--------------------------------------------------------------------------------------
This option allows you to draw bars for the data records. The
width of the bars is controlled by the option \Lkeyword{barwidth},
which is set by default to value of \verb+0.25cm+, which is the
total width.
\def\barData{
0 0.03
1 0.11
2 0.28
3 0.84
4 6.70
5 8.55
6 8.77
7 11.09
8 7.18
9 6.20
10 5.78
11 4.19
12 2.37
13 2.26
14 1.68
15 1.03
16 1.37
17 1.34
18 0.92
19 0.67
20 0.87
21 1.20
22 1.98
23 3.99
24 5.08
25 5.17
26 5.78
27 4.44
28 0.11
}
\begin{LTXexample}[preset=\centering,pos=t]
\psset{xunit=.44cm,yunit=.3cm}
\begin{pspicture}(-2,-3)(29,13)
\psaxes[axesstyle=axes,Ox=1466,Oy=0,Dx=4,Dy=2,xticksize=-6pt 0,
ylabelFactor={\,\%}]{-}(29,12)
\listplot[shadow=true,linecolor=blue,plotstyle=bar,barwidth=0.3cm,
fillcolor=red,fillstyle=solid]{\barData}
\rput{90}(-3,6.25){Amount}
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[preset=\centering,pos=t]
\psset{xunit=.44cm,yunit=.3cm}
\begin{pspicture}(-2,-3)(29,13)
\psaxes[axesstyle=axes,Ox=1466,Oy=0,Dx=4,Dy=2,ticksize=-4pt 0,
ylabelFactor={\,\%}]{-}(29,12)
\listplot[linecolor=blue,plotstyle=bar,barwidth=0.3cm,
fillcolor=red,fillstyle=crosshatch]{\barData}
\rput{90}(-3,6.25){Amount}
\end{pspicture}
\end{LTXexample}
\begin{LTXexample}[preset=\centering,pos=t]
\psset{xunit=.44cm,yunit=.3cm}
\begin{pspicture}(-2,-3)(29,13)
\psaxes[axesstyle=axes,Ox=1466,Oy=0,Dx=4,Dy=2,ticksize=-4pt 0,
ylabelFactor={\,\%}]{-}(29,12)
\listplot[linecolor=blue,plotstyle=bar,barwidth=0.3cm,
fillcolor=red,fillstyle=vlines]{\barData}
\listplot[showpoints=true]{\barData}
\rput{90}(-3,6.25){Amount}
\end{pspicture}
\end{LTXexample}
\subsubsection{Interrupted bar plot}
The new keywords \Lkeyword{interrupt} takes three comma separated values:
the value, when the interrupted $y$ axis is interruptes, the separation for the
drawn tilde and the value for the inrrupted section, e.g. \verb|interrupt={15,1,30}|.
\psset{xunit=.44cm,yunit=.3cm}
\begin{pspicture}(-2,-3)(29,32)
\psaxes[axesstyle=axes,ticksize=-4pt 0,Dy=2,Dx=2](29,15)
\rput(0,15.4){\textbf{\huge$\approx$}}
\rput(0,16){\psaxes[xAxis=false,ticksize=-4pt 0,
Dy=2,Oy=46,Dx=2](29,15)}
\psset{interrupt={15,1,30}}
\listplot[linecolor=red,plotstyle=bar,barwidth=0.3cm,
fillcolor=red!30,fillstyle=solid]{
0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 10 2
11 1 12 50 13 55 14 14 15 7 16 9 17 7 18 4
19 2 20 3 21 0 22 0 23 0 24 1 25 2 % 1st example
}
\listplot[linecolor=blue,plotstyle=bar,barwidth=0.3cm,
fillcolor=blue!30,fillstyle=solid,opacity=0.5]{
0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 3 10 10
11 11 12 8 13 61 14 10 15 13 16 3 17 1 18 0
19 0 20 2 21 0 22 0 23 0 24 0 25 0 % 2nd exa
}
\listplot[linecolor=green,plotstyle=bar,barwidth=0.3cm,
fillcolor=green!30,fillstyle=solid,opacity=0.5]{
0 0 1 0 2 0 3 0 4 1 5 0 6 0 7 0 8 0 9 3 10 4
11 11 12 59 13 11 14 12 15 7 16 3 17 1 18 0
19 0 20 2 21 0 22 1 23 0 24 0 25 0 % 3rd exa
}
\end{pspicture}
\begin{lstlisting}
\psset{xunit=.44cm,yunit=.3cm}
\begin{pspicture}(-2,-3)(29,32)
\psaxes[axesstyle=axes,ticksize=-4pt 0,Dy=2,Dx=2](29,15)
\rput(0,15.4){\textbf{\huge$\approx$}}
\rput(0,16){\psaxes[xAxis=false,ticksize=-4pt 0,
Dy=2,Oy=46,Dx=2](29,15)}
\psset{interrupt={15,1,30}}
\listplot[linecolor=red,plotstyle=bar,barwidth=0.3cm,
fillcolor=red!30,fillstyle=solid]{
0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 10 2
11 1 12 50 13 55 14 14 15 7 16 9 17 7 18 4
19 2 20 3 21 0 22 0 23 0 24 1 25 2 % 1st example
}
\listplot[linecolor=blue,plotstyle=bar,barwidth=0.3cm,
fillcolor=blue!30,fillstyle=solid,opacity=0.5]{
0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 3 10 10
11 11 12 8 13 61 14 10 15 13 16 3 17 1 18 0
19 0 20 2 21 0 22 0 23 0 24 0 25 0 % 2nd exa
}
\listplot[linecolor=green,plotstyle=bar,barwidth=0.3cm,
fillcolor=green!30,fillstyle=solid,opacity=0.5]{
0 0 1 0 2 0 3 0 4 1 5 0 6 0 7 0 8 0 9 3 10 4
11 11 12 59 13 11 14 12 15 7 16 3 17 1 18 0
19 0 20 2 21 0 22 1 23 0 24 0 25 0 % 3rd exa
}
\end{pspicture}
\end{lstlisting}
\psset{unit=1cm}
%--------------------------------------------------------------------------------------
\subsection{Plot style \nxLkeyword{ybar}}\label{options:ybar}
%--------------------------------------------------------------------------------------
With the setting \Lkeyset{plotstyle=ybar} the graph is set with horizontal bars instead
of vertical. For \Lkeyword{yLabels} see section~\ref{yLabels}.
\begin{center}
\savedata{\data}[1 1 1 2 1 3 2 4 3 5 4 6 4 7 6 8 6 9 7 10 25 11 30 12 32 13]
\psset{llx=-1.5cm,lly=-1.5cm,xAxisLabel=\textbf{Frequency of Winning the Final},
xAxisLabelPos={c,-1cm},yAxisLabel=,yLabels={,Kerry,Laois,London,Waterford,Clare,Offaly,
Galway,Wexford,Dublin,Limerick,Tipperary,Cork,Kilkenny}}
\begin{psgraph}[axesstyle=frame,labels=x,ticksize=-4pt 0,Dx=5](0,0)(35,14){10cm}{7cm}
\listplot[plotstyle=ybar,fillcolor=blue!20,linecolor=blue,barwidth=4mm,fillstyle=solid]{\data}
\listplot[plotstyle=xvalues,labelsep=5pt]{\data}
\end{psgraph}
\end{center}
\begin{lstlisting}
\savedata{\data}[1 1 1 2 1 3 2 4 3 5 4 6 4 7 6 8 6 9 7 10 25 11 30 12 32 13]
\psset{llx=-1.5cm,lly=-1.5cm,xAxisLabel=\textbf{Frequency of Winning the Final},
xAxisLabelPos={c,-1cm},yAxisLabel=,yLabels={,Kerry,Laois,London,Waterford,Clare,Offaly,
Galway,Wexford,Dublin,Limerick,Tipperary,Cork,Kilkenny}}
\begin{psgraph}[axesstyle=frame,labels=x,ticksize=-4pt 0,Dx=5](0,0)(35,14){10cm}{7cm}
\listplot[plotstyle=ybar,fillcolor=blue!20,linecolor=blue,barwidth=4mm,fillstyle=solid]{\data}
\listplot[plotstyle=xvalues,labelsep=5pt]{\data}
\end{psgraph}
\end{lstlisting}
%--------------------------------------------------------------------------------------
\subsection{Plotstyle \nxLkeyval{LSM}}\label{LSM}
%--------------------------------------------------------------------------------------
With the setting \Lkeyset{plotstyle=LSM} (\textbf{L}east \textbf{S}quare \textbf{Method})\index{Least square method}
the data records are not printed in the usual way as dots or a line,
the \Lcs{listplot} macro calculates the values for a line $y=v\cdot x+u$ which fits
best all data records.
\bgroup
\centering
\psset{lly=-.5cm}
\begin{filecontents*}[force]{data/LSM.data}
0 1 1 3 2.8 4 3 2.9 2 5 4 4 5 5.5 6 8.2 8 7
\end{filecontents*}
\readdata{\data}{data/LSM.data}
\begin{psgraph}[arrows=->](0,0)(0,0)(8,8){.5\textwidth}{!}
\listplot[plotstyle=dots]{\data}
\listplot[plotstyle=LSM,linecolor=red]{\data}
\end{psgraph}
\egroup
\begin{lstlisting}
\begin{filecontents*}[force]{data/LSM.data}
0 1 1 3 2.8 4 3 2.9 2 5 4 4 5 5.5 6 8.2 8 7
\end{filecontents*}
\psset{lly=-.5cm}
\readdata{\data}{data/LSM.data}
\begin{psgraph}[arrows=->](0,0)(0,0)(8,8){.5\textwidth}{!}
\listplot[plotstyle=dots]{\data}
\listplot[?\ON?plotstyle?\OFF?=?\ON?LSM?\OFF?,linecolor=red]{\data}
\end{psgraph}
\end{lstlisting}
The macro looks for the lowest and biggest x-value and draws the
line for this interval. It is possible to pass other values to the
macro by setting the \Lkeyword{xStart} and/or \Lkeyword{xEnd} options.
They are preset with an empty value \verb+{}+.
\bgroup
\centering
\readdata{\data}{data/LSM.data}
\psset{lly=-1.75cm}
\begin{psgraph}[arrows=->](0,0)(0,0)(8,8){.5\textwidth}{!}
\listplot[plotstyle=dots]{\data}
\listplot[PstDebug=1,plotstyle=LSM,xStart=-0.5,xEnd=8.5,linecolor=red]{\data}
\end{psgraph}
\egroup
\begin{lstlisting}
\readdata{\data}{data/LSM.data}
\psset{lly=-1.75cm}
\begin{psgraph}[arrows=->](0,0)(0,0)(8,8){.5\textwidth}{!}
\listplot[plotstyle=dots]{\data}
\listplot[?\ON?PstDebug?\OFF?,plotstyle=?\ON?LSM?\OFF?,?\ON?xStart?\OFF?=-0.5,?\ON?xEnd?\OFF?=8.5,linecolor=red]{\data}
\end{psgraph}
\end{lstlisting}
With \Lkeyword{PstDebug} one gets the equation $y=v\cdot x+u$
printed, beginning at the position (0|-50pt). This cannot be
changed, because it is only for some kind of debugging. Pay
attention for the correct \Lkeyword{xStart} and \Lkeyword{xEnd} values,
when you use the \Lcs{pstScalePoints} Macro. In the following
example we use an x-interval from 0 to 3 to plot the values; first
we subtract 0.003 from all x-values and then scale them with
10000. This is not taken into account for the \Lkeyword{xStart} and
\Lkeyword{xEnd} values.
\bgroup
\centering
\readdata{\data}{data/LSM2.data}
\pstScalePoints(10000,1){ 0.003 sub }{}
\psset{lly=-1.75cm}
\psgraph[arrows=->,Ox=0.0030,Dx=0.0001,dx=\psxunit](0,0)(3.2,3){10cm}{5cm}
\listplot[showpoints=true,linewidth=1pt,linecolor=blue]{\data}
\listplot[PstDebug=1,plotstyle=LSM,linewidth=0.1pt,linestyle=dashed,%
xStart=-0.25,xEnd=3.3]{\data}
\endpsgraph
\egroup
\begin{lstlisting}
\begin{filecontents*}{data/LSM2.data}
0.003298697 1.397785583
0.003193358 1.615489564
0.003094538 2.044019006
0.003001651 2.259240127
\end{filecontents*}
\readdata{\data}{data/LSM2.data}
?\ON?\pstScalePoints?\OFF?(10000,1){ 0.003 sub }{}
\psset{lly=-1.75cm}
\psgraph[arrows=->,Ox=0.0030,Dx=0.0001,dx=\psxunit](0,0)(3.2,3){10cm}{5cm}
\listplot[showpoints=true,linewidth=1pt,linecolor=blue]{\data}
\listplot[PstDebug=1,plotstyle=?\ON?LSM?\OFF?,linewidth=0.1pt,linestyle=dashed,%
xStart=-0.25,xEnd=3.3]{\data}
\endpsgraph
\end{lstlisting}
\clearpage
\subsection{Plotstyles \nxLkeyval{values} and \nxLkeyval{values*}}\label{values}
Instead of plotting the curve with the setting \Lkeyset{plotstyle=values}
the $y$-values are printed at the current point.
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-3.5,-.5)(3.5,9.5)
\psaxes{->}(0,0)(-3,0)(3,9)
\psplot{-3}{3}{x dup mul }
\psplot[plotstyle=values]{-3}{3}{x dup mul }
\end{pspicture}
\end{LTXexample}
The possible optional arguments are \Lkeyword{PSfont},\Lkeyword{valuewidth},
\Lkeyword{fontscale}, and \Lkeyword{decimals}. The default setting is:
\begin{Xverbatim}{}
\psset[pst-plot]{PSfont=Times-Roman,fontscale=10,valuewidth=10,decimals=-1}
\end{Xverbatim}
The optional argument \Lkeyword{rot} from the base package \LPack{pstricks} is also taken into account.
With the star version \Lkeyset{plotstyle=values*} the box of the printed value isn't transparent,
everything behind this box is not seen.
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-3.5,-.5)(3.5,9.5)
\psaxes{->}(0,0)(-3,0)(3,9)
\psplot{-3}{3}{x dup mul }
\psplot[plotstyle=values*]{-3}{3}{x dup mul }
\end{pspicture}
\end{LTXexample}
\subsection{Plotstyles \nxLkeyval{xvalues} and \nxLkeyval{xvalues*}}\label{xvalues}
This is similiar to the options \Lkeyval{values}, except that it plots the $x$-values
instead of the $y$-values. This maybe useful when also using the plotstyle \Lkeyval{ybar}
(see~Section\vref{options:ybar}).
\medskip
\begin{LTXexample}[width=7cm]
\begin{pspicture}(-2.5,-.5)(2.5,5.5)
\psaxes{->}(0,0)(-2,0)(2,5.5)
\psplot{-2}{2}{x dup mul }
\psplot[plotstyle=xvalues,
plotpoints=10]{-2}{2}{x dup mul }
\end{pspicture}
\end{LTXexample}
\clearpage
%--------------------------------------------------------------------------------------
\section{Polar plots}\label{polarplots}
%--------------------------------------------------------------------------------------
With the option \Lkeyword{polarplot}=\false|\true\ it is possible to use any plot command %\Lcs{psplot}
in polar mode:
\begin{BDef}
\Lcs{ps????plot}\OptArg{polarplot,...}\Largb{<start angle>}\Largb{<end angle>}\%\\
\OptArg{PS command}\Largb{<r(alpha)>}
\end{BDef}
The equation in PostScript code is interpreted as a function $r=f(\alpha)$, e.g. for the
circle with radius 1 as $r=\sqrt{\sin^2x+\cos^2x}$, or $r=a*\dfrac{sin(x)*cos(x)}{(sin(x)^3+cos(x)^3)}$
for the following examples:
\begin{lstlisting}[style=syntax]
x sin dup mul x cos dup mul add sqrt
\end{lstlisting}
\medskip
\begin{LTXexample}[pos=t]
\psset{plotpoints=200,unit=0.75}
\begin{pspicture*}(-5,-5)(5.1,5.1)
\psaxes[arrowlength=1.75,ticksize=2pt,labelFontSize=\scriptstyle,
linewidth=0.2mm]{->}(0,0)(-4.99,-4.99)(5,5)[x,-90][y,180]
\rput[Br](-.15,-.35){$0$} \psset{linewidth=.35mm,polarplot}
\psplot[linecolor=red]{140}{310}{3 neg x sin mul x cos mul x sin 3 exp x cos 3 exp add div}
\psplot[linecolor=cyan]{140}{310}{6 x sin mul x cos mul x sin 3 exp x cos 3 exp add div}
\psplot[linecolor=blue,algebraic]{2.44}{5.41}{-8*sin(x)*cos(x)/(sin(x)^3+cos(x)^3)}
\end{pspicture*}
\end{LTXexample}
\medskip
\begin{LTXexample}[pos=t]
\psset{unit=0.5cm}
\begin{pspicture}(-6,-6)(6,6)
\psaxes[axesstyle=polar,labelFontSize=\scriptstyle,linewidth=0.2mm]{->}(6,6)
\psset{linewidth=3pt,polarplot,plotpoints=500,plotstyle=curve}
\psclip{\pscircle[linestyle=none]{6}}
\psplot[linecolor=red]{140}{310}{3 neg x sin mul x cos mul x sin 3 exp x cos 3 exp add div}
\psplot[linecolor=cyan]{140}{310}{6 x sin mul x cos mul x sin 3 exp x cos 3 exp add div}
\psplot[linecolor=blue,algebraic]{2.44}{5.41}{-8*sin(x)*cos(x)/(sin(x)^3+cos(x)^3)}
\endpsclip
\end{pspicture}
\end{LTXexample}
\medskip
\begin{LTXexample}[width=5cm]
\psset{plotpoints=200,unit=1}
\begin{pspicture}(-2.5,-2.5)(2.5,2.5)% Ulrich Dirr
\psaxes[arrowlength=1.75,%
ticksize=2pt,linewidth=0.17mm]{->}%
(0,0)(-2.5,-2.5)(2.5,2.5)[$x$,-90][$y$,180]
\rput[Br](-.15,-.35){$0$}
\psset{linewidth=.35mm,plotstyle=curve,polarplot}
\psplot[linecolor=red]{0}{360}{x cos 2 mul x sin mul}
\psplot[linecolor=green]{0}{360}{x cos 3 mul x sin mul}
\psplot[linecolor=blue]{0}{360}{x cos 4 mul x sin mul}
\end{pspicture}
\end{LTXexample}
\medskip
\begin{LTXexample}[width=8cm]
\psset{plotpoints=200,unit=0.5}
\begin{pspicture}(-8.5,-8.5)(9,9)% Ulrich Dirr
\psaxes[Dx=2,dx=2,Dy=2,dy=2,arrowlength=1.75,
ticksize=2pt,linewidth=0.17mm]{->}(0,0)(-8.5,-8.5)(9,9)
\rput[Br](9,-.7){$x$}
\rput[tr](-.3,9){$y$}
\rput[Br](-.3,-.7){$0$}
%
\psset{linewidth=.35mm,plotstyle=curve,polarplot}
\psplot[linecolor=blue]{0}{720}{8 2.5 x mul sin mul}
\end{pspicture}
\end{LTXexample}
\clearpage
\section{New macros}
\subsection{\nxLcs{psCoordinates}}
\begin{BDef}
\Lcs{psCoordinates}\OptArgs\Largr{\CAny}
\end{BDef}
A special optional argument is \Lkeyword{markPoint} which is preset to \texttt{true}. With
\Lkeyword{showpoints} one can set all three points with the same symbol: start point, curve point, and end point.
\medskip
\begin{LTXexample}[pos=t]
\begin{pspicture}(-5mm,-1cm)(10,10)
\psaxes{->}(10,10)
\psplot[algebraic,linecolor=red,linewidth=2pt]{0}{10}{x^2/10}
\psCoordinates(*1.5 {x^2/10})
\psCoordinates[showpoints](*2.2 {x^2/10})
\psCoordinates[linecolor=blue,linestyle=dashed,
dotstyle=square,dotscale=2](*4 {x^2/10})
\psCoordinates[arrowscale=1.5,arrows=->,markPoint=false](*6 {x^2/10})
\psCoordinates[linecolor=blue,linewidth=0.3pt,
dotstyle=x,dotscale=2,showpoints](*7 {x^2/10})
\psCoordinates[arrows=->,linecolor=blue,linestyle=dotted,
dotstyle=triangle,dotscale=2,showpoints](*8 {x^2/10})
\psCoordinates[dotscale=2](*9 {x^2/10})
\end{pspicture}
\end{LTXexample}
\clearpage
\subsection{\nxLcs{psFixpoint}}
\begin{BDef}
\Lcs{psFixpoint}\OptArgs\Largb{$x_0$}\Largb{$f(x)$}\Largb{$n$}
\end{BDef}
$x_0$ is the start value of the iteration, $f(x)$ the function, which can either be in
postfix or algebraic notation, for the latter it needs the optional argument \Lkeyword{algebraic}.
The number of the iteration is given by $n$.
\medskip
\begin{LTXexample}[pos=t]
\begin{pspicture}[algebraic](-5mm,-1cm)(10,10)
\psaxes{->}(10,10)
\psplot[linecolor=red,linewidth=2pt]{0}{10}{sqrt(5*x)}
\psline(10,10)
\psFixpoint[linecolor=blue]{9.5}{sqrt(5*x)}{20}
\psFixpoint[linestyle=dashed]{1}{sqrt(5*x)}{20}
\end{pspicture}
\end{LTXexample}
\clearpage
\subsection{\nxLcs{psNewton}}
\begin{BDef}
\Lcs{psNewton}\OptArgs\Largb{$x_0$}\Largb{$f(x)$}\OptArg*{\Largs{f'(x)}}\Largb{$n$}
\end{BDef}
If the optional derivation of the function $f(x)$ is missing, then the macro itself
calculates the derivation with an interval of $\pm0.01$. It can be changed by setting
the optional argument \Lkeyword{VarStepEpsilon} to another value. If the derivation
is also given as a function, it is used without any check for the values.
\medskip
\begin{LTXexample}[pos=t]
\def\f{1/5*x^3-x^2}
\psset{plotpoints=2000,algebraic}
%
\begin{pspicture*}[showgrid](-5.5,-8.5)(7.5,3.5)
\psaxes{->}(0,0)(-5,-8)(7,3)[$x$,270][$y$,0]
\psplot[linewidth=2pt,linecolor=blue]{-5}{8}{\f}
\uput[90](2.95,0){$x_0$}\uput[90](3.9,0){$x_0$}
\psNewton[linecolor=red,linewidth=0.5pt]{2.95}{\f}{10}
\psNewton[showpoints,linestyle=dashed]{3.9}{\f}{8}
\end{pspicture*}
\end{LTXexample}
$x_0$ is the start value of the iteration, $f(x)$ the function, which can either be in
postfix or algebraic notation, for the latter it needs the optional argument \Lkeyword{algebraic}.
The number of the iteration is given by $n$. All defined plotstyles can be used, but there
maybe PostScript errors for \Lkeyset{plotstyle=values} if the number of steps is too
big. In such a case decrease the number of steps.
\medskip
\begin{LTXexample}[pos=t]
\def\f{-(1/192)*x^3-(1/12)*x-(1/192)*Pi*x^2-(1/12)*Pi+2}
\def\fDerive{-(3/192)*x^2-(1/12)-(2/192)*Pi*x}
\psset{plotpoints=2000,unit=0.5,algebraic}
%
\begin{pspicture*}[showgrid](-16,-5)(8.5,18.5)
\psaxes[Dx=6,Dy=4]{->}(0,0)(-16,-5)(8,18)[$x$,270][$y$,0]
\psplot[algebraic,linewidth=2pt,linecolor=blue]{-20}{8}{\f}
\psxTick(-15){x_0}
\psNewton[linecolor=red,linewidth=0.5pt]{-15}{\f}{12}
\psNewton[linecolor=red,linewidth=0.5pt,plotstyle=xvalues,showDerivation=false]{-15}{\f}{6}
%
%-15, -9.567466932, -4.903526029, 3.026073041, 6.688396612, 5.580230655 (Made by Maple)
\end{pspicture*}
\end{LTXexample}
\clearpage
\subsection{\nxLcs{psVectorfield}}
\begin{BDef}
\Lcs{psVectorfield}\OptArgs\Largr{$x_0,y_0$}\Largr{$x_1,y_1$}\Largb{$f'(x,y)$}
\end{BDef}
$f'(x,y)$ can be in Postfix notation or with option \Lkeyword{algebraic} in
Infix notation. The $\Delta x$ and $\Delta y$ are given by \Lkeyword{Dx} and
\Lkeyword{Dy} and preset to 0.1, the length of the arrow lines is relative
and internally set by \texttt{1/}\Lkeyword{Ox} with a preset of \texttt{Ox=3}.
\medskip
\begin{center}
\includegraphics{data/\jobname}
\end{center}
\begin{lstlisting}
%\usepackage{pst-ode}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%solve dy/dx=x^2 + y^2 - 1 numerically for different initial values of y in the
%interval x=[-1.1,1.1]; store resulting data points as tables into Postscript
%objects
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\psset{unit=3cm}
\begin{pspicture}(-1.2,-1.2)(1.1,1.1)
\psaxes[ticksize=0 4pt,axesstyle=frame,tickstyle=inner,subticks=20,
Ox=-1,Oy=-1](-1,-1)(1,1)
\psset{arrows=->,algebraic}
\psVectorfield[linecolor=black!60](-0.9,-0.9)(0.9,0.9){ x^2+y^2-1 }
%y0_a=-0.5
\pstODEsolve[algebraicOutputFormat]{y0_a}{t | x[0]}{-1}{1}{100}{-0.5}{t^2+x[0]^2-1}
%y0_b=0.0
\pstODEsolve[algebraicOutputFormat]{y0_b}{t | x[0]}{-1}{1}{100}{0.0}{t^2+x[0]^2-1}
%y0_c=0.5
\pstODEsolve[algebraicOutputFormat]{y0_c}{t | x[0]}{-1}{1}{100}{0.5}{t^2+x[0]^2-1}
\psset{arrows=-}%
\listplot[linecolor=red, linewidth=1pt]{y0_a}
\listplot[linecolor=green,linewidth=1pt]{y0_b}
\listplot[linecolor=blue, linewidth=1pt]{y0_c}
\end{pspicture}
\end{lstlisting}
\section{Internals}
The last pair of coordinates of \Lcs{psplot} and \Lcs{psparametricplot}
is saved in a PostScript array and can be used as \verb|FinalState|
inside PostScript code.
\medskip
\begin{LTXexample}[pos=t]
\psset{unit=2}
\begin{pspicture}(0,-1)(3,0.5)
\pscustom[linejoin=1,arrows=->]{%
\psline(0,-1)(1,0)
\psplot[algebraic,plotpoints=100]{1}{2.25}{.25*sin(2*Pi*x/.25)}
\psline(3,0)
}
%
\pscustom[linejoin=1,arrows=->,linecolor=red]{%
\psline(0,-1)(1,0)
\psplot[algebraic,plotpoints=100]{1}{2.25}{.25*sin(2*Pi*x/.25)}
\psline(! FinalState aload pop )(3,0)
}
\end{pspicture}
\end{LTXexample}
\clearpage
\section{List of all optional arguments for \texttt{pst-plot}}
\xkvview{family=pst-plot,columns={key,type,default}}
\nocite{*}
\bgroup
\RaggedRight
%\bibliographystyle{plain}
\printbibliography
\egroup
\printindex
\end{document}