From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- .../pstricks/contrib/pst-plot/doc/pst-plot-doc.tex | 3751 ++++++++++++++++++++ 1 file changed, 3751 insertions(+) create mode 100644 graphics/pstricks/contrib/pst-plot/doc/pst-plot-doc.tex (limited to 'graphics/pstricks/contrib/pst-plot/doc/pst-plot-doc.tex') diff --git a/graphics/pstricks/contrib/pst-plot/doc/pst-plot-doc.tex b/graphics/pstricks/contrib/pst-plot/doc/pst-plot-doc.tex new file mode 100644 index 0000000000..00617d6ad3 --- /dev/null +++ b/graphics/pstricks/contrib/pst-plot/doc/pst-plot-doc.tex @@ -0,0 +1,3751 @@ +% $Id: pst-plot-doc.tex 1056 2019-05-17 07:39:59Z herbert $ +\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings + headexclude,footexclude,oneside,dvipsnames,svgnames]{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} + +\maketitle + + +\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{http://mirrors.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; +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, +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=} +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{}\%\\ +\qquad\Largr{xOrig,yOrig}\Largr{xMin,yMin}\Largr{xMax,yMax}\Largb{xLength}\Largb{yLength}\\ +\ldots\\ +\Lcs{endpsgraph}\\[10pt] +\LBEG{psgraph}\OptArgs\Largb{}\%\\ +\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 \Lcs{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 \Lcs{pslegend@ii}. +\item If you want to use more than two columns for the table or a shadow box, then redefine \Lcs{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 \Lcs{pst@@@hlabel} and +\Lcs{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 & \{\Lcs{@empty}\} & \pageref{psgraphoptions}\\ +\Lkeyword{xAxisLabelPos} & (x,y) or empty & \{\Lcs{@empty}\} & \pageref{psgraphoptions}\\ +\Lkeyword{xDecimals} & integer or empty & \{\} & \pageref{xydecimals}\\%ok +\Lkeyword{xEnd} & integer or empty & \{\} & \pageref{nxend}\\ +\Lkeyword{xLabels} & list & \{\Lcs{empty}\} & \pageref{xLabels}\\ +\Lkeyword{xlabelFactor} & anything & \{\Lcs{@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 & \{\Lcs{@empty}\} & \pageref{psgraphoptions}\\ +\Lkeyword{yAxisLabelPos} & (x,y) or empty & \{\Lcs{@empty}\} & \pageref{psgraphoptions}\\ +\Lkeyword{yDecimals} & integer or empty & \{\} & \pageref{xydecimals}\\%ok +\Lkeyword{yEnd} & integer or empty & \{\} & \pageref{ystartend}\\ +\Lkeyword{yLabels} & list & \{\Lcs{empty}\} & \pageref{xLabels}\\ +\Lkeyword{ylabelFactor} & literal & \{\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} & & 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 ${\cdot 10^{}}$. 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= +\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= +xDecimals= +yDecimals= +\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= +xsubticks= +ysubticks= +\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= +xtickcolor= +ytickcolor= +subtickcolor= +xsubtickcolor= +ysubtickcolor= +\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. + +\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} + +\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} +\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*}{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{}\Largb{}\%\\ + \OptArg{PS command}\Largb{} +\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} -- cgit v1.2.3