diff options
author | Karl Berry <karl@freefriends.org> | 2010-09-19 16:18:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-09-19 16:18:29 +0000 |
commit | 96b0b0d816058a1ec98b27f72d6bd57a82e5bf5d (patch) | |
tree | bf4564ef02357935f01e4a31eaa816b33a990e19 /Master/texmf-dist | |
parent | 77215650a9e7341885b43f4abd9c747055caca1c (diff) |
numericplots (minus matlab)
git-svn-id: svn://tug.org/texlive/trunk@19805 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/BasicFunctionality.tex | 632 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/FurtherExamples.tex | 196 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/License.txt | 674 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/MultiplePlots.tex | 180 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/NumericPlots.pdf | bin | 0 -> 108189 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/NumericPlotsDoc.tex | 171 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/README.TEXLIVE | 11 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/README.doc | 30 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/TechnicalDetails.tex | 135 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/TestPlots.tex | 122 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/history.tex | 62 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/numericplots/options.tex | 28 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/numericplots/NumericPlots.sty | 1054 |
13 files changed, 3295 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/numericplots/BasicFunctionality.tex b/Master/texmf-dist/doc/latex/numericplots/BasicFunctionality.tex new file mode 100644 index 00000000000..b738a0e4789 --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/BasicFunctionality.tex @@ -0,0 +1,632 @@ +% Copyright 2010 Thomas König, Alexander Michel +% +% This file is part of NumericPlots. +% +% NumericPlots is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% any later version. +% +% NumericPlots is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + +\part{Using the package} + +\section{Basic Functionality} + +The package NumericPlots\\ +\verb+\usepackage{NumericPlots}+ +\\ +is intended to be used to plot numeric data which +may, e.g., be exported from Matlab by export2latex.m. The data must be defined +in the form +\begin{verbatim} + \def\IdentI{ + 1.0 1.0e2 + 1.1 11e1 + 1.2 1.25e2 + 1.3 110 + 1.4 100 + 1.5 90 + 1.6 80 + } +\end{verbatim} +\def\IdentI{ + 1.0 1.0e2 + 1.1 11e1 + 1.2 1.25e2 + 1.3 110 + 1.4 100 + 1.5 90 + 1.6 80 + } +\def\IdentII{ + 1.0 125 + 1.05 100 + 1.1 75 + 1.15 85 + 1.2 90 + 1.3 115 + 1.4 130 + 1.5 125 + 1.6 120 + } +\def\LogData{ + 6 6 + 10 10 + 20 20 + 30 30 + 40 40 + 50 50 + 60 60 + 70 70 + 80 80 + 90 90 + 100 100 + 200 200 + 300 300 + 400 400 + 500 500 + 600 600 + 700 700 + 800 800 + 900 900 + 1000 1000 + 1100 1100 + 1200 1200 + 1300 1300 + 1400 1400 + 1500 1500 +} +where the first column contains the x, the second column the y-data. + +\subsection{plots} + +% \begin{LTXExample} +% \begin{NumericDataPlot}{\textwidth}{5cm} +% \setxAxis{xMin=1, xMax=2, Dx=0.1} +% \setyAxis{yMin=50, yMax=150, Dy=25} +% +% \plotxAxis{x-axis label} +% \plotyAxis{y-axis label} +% +% \listplot[style=StdLineStyA]{\IdentI} +% \end{NumericDataPlot} +% \end{LTXExample} + +The easiest plot may be done by +\begin{verbatim} + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=-1, xMax=2, Dx=0.5} + \setyAxis{yMin=-50, yMax=150, Dy=25} + + \plotxAxis{x-axis label} + \plotyAxis{y-axis label} + + \listplot[style=StdLineStyA]{\IdentI} + \end{NumericDataPlot} +\end{verbatim} +\begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=-1, xMax=2, Dx=0.5, xO=0} + \setyAxis{yMin=-50, yMax=150, Dy=25, yO=0} + + \plotxAxis{x-axis label} + \plotyAxis{y-axis label} + + \listplot[style=StdLineStyA]{\IdentI} +\end{NumericDataPlot} + +if you want to add a legend, you simply call + +\begin{minipage}{0.5\linewidth} +\begin{verbatim} +\LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI +} +\end{verbatim} +\end{minipage}\begin{minipage}{0.5\linewidth} +\centering +\LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI +} +\end{minipage} + +To plot multiple data in one plot call \newline +\begin{minipage}[T]{0.5\linewidth} + \begin{verbatim} + \begin{NumericDataPlot} + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=2, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxAxis{x-axis label} + \plotyAxis{y-axis label} + + \listplot[style=StdLineStyA] + {\IdentI} + \listplot[style=StdLineStyB] + {\IdentII} + + \putSE{\LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI \\ + \LegLine{style=StdLineStyB} & IdentII + }} + \end{NumericDataPlot} + \end{verbatim} +\end{minipage} +\begin{minipage}[T]{0.5\linewidth} + \vspace{10pt} + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=1, xMax=2, Dx=0.2} + \setyAxis{yMin=50, yMax=150, Dy=25} + + \plotxAxis{x-axis label} + \plotyAxis{y-axis label} + + \listplot[style=StdLineStyA]{\IdentI} + \listplot[style=StdLineStyB]{\IdentII} + + \putSE{\LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI \\ + \LegLine{style=StdLineStyB} & IdentII + }} + \end{NumericDataPlot} +\end{minipage} + + +\subsection{Label and TickLabels} + +The commands \texttt{plotxAxis} and \texttt{plotyAxis} take the options +\texttt{NoLabel}, \texttt{NoTicks}, \texttt{NoTickLabel} as well as +\texttt{LabelOption} and \texttt{TickLabelOption} which may be used to eliminate +or change the look of the labels. + +Standard values for \texttt{LabelOption} and \texttt{TickLabelOption} may be set +by \verb|\newcommand{\StdLabelOption}{\color{blue}| and +\verb|\newcommand{\StdTickLabelOption}{\small}|. + +The option \texttt{xLabelSep} for \verb|\plotxAxis| (and \texttt{yLabelSep} for +\verb|\plotyAxis|) may be used to set the seperation between the axis and the label. Standard value +is 10pt for the x-label and 20pt for the y-label. + +\begin{minipage}[T]{0.5\linewidth} + \begin{verbatim} + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=1, xMax=1.6, Dx=0.2} + \setyAxis{yMin=75, yMax=130, Dy=25} + + \plotxAxis + [LabelOption=\LARGE,% + TickLabelOption=\color{red},% + xLabelSep=40pt] + {x-axis label} + \plotyAxis + [NoLabel, NoTicks, NoTickLabel] + {y-axis label} + + \listplot[style=StdLineStyA]{\IdentI} + \listplot[style=StdLineStyB]{\IdentII} + + \end{NumericDataPlot} + \end{verbatim} +\end{minipage} +\begin{minipage}[T]{0.5\linewidth} + \vspace{10pt} + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=1, xMax=1.6, Dx=0.2} + \setyAxis{yMin=75, yMax=130, Dy=25} + + \plotxAxis[LabelOption=\LARGE, TickLabelOption=\color{red}, + xLabelSep=40pt]{x-axis label} + \plotyAxis[NoLabel, NoTicks, NoTickLabel]{y-axis label} + + \listplot[style=StdLineStyA]{\IdentI} + \listplot[style=StdLineStyB]{\IdentII} + + \end{NumericDataPlot} +\end{minipage} + + +\subsection{Place ``Objects'' in the plot.} + +There are basically two different options to place objects in the plot. To +understand the difference one has to keep in mind that the axis have two +different coordinate systems. One is the system defined by xMin, xMax, yMin and +yMax (refered to as ``DataCoordinateSystem''), the other ist the system defined +by xCoordMin, xCoordMax, yCoordMin and yCoordMax (refered to as +``PictureCoordinateSystem''), see section \ref{sec:MultiplePlots}. + +It is now possible to place stuff in the graph with the DataCoordinates with the +command NDPput, see the following example. + +\begin{minipage}[T]{0.5\linewidth} + \begin{verbatim} + \begin{NumericDataPlot} + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=2, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxAxis{x-axis label} + \plotyAxis[NoLabel]{} + + \listplot[style=StdLineStyA] + {\IdentI} + + % put some stuff somewhere + \NDPput[x=1.2, y=75, RefPoint=br]{text} + \NDPput[x=1.2, y=100]{$a^2$} + + % or put nodes... + \NDPput[x=1.6, y=100]{\pnode{A}} + \NDPput[x=1.8, y=150]{\pnode{B}} + % ...and draw a line between them + \ncline{A}{B} + + % or put the legend at a specific position + \NDPput[x=1.8, y=75]{\LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI + }} + \end{NumericDataPlot} + \end{verbatim} +\end{minipage} +\begin{minipage}[T]{0.5\linewidth} + \vspace{10pt} + \begin{NumericDataPlot} + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=2, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxAxis{x-axis label} + \plotyAxis[NoLabel]{} + + \listplot[style=StdLineStyA] + {\IdentI} + + % put some stuff somewhere + \NDPput[x=1.2, y=75, RefPoint=br]{text} + \NDPput[x=1.2, y=100]{$a^2$} + + % or put nodes... + \NDPput[x=1.6, y=100]{\pnode{A}} + \NDPput[x=1.8, y=150]{\pnode{B}} + % ...and draw a line between them + \ncline{A}{B} + + % or put the legend at a specific position + \NDPput[x=1.8, y=75]{\LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI + }} + \end{NumericDataPlot} +\end{minipage} + +Alternatively, stuff can be placed within the plot with \verb|\rput|. + +\begin{minipage}[T]{0.5\linewidth} + \begin{verbatim} + \begin{NumericDataPlot} + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=1.6, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxAxis{x-axis label} + \plotyAxis[NoLabel]{} + + \listplot[style=StdLineStyA] + {\IdentI} + + % put text in the middle of the plot + \rput{45}(500,500){text} + % put a formula in the lower left corner + \rput[bl](0,0){$a^2+b^2=c^2$} + + % or put nodes... + \NDPput[x=1.2, y=125]{\pnode{A}} + \rput(750,900){\Rnode{B}{peak}} + % ...and draw a line between them + \ncline{<-}{A}{B} + + % or put the legend at a specific position + \rput{-45}(750,250){\LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI + }} + \end{NumericDataPlot} + \end{verbatim} +\end{minipage} +\begin{minipage}[T]{0.5\linewidth} + \vspace{10pt} + \begin{NumericDataPlot} + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=1.6, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxAxis{x-axis label} + \plotyAxis[NoLabel]{} + + \listplot[style=StdLineStyA] + {\IdentI} + + % put text in the middle of the plot + \rput{45}(500,500){text} + % put a formula in the lower left corner + \rput[bl](0,0){$a^2+b^2=c^2$} + + % or put nodes... + \NDPput[x=1.2, y=125]{\pnode{A}} + \rput(750,900){\Rnode{B}{peak}} + % ...and draw a line between them + \ncline{<-}{A}{B} + + % or put the legend at a specific position + \rput{-45}(750,250){\LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI + }} + \end{NumericDataPlot} +\end{minipage} + + + +\subsection{Line Styles} + +\subsection{Legend} + +The legend may be created with \verb|\LegendDefinition|. The command takes the +two optional arguments \texttt{nrCols} and \texttt{LabelOrientation=[l|c|r]}. +The mandatory argument is the definition of a table as demonstrated in the +follwing examples. + + \begin{verbatim} + \LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI\\ + \LegLine{style=StdLineStyB, linewidth=3pt} & second legend + } + \end{verbatim} + \LegendDefinition{ + \LegLine{style=StdLineStyA} & IdentI\\ + \LegLine{style=StdLineStyB, linewidth=3pt} & second legend + } + \begin{verbatim} + \LegendDefinition[nrCols=2]{ + \LegLine{style=StdLineStyA} & IdentI & + \LegLine{style=StdLineStyB, linewidth=3pt} & legend 2 + } + \end{verbatim} + \LegendDefinition[nrCols=2]{ + \LegLine{style=StdLineStyA} & IdentI & + \LegLine{style=StdLineStyB, linewidth=3pt} & legend 2 + } + \begin{verbatim} + \LegendDefinition[LabelOrientation=c]{ + \LegLine{style=StdLineStyA} & IdentI\\ + \LegLine{style=StdLineStyB, linewidth=3pt} & legend 2 \\ + \LegLine{style=StdLineStyC} & whatever this data is\ldots\\ + \LegLine{style=StdLineStyD} & and more data + } + \end{verbatim} + \LegendDefinition[LabelOrientation=c]{ + \LegLine{style=StdLineStyA} & IdentI\\ + \LegLine{style=StdLineStyB, linewidth=3pt} & second legend\\ + \LegLine{style=StdLineStyC} & whatever this data is\ldots\\ + \LegLine{style=StdLineStyD} & and more data + } + +\subsection{Add Lines to the Plot} + +Horizontal and vertical lines may be added to the plot with the commands +\verb|\NDPhline{coord}| and \verb|\NDPvline{coord}|. It is also possible to put +nodes and draw lines between them, see placing stuff\ldots + +\begin{minipage}[T]{0.5\linewidth} + \begin{verbatim} + \begin{NumericDataPlot} + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=1.6, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxAxis[NoLabel]{} + \plotyAxis[NoLabel]{} + + \listplot[style=StdLineStyA] + {\IdentI} + + \NDPhline[linecolor=LineColorD]{73} + \NDPvline[linecolor=LineColorE, linestyle=dashed]{1.5} + \NDPline[linecolor=red]{1.1}{75}{1.3}{125} + \end{NumericDataPlot} + \end{verbatim} +\end{minipage} +\begin{minipage}[T]{0.5\linewidth} + \vspace{10pt} + \begin{NumericDataPlot} + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=1.6, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxAxis[NoLabel]{} + \plotyAxis[NoLabel]{} + + \listplot[style=StdLineStyA] + {\IdentI} + + \NDPhline[linecolor=LineColorD]{73} + \NDPvline[linecolor=LineColorE, linestyle=dashed]{1.5} + \NDPline[linecolor=red]{1.1}{75}{1.3}{125} + \end{NumericDataPlot} +\end{minipage} + + + + +\subsection{Grid} + +One may choose not to plot the grid with the option \texttt{NoGrid} for the +commands \verb|\plotxAxis| and \verb|\plotyAxis|. + +If the grid is plottet with the axis it may happen that the grid is plottet over +the axis. To avoid this, plot the grid first and then plot the axis as shown. + +\begin{minipage}[T]{0.5\linewidth} + \begin{verbatim} + \begin{NumericDataPlot} + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=1.6, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxGrid + \plotyGrid + \plotxAxis + [NoLabel, NoGrid, AxisStyle=Boxed]{} + \plotyAxis + [NoLabel, NoGrid, AxisStyle=Boxed]{} + + \listplot[style=StdLineStyA] + {\IdentI} + + \end{NumericDataPlot} + \end{verbatim} +\end{minipage} +\begin{minipage}[T]{0.5\linewidth} + \vspace{10pt} + \begin{NumericDataPlot} + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=1.6, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxGrid + \plotyGrid + \plotxAxis[NoLabel, NoGrid, AxisStyle=Boxed]{} + \plotyAxis[NoLabel, NoGrid, AxisStyle=Boxed]{} + + \listplot[style=StdLineStyA] + {\IdentI} + + \end{NumericDataPlot} +\end{minipage} + + +\subsection{Logarithmic axes} + + +\begin{minipage}[T]{0.5\linewidth} + \begin{verbatim} + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis + {xMin=6, xMax=2500, Dx=10, xLog} + \setyAxis + {yMin=0, yMax=2500, Dy=500} + \plotxAxis{} + \plotyAxis{} + + \listplot{\LogData} + \end{NumericDataPlot} + \end{verbatim} +\end{minipage} +\begin{minipage}[T]{0.5\linewidth} + \vspace{10pt} + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=6, xMax=2500, Dx=10, xLog} + \setyAxis{yMin=0, yMax=2500, Dy=500} + \plotxAxis{} + \plotyAxis{} + + \listplot{\LogData} + \end{NumericDataPlot} +\end{minipage} + + +\begin{minipage}[T]{0.5\linewidth} + \begin{verbatim} + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=1500, Dx=10, xLog} + \setyAxis + {yMin=1, yMax=1500, Dy=10, yLog} + \plotxAxis{} + \plotyAxis{} + + \listplot{\LogData} + \end{NumericDataPlot} + \end{verbatim} +\end{minipage} +\begin{minipage}[T]{0.5\linewidth} + \vspace{10pt} + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=1, xMax=1500, Dx=10, xLog} + \setyAxis{yMin=1, yMax=1500, Dy=10, yLog} + \plotxAxis{} + \plotyAxis{} + + \listplot{\LogData} + \end{NumericDataPlot} +\end{minipage} + + + + + +\subsection{export2latex.m} + +The function \texttt{export2latex(data, filename, [options])} may be used to +export data from Matlab to be used with NumericPlots.sty. The function takes the two parameters +data and filename, where filename is the name of the file where the data should +be stored with full path but without extension. Data is a structure with the +three entries x, y, and ident, where x are the x-data, y the y-data and ident is +an identifier to have access to the data in Latex. To access the data in Latex +the command \verb+\Data<ident>+ is used. + +The parameter data may be provided as an 1xK array if each entry of the array is +a structure with the entries x, y and ident. There may be an additional entry +descr. +\begin{itemize} + \item data(1,i).x = $X_i$ + \item data(1,i).y = $Y_i$ + \item data(1,i).ident = Identifier + \item (data(1,i).descr = Description) +\end{itemize} +Identifier must be a valid Latex command name, which basically means it must be +a string without numbers. + +For every entry of data, $X$ and $Y$ must be arrays of the same size +$M\text{x}N$. If $M>1$, each column of the array is exported to the file and the +identifier is expanded by the roman representation of the column number. + +It might be useful to do a \texttt{interp1} before exporting the data to get +smaller files and to use less of \TeX's memory. ($\rightarrow$ script +Patrick?!?) + +The optional parameter \texttt{options} might be used to control which +additional information is provided in the output file. +\begin{itemize} + \item \texttt{options.DataBoundaries} [true] If set to true, the output file + contains the commands \verb+\DataXmin+, \verb+\DataXmax+, \verb+\DataYmin+ and + \verb+\DataYmax+ which may be used to define the axis. + \item \texttt{options.AxisBoundaries} [false] If set to true, the output file + contains the commands \verb+\DataXminAxis+, \verb+\DataXmaxAxis+, + \verb+\DataYminAxis+ and \verb+\DataYmaxAxis+ which may be used to define the + axis. In contrary to the DataBoundaries the AxisBoundaries add an additional + gap of \texttt{options.AxisBoundariesGap} [10] percent of the full scale to + the data boundaries such that the plot doesn't touch the axis. +\end{itemize} + diff --git a/Master/texmf-dist/doc/latex/numericplots/FurtherExamples.tex b/Master/texmf-dist/doc/latex/numericplots/FurtherExamples.tex new file mode 100644 index 00000000000..458a1906899 --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/FurtherExamples.tex @@ -0,0 +1,196 @@ +% Copyright 2010 Thomas König, Alexander Michel +% +% This file is part of NumericPlots. +% +% NumericPlots is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% any later version. +% +% NumericPlots is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + +\part{Examples} + +\section{Further Examples} + +\def\MoreData{ +0 5 +1 7 +2 10 +3 11 +4 11.5 +5 10 +6 5 +7 4 +8 9 +9 12 +10 11 +11 5 +} + +\def\MoreDataI{ +0 -5 +1 -7 +2 -10 +3 -11 +4 -11.5 +5 -10 +6 10 +7 15 +8 10 +9 -12 +10 -11 +11 -5 +} + +\begin{minipage}{0.5\linewidth} +\begin{verbatim} + \listplot + [style=StdLineStyA] + {\MoreData} + \listplot + [style=StdLineStyB, yEnd=10] + {\MoreData} + \listplot + [style=StdLineStyC, xStart=5, xEnd=9] + {\MoreData} + \listplot + [style=StdLineStyD, showpoints=true, nStep=2] + {\MoreData} +\end{verbatim} +\end{minipage}\begin{minipage}{0.5\linewidth} +\centering +\begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=0, xMax=15, Dx=5, xO=0} + \setyAxis{yMin=0, yMax=15, Dy=5, yO=0} + + \plotxAxis[NoLabel]{x-axis label} + \plotyAxis[NoLabel]{y-axis label} + + \listplot[style=StdLineStyA]{\MoreData} + \listplot[style=StdLineStyB, yEnd=10]{\MoreData} + \listplot[style=StdLineStyC, xStart=5, xEnd=9]{\MoreData} + \listplot[style=StdLineStyD, showpoints=true, nStep=2]{\MoreData} +\end{NumericDataPlot} +\end{minipage} + + +\begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=0, xMax=15, Dx=5, xO=0} + \setyAxis{yMin=0, yMax=15, Dy=5, yO=10} + + \plotxAxis{x-axis label} + \plotyAxis{y-axis label} + + \listplot[style=StdLineStyA, yMaxValue=10]{\MoreData} +\end{NumericDataPlot} + + +\subsection{Fill area between plots} + +\begin{minipage}{0.5\linewidth} +\begin{verbatim} + \begin{NumericDataPlot}% + {\textwidth}{5cm} + \setxAxis + {xMin=0, xMax=15, Dx=5, xO=0} + \setyAxis + {yMin=-15, yMax=15, Dy=5, yO=10} + + \plotxAxis{x-axis label} + \plotyAxis[NoLabel]{} + + \pscustom% + [style=StdLineStyA, fillstyle=solid, % + fillcolor=blue!40]{% + \listplot{\MoreData}% + \listplot[ChangeOrder]{\MoreDataI}% + } + \end{NumericDataPlot} +\end{verbatim} +\end{minipage}\begin{minipage}{0.5\linewidth} +\centering + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=0, xMax=15, Dx=5, xO=0} + \setyAxis{yMin=-15, yMax=15, Dy=5, yO=10} + + \plotxAxis{x-axis label} + \plotyAxis[NoLabel]{} + + \pscustom[style=StdLineStyA, fillstyle=solid, fillcolor=blue!40]{% + \listplot{\MoreData}% + \listplot[ChangeOrder]{\MoreDataI}% + } + \end{NumericDataPlot} +\end{minipage} + + + + + + +\begin{minipage}{0.5\linewidth} +\begin{verbatim} + ... + \pscustom% + [style=StdLineStyA, fillstyle=solid, % + fillcolor=green!40]{% + \NDPhline{0} + \listplot[ChangeOrder]{\MoreDataI}% + } + ... +\end{verbatim} +\end{minipage}\begin{minipage}{0.5\linewidth} +\centering + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=0, xMax=15, Dx=5, xO=0} + \setyAxis{yMin=-15, yMax=15, Dy=5, yO=10} + + \plotxAxis{x-axis label} + \plotyAxis[NoLabel]{} + + \pscustom% + [style=StdLineStyA, fillstyle=solid, % + fillcolor=green!40]{% + \NDPhline{0} + \listplot[ChangeOrder]{\MoreDataI}% + } + \end{NumericDataPlot} +\end{minipage} + + +\begin{minipage}{0.5\linewidth} +\begin{verbatim} + ... + \pscustom% + [style=StdLineStyA, fillstyle=solid, % + fillcolor=red!40]{% + \NDPline{0}{5}{11}{10} + \listplot[ChangeOrder]{\MoreDataI}% + } + ... +\end{verbatim} +\end{minipage}\begin{minipage}{0.5\linewidth} +\centering + \begin{NumericDataPlot}{\textwidth}{5cm} + \setxAxis{xMin=0, xMax=15, Dx=5, xO=0} + \setyAxis{yMin=-15, yMax=15, Dy=5, yO=10} + + \plotxAxis{x-axis label} + \plotyAxis[NoLabel]{} + + \pscustom% + [fillstyle=solid, linestyle=none,% + fillcolor=red!40]{% + \NDPline{0}{5}{11}{10} + \listplot[ChangeOrder]{\MoreDataI}% + } + \listplot[style=StdLineStyB]{\MoreDataI} + \end{NumericDataPlot} +\end{minipage}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/numericplots/License.txt b/Master/texmf-dist/doc/latex/numericplots/License.txt new file mode 100644 index 00000000000..94a9ed024d3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/License.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/Master/texmf-dist/doc/latex/numericplots/MultiplePlots.tex b/Master/texmf-dist/doc/latex/numericplots/MultiplePlots.tex new file mode 100644 index 00000000000..e286e1fa9cf --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/MultiplePlots.tex @@ -0,0 +1,180 @@ +% Copyright 2010 Thomas König, Alexander Michel +% +% This file is part of NumericPlots. +% +% NumericPlots is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% any later version. +% +% NumericPlots is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + + +\section{Multiple plots in one picture}\label{sec:MultiplePlots} + +xPicMin, xPicMax, yPicMin and yPicMax are the inner coordinates of one picture. +The position of the axes are defined in this coordinate system via xCoordMin, +xCoordMax, yCoordMin and yCoordMax. + +Example: + +\begin{verbatim} +% input data and define linestyles +\input{DataTestRealData} +\newpsstyle{Database}{linecolor=LineColorA, linestyle=none, dotstyle=*, +showpoints=true, dotsize=5pt} +\newpsstyle{Result}{linecolor=LineColorB, linestyle=none, dotstyle=+, +showpoints=true, dotsize=10pt} + +\begin{center} + \begin{NumericDataPlot}[xPicMin=0, xPicMax=1050, + yPicMin=0, yPicMax=1450]{\textwidth}{0.75\textheight} + + % --- definition of the axis and the grid --- + % set the axis of the lower left corner + \setxAxis{xMin=2, xMax=17, Dx=4, xCoordMin=0, xCoordMax=500} + \setyAxis{yMin=20, yMax=70, Dy=20, yCoordMin=0, yCoordMax=500} + + % plot the axis of the lower left corner + \plotxAxis{Stichnummer} + \plotyAxis{$F_{roll}$ in $\mega\newton$} + + \listplot[style=Database]{\DataDBforce} + \listplot[style=Result]{\DataRESforce} + \listplot[style=StdLineStyC]{\DataDBforceC} + \listplot[style=StdLineStyD]{\DataDBforceD} + \listplot[style=StdLineStyE]{\DataDBforceE} + \listplot[style=StdLineStyF]{\DataDBforceF} + \listplot[style=StdLineStyG]{\DataDBforceG} + + % set the y-axis for the plot in the middle of the left side + % x-axis remains the same + \setyAxis{yMin=20, yMax=70, Dy=20, yCoordMin=550, yCoordMax=1050} + % plot the axis (x-axis without ticklabels and label + \plotxAxis[NoTickLabel, NoLabel]{} + \plotyAxis{$F_{roll}$ in $\mega\newton$} + + \rput[t]{0}(250,550){a) Ein plot} + + \listplot[style=Database]{\DataDBforce} + \listplot[style=Result]{\DataRESforce} + + % set axis for the plot at the right side + \setxAxis{xMin=2, xMax=17, Dx=4, xCoordMin=600, xCoordMax=1050} + \setyAxis{yMin=20, yMax=70, Dy=10, yCoordMin=0, yCoordMax=1050} + + % plot the axis at the right side (y-axis without label) + \plotxAxis{Stichnummer} + \plotyAxis[NoLabel, TickSep=10]{$F_{roll}$ in $\mega\newton$} + + \listplot[style=Database]{\DataDBforce} + \listplot[style=Result]{\DataRESforce} + \listplot[style=StdLineStyC]{\DataDBforceC} + \listplot[style=StdLineStyD]{\DataDBforceD} + \listplot[style=StdLineStyE]{\DataDBforceE} + \listplot[style=StdLineStyF]{\DataDBforceF} + \listplot[style=StdLineStyG]{\DataDBforceG} + + % set the axis for the plot at the top + \setxAxis{xMin=8, xMax=17, Dx=1, xCoordMin=0, xCoordMax=1050} + \setyAxis{yMin=35, yMax=65, Dy=10, yO=40, yCoordMin=1150, yCoordMax=1450} + + % plot the axis for the plot at the top + \plotxAxis[NoLabel]{Stichnummer} + \plotyAxis[NoLabel]{$F_{roll}$ in $\mega\newton$} + + % plot only part of the data + \listplot[style=Database, xStart=11, xEnd=17]{\DataDBforce} + \listplot[style=Result, xStart=8, xEnd=13]{\DataRESforce} + + \end{NumericDataPlot} + + % put legend outside of the plot + \LegendDefinition[nrCols=1, LabelOrientation=r]{ + \LegLine{Database} & Werte aus der Datenbank \\ + \LegLine{Result} & Modell} + +\end{center} +\end{verbatim} + +% input data and define linestyles +\input{DataTestRealData} +\newpsstyle{Database}{linecolor=LineColorA, linestyle=none, dotstyle=*, +showpoints=true, dotsize=5pt} +\newpsstyle{Result}{linecolor=LineColorB, linestyle=none, dotstyle=+, +showpoints=true, dotsize=10pt} + +\begin{center} + \begin{NumericDataPlot}[xPicMin=0, xPicMax=1050, + yPicMin=0, yPicMax=1450]{\textwidth}{0.75\textheight} + + % --- definition of the axis and the grid --- + % set the axis of the lower left corner + \setxAxis{xMin=2, xMax=17, Dx=4, xCoordMin=0, xCoordMax=500} + \setyAxis{yMin=20, yMax=70, Dy=20, yCoordMin=0, yCoordMax=500} + + % plot the axis of the lower left corner + \plotxAxis{Stichnummer} + \plotyAxis{$F_{roll}$ in $\mega\newton$} + + \listplot[style=Database]{\DataDBforce} + \listplot[style=Result]{\DataRESforce} + \listplot[style=StdLineStyC]{\DataDBforceC} + \listplot[style=StdLineStyD]{\DataDBforceD} + \listplot[style=StdLineStyE]{\DataDBforceE} + \listplot[style=StdLineStyF]{\DataDBforceF} + \listplot[style=StdLineStyG]{\DataDBforceG} + + % set the y-axis for the plot in the middle of the left side + % x-axis remains the same + \setyAxis{yMin=20, yMax=70, Dy=20, yCoordMin=550, yCoordMax=1050} + % plot the axis (x-axis without ticklabels and label + \plotxAxis[NoTickLabel, NoLabel]{} + \plotyAxis{$F_{roll}$ in $\mega\newton$} + + \rput[t]{0}(250,550){a) Ein plot} + + \listplot[style=Database]{\DataDBforce} + \listplot[style=Result]{\DataRESforce} + + % set axis for the plot at the right side + \setxAxis{xMin=2, xMax=17, Dx=4, xCoordMin=600, xCoordMax=1050} + \setyAxis{yMin=20, yMax=70, Dy=10, yCoordMin=0, yCoordMax=1050} + + % plot the axis at the right side (y-axis without label) + \plotxAxis{Stichnummer} + \plotyAxis[NoLabel, TickSep=10]{$F_{roll}$ in $\mega\newton$} + + \listplot[style=Database]{\DataDBforce} + \listplot[style=Result]{\DataRESforce} + \listplot[style=StdLineStyC]{\DataDBforceC} + \listplot[style=StdLineStyD]{\DataDBforceD} + \listplot[style=StdLineStyE]{\DataDBforceE} + \listplot[style=StdLineStyF]{\DataDBforceF} + \listplot[style=StdLineStyG]{\DataDBforceG} + + % set the axis for the plot at the top + \setxAxis{xMin=8, xMax=17, Dx=1, xCoordMin=0, xCoordMax=1050} + \setyAxis{yMin=35, yMax=65, Dy=10, yO=40, yCoordMin=1150, yCoordMax=1450} + + % plot the axis for the plot at the top + \plotxAxis[NoLabel]{Stichnummer} + \plotyAxis[NoLabel]{$F_{roll}$ in $\mega\newton$} + + % plot only part of the data + \listplot[style=Database, xStart=11, xEnd=17]{\DataDBforce} + \listplot[style=Result, xStart=8, xEnd=13]{\DataRESforce} + + \end{NumericDataPlot} + + % put legend outside of the plot + \LegendDefinition[nrCols=1, LabelOrientation=r]{ + \LegLine{style=Database} & Werte aus der Datenbank \\ + \LegLine{style=Result} & Modell} +\end{center}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/numericplots/NumericPlots.pdf b/Master/texmf-dist/doc/latex/numericplots/NumericPlots.pdf Binary files differnew file mode 100644 index 00000000000..c0816a9f8b0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/NumericPlots.pdf diff --git a/Master/texmf-dist/doc/latex/numericplots/NumericPlotsDoc.tex b/Master/texmf-dist/doc/latex/numericplots/NumericPlotsDoc.tex new file mode 100644 index 00000000000..9d6cbdb98fe --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/NumericPlotsDoc.tex @@ -0,0 +1,171 @@ +% Copyright 2010 Thomas König, Alexander Michel, Michael Baumgart +% +% This file is part of NumericPlots. +% +% NumericPlots is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% any later version. +% +% NumericPlots is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + + +\documentclass[parskip]{scrartcl} + +\usepackage[Gray]{SIunits} +% \usepackage{floatbarrier} +% \usepackage{showexpl} +\usepackage{etex} % use e-TeXs extended register set +% options for package: +% BW: black and white +% AxisStyle=<style>: set standard axis style ([Boxed], Frame, FrameI, None) +\usepackage[ + %BW, + xAxisStyle=Lower, + yAxisStyle=Left, + ]{NumericPlots} + +\usepackage[ + ps2pdf, %% similar to dvips but redefines some macros for use with ps2pdf + final, + bookmarks=true, %% if true, generate PDF bookmarks (requires two passes of pdflatex) + bookmarksopen=false, %% if true, show all PDF bookmarks expanded + bookmarksnumbered=true, %% if true, add the section numbers to the bookmarks +% linkbordercolor=acin_red, +% urlbordercolor=acin_red, +% citebordercolor=acin_red, +% filebordercolor=acin_red, + pdfpagemode=UseOutlines, %% None, UseOutlines (=show bookmarks), UseThumbs (show thumbnails), FullScreen +% breaklinks, + pdfauthor = {Thomas Koenig Alexander Michel Michael Baumgart}, + pdftitle = {NumericPlots - plot numeric data with latex}, + pdfsubject = {}, + plainpages=false, + hyperindex=true, +]{hyperref} + +\title{NumericPlots - plot numeric data with latex} +\author{Thomas K\"{o}nig, Alexander Michel, Michael Baumgart} +\date{\today} + +\begin{document} + +% redefining the StdLabelOption and StdTickLabelOption applies to all following +% plots. +% \renewcommand{\StdLabelOption}{\LARGE} +% \renewcommand{\StdTickLabelOption}{\LARGE} + +\maketitle + +Plotting numeric data is a task which often has to be done for scientific +papers. In \LaTeX, however, it is only possible to include graphics created with +an external program. The pstricks-packages provide many commands to +generate graphics in \LaTeX. To generate simple graphics from numeric data, +however, it is difficult to use. This package provides a simpler interface for +the pstricks-package to plot numeric data. + +\tableofcontents + +\part{Introduction} + +Plotting numeric data is a task which often has to be done for scientific +papers. In \LaTeX, however, it is only possible to include graphics created with +an external program. The pstricks-packages provide very many commands to +generate graphics in \LaTeX. To generate simple graphics from numeric data, +however, it is difficult to use. This package provides a simpler interface for +the pstricks-package to plot numeric data. + +NumericPlots is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +any later version. + +NumericPlots is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with NumericPlots. If not, see http://www.gnu.org/licenses/. + +Copyright 2010 Thomas K\"{o}nig, Alexander Michel, Michael Baumgart + + +% \part{Using the package} -> in BasicFunctionality + +\include{BasicFunctionality} + +\include{MultiplePlots} + +\section{package options} + +\section{list of commands and options} + +\include{options} + +\include{TechnicalDetails} + + +% \part{Examples} + +\include{FurtherExamples} + +\include{TestPlots} + + +% \part{Version} + +\include{history} + +% \section{Test Calculations} +% +% Teste setkeys +% +% Watch: +% +% \setkeys*[NumericDataPlot]{Axis}{xO=34, xMin=10} +% \setrmkeys[NumericDataPlot]{AxisWait} +% \begin{tabular}{ll} +% xMin & \NumDataPlotxMin\\ +% \textbf{xO:} & \NumDataPlotxO \\ +% \end{tabular} +% +% \setkeys*[NumericDataPlot]{Axis}{xMin=10, xO=34} +% \setrmkeys[NumericDataPlot]{AxisWait} +% \begin{tabular}{ll} +% xMin & \NumDataPlotxMin\\ +% \textbf{xO:} & \NumDataPlotxO \\ +% \end{tabular} +% +% \setkeys*[NumericDataPlot]{Axis}{xMin=10} +% \setrmkeys[NumericDataPlot]{AxisWait} +% \begin{tabular}{ll} +% xMin & \NumDataPlotxMin\\ +% \textbf{xO:} & \NumDataPlotxO \\ +% \end{tabular} +% +% calculation example: + +% \setkeys*[NumericDataPlot]{Axis}{xO=34, xMax=20, xMin=10, Dx=2} +% \setrmkeys[NumericDataPlot]{AxisWait} +% \begin{tabular}{ll} +% xCoordMin & \NumDataPlotxCoordMin\\ +% xCoordMax & \NumDataPlotxCoordMax \\ +% xMin: & \NumDataPlotxMin \\ +% xMax: & \NumDataPlotxMax \\ +% xCoordMax: & \NumDataPlotxCoordMax \\ +% xCoordMin: & \NumDataPlotxCoordMin \\ +% Dx: & \NumDataPlotDx \\ +% \textit{xNrTicks:} & \xNrTicks \\ +% %\textit{NumDataPlotdx} & \NumDataPlotdx\\ +% %\textit{NumDataPlotxCoordOrig} & \NumDataPlotdx\\ +% \textbf{xO:} & \NumDataPlotxO \\ +% \end{tabular} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/numericplots/README.TEXLIVE b/Master/texmf-dist/doc/latex/numericplots/README.TEXLIVE new file mode 100644 index 00000000000..fc82eb8619a --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/README.TEXLIVE @@ -0,0 +1,11 @@ +The following files have been removed in the TeX Live installation of +the current package, typically due to duplication, lack of space, or +missing source code. You can find these files on CTAN at + http://mirror.ctan.org/graphics/numericplots +If questions or concerns, email tex-live@tug.org. + + struct2latex.m + roman.m + dspace2struct.m + export2latex.m + dspace2latex.m diff --git a/Master/texmf-dist/doc/latex/numericplots/README.doc b/Master/texmf-dist/doc/latex/numericplots/README.doc new file mode 100644 index 00000000000..df2bcb942a1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/README.doc @@ -0,0 +1,30 @@ +--------------------------------------------------------------------------- +The NumericPlots package --- LaTeX package to plot numeric data using pstricks +Maintained by Thomas König, Alexander Michel, Michael Baumgart +E-mail: NumericPlots@tikey.de +Released under the GNU General Public License version 3 or later +See <http://www.gnu.org/licenses/> +---------------------------------------------------------------------------- + +Copyright 2010 Thomas König, Alexander Michel, Michael Baumgart + +Plotting numeric data is a task which often has to be done for scientific +papers. In \LaTeX, however, it is only possible to include graphics created with +an external program. The pstricks-packages provide very many commands to +generate graphics in \LaTeX. To generate simple graphics from numeric data, +however, it is difficult to use. This package provides a simpler interface for +the pstricks-package to plot numeric data. + +NumericPlots is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +any later version. + +NumericPlots is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + diff --git a/Master/texmf-dist/doc/latex/numericplots/TechnicalDetails.tex b/Master/texmf-dist/doc/latex/numericplots/TechnicalDetails.tex new file mode 100644 index 00000000000..bfbb7ac84ca --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/TechnicalDetails.tex @@ -0,0 +1,135 @@ +% Copyright 2010 Thomas König, Alexander Michel +% +% This file is part of NumericPlots. +% +% NumericPlots is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% any later version. +% +% NumericPlots is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + +\section{Technical Details} + +This section should just give some hints how to use the different coordinate +system. + +A new plot is created with the environment +\texttt{NumericDataPlot}. The options are illustrated in the following example. + +\begin{minipage}[T]{0.5\linewidth} + \begin{verbatim} + \begin{NumericDataPlot} + [xPicMin=300, xPicMax=700] + {\textwidth}{5cm} + \setxAxis + {xMin=1, xMax=1.6, Dx=0.2} + \setyAxis + {yMin=50, yMax=150, Dy=25} + + \plotxAxis[NoLabel]{} + \plotyAxis[NoLabel]{} + + \listplot[style=StdLineStyA] + {\IdentI} + + \NDPhline[linecolor=LineColorD]{73} + \NDPvline[linecolor=LineColorE, linestyle=dashed]{1.5} + \end{NumericDataPlot} + \end{verbatim} +\end{minipage} + +\vspace{1cm} +\begin{center} +\frame{ + \begin{NumericDataPlot} + [xPicMin=300, xPicMax=700, yPicMin=200, yPicMax=700, + llx=-1cm, lly=-2cm, urx=15pt, ury=30pt] + {0.5\textwidth}{5cm} + + \psline(300,200)(700,200)(700,700)(300,700)(300,200) + \pnode(300,200){PicLL} + \pnode(700,200){PicLR} + \pnode(700,700){PicUR} + \pnode(300,700){PicUL} + \rput(200,100){\Rnode{CapLL}{(xPicMin, yPicMin)}} + \ncline{->}{CapLL}{PicLL} + \rput(800,100){\Rnode{CapLR}{(xPicMax, yPicMin)}} + \ncline{->}{CapLR}{PicLR} + \rput(800,800){\Rnode{CapUR}{(xPicMax, yPicMax)}} + \ncline{->}{CapUR}{PicUR} + \rput(200,800){\Rnode{CapUL}{(xPicMin, yPicMax)}} + \ncline{->}{CapUL}{PicUL} + + \pnode(400,400){PlotLL} + \pnode(600,400){PlotLR} + \pnode(600,600){PlotUR} + \pnode(400,600){PlotUL} + \rput(350,300){\Rnode{PCapLL}{(xCoordMin, yCoordMin)}} + \ncline{->}{PCapLL}{PlotLL} + \rput(800,450){\Rnode{PCapLR}{(xCoordMax, yCoordMin)}} + \ncline{->}{PCapLR}{PlotLR} + \rput(800,650){\Rnode{PCapUR}{(xCoordMax, yCoordMax)}} + \ncline{->}{PCapUR}{PlotUR} + \rput(500,870){\Rnode{PCapUL}{(xCoordMin, yCoordMax)}} + \ncline{->}{PCapUL}{PlotUL} + + \rput(210,350){\pnode{LLXA}} + \rput(300,350){\pnode{LLXB}} + \ncline{<->}{LLXA}{LLXB} + \naput{llx} + + \rput(350,200){\pnode{LLXA}} + \rput(350,0){\pnode{LLXB}} + \ncline{<->}{LLXA}{LLXB} + \naput{lly} + + \rput(755,350){\pnode{URXA}} + \rput(700,350){\pnode{URXB}} + \ncline{<->}{URXA}{URXB} + \naput{urx} + + \rput(350,805){\pnode{URXA}} + \rput(350,700){\pnode{URXB}} + \ncline{<->}{URXA}{URXB} + \naput{ury} + + + \setxAxis + {xCoordMin=400, xCoordMax=600, + xMin=1, xMax=1.6, Dx=0.2} + \setyAxis + {yCoordMin=400, yCoordMax=600, + yMin=50, yMax=150, Dy=25} + + \plotxAxis[NoLabel]{} + \plotyAxis[NoLabel]{} + + \listplot[style=StdLineStyA]{\IdentI} + \end{NumericDataPlot} + } +\end{center} + +% \define@cmdkeys[NumericDataPlot]{General}[NumDataPlotG]{ +% xPicMin, yPicMin, xPicMax, yPicMax +% } +% +% +% \define@key[NumericDataPlot]{General}{llx}[\StdLLX]{ +% \psset{llx=#1} +% \addtolength{\OffsetWidth}{\StdLLX} +% \addtolength{\OffsetWidth}{-#1} +% } +% \define@key[NumericDataPlot]{General}{urx}[\StdURX]{ +% \psset{urx=#1} +% \addtolength{\OffsetWidth}{-\StdURX} +% \addtolength{\OffsetWidth}{#1} +% } +% \define@key[NumericDataPlot]{General}{lly}[\StdLLY]{\psset{lly=#1}} +% \define@key[NumericDataPlot]{General}{ury}[\StdURY]{\psset{ury=#1}}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/numericplots/TestPlots.tex b/Master/texmf-dist/doc/latex/numericplots/TestPlots.tex new file mode 100644 index 00000000000..16093086804 --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/TestPlots.tex @@ -0,0 +1,122 @@ +% Copyright 2010 Thomas König, Alexander Michel +% +% This file is part of NumericPlots. +% +% NumericPlots is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% any later version. +% +% NumericPlots is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + +\section{Some test plots} + + \begin{figure} + \centering + \small + + \input{DataTestRealData} + \newpsstyle{Database}{style=StdLineStyA, dotstyle=*, showpoints=true} + \newpsstyle{Result}{style=StdLineStyB, dotstyle=+, showpoints=true} + + % adjust llx, lly, urx and ury for borders + \begin{NumericDataPlot}[]{0.5 \linewidth}{0.35 \linewidth} + % --- definition of the axis and the grid --- + \setxAxis{xMin=2, xMax=17, xO=5, Dx=4} + + \setyAxis{yMin=20, yMax=70, yO=20, Dy=20} + + % AxisStyle: Boxed,LowerAxis,UpperAxis,NoTicks,NoTickLabel,NoGrid + \plotxAxis[AxisStyle = Boxed]{Stichnummer} + + % AxisStyle: Boxed,LeftAxis,RightAxis,NoTicks,NoTickLabel,NoGrid + \plotyAxis[AxisStyle = Boxed]{$F_{roll}$ in $\mega\newton$} + + + \listplot[style=Database]{\DataDBforce} + \listplot[style=Result]{\DataRESforce} + \listplot[style=StdLineStyC]{\DataDBforceC} + \listplot[style=StdLineStyD]{\DataDBforceD} + \listplot[style=StdLineStyE]{\DataDBforceE} + \listplot[style=StdLineStyF]{\DataDBforceF} + \listplot[style=StdLineStyG]{\DataDBforceG} + \end{NumericDataPlot} + \LegendDefinition[nrCols=1, LabelOrientation=r]{ + \LegLine{style=Database} & Werte aus der Datenbank \\ + \LegLine{style=Result} & Modell\\ } + \caption{Test.} + \label{fig:Test1} +\end{figure} + +\clearpage + +% \section{Teste tkPlotData } +% +% +% +% { +% \centering +% \small +% +% \input{DataTestRealData} +% \newpsstyle{Database}{style=StdLineStyA, dotstyle=*, showpoints=true} +% \newpsstyle{Result}{style=StdLineStyB, dotstyle=+, showpoints=true} +% +% % adjust llx, lly, urx and ury for borders +% %\begin{tkDataPlot}[options]{width}{height} +% \begin{NumericDataPlot}[]{\linewidth}{10cm} +% % --- definition of the axis and the grid --- +% \setxAxis{xMin=2, xMax=17, xO=10, Dx=3} +% \setyAxis{yMin=20, yMax=70, Dy=10, yO=25} +% +% +% \plotxAxis[LabelPos=0.75, LabelOption={\color{red}}, +% TickLabelOption={\color{red}}]{Stichnummer} +% \plotyAxis[LabelOption={\LARGE}, TickLabelOption={\LARGE\color{green}}] +% {$F_{roll}$ in $\mega\newton$\\\LARGE{}Zeilenumbruch} +% +% \listplot[style=Database]{\DataDBforce} +% \listplot[style=Result]{\DataRESforce} +% \listplot[style=StdLineStyC]{\DataDBforceC} +% \listplot[style=StdLineStyD]{\DataDBforceD} +% \listplot[style=StdLineStyE]{\DataDBforceE} +% \listplot[style=StdLineStyF]{\DataDBforceF} +% \listplot[style=StdLineStyG]{\DataDBforceG} +% +% % put some stuff somewhere +% \NDPput[x=5, y=30]{xx} +% +% % or put nodes and draw lines between them +% \NDPput[x=7, y=25]{\pnode{A}} +% \NDPput[x=8, y=45]{\pnode{B}} +% \ncline{A}{B} +% +% % horizontal or vertical lines +% \NDPhline[style=StdLineStyF]{27} +% \NDPvline[style=StdLineStyG]{14} +% +% \NDPput[x=10, y=45]{\cnode{0.25}{Test}} +% +% \NDPput[x=13, y=48.3]{ +% \rnode{TestOval}{\psovalbox[framesep=4mm]{\hspace{8mm}}} +% } +% +% \end{NumericDataPlot} +% Vielleicht will ich genau \rnode{TestA}{hier} etwas zeigen. Oder genau +% \rnode{TestOvalA}{hier?} +% \ncline{->}{TestA}{Test} +% \ncline{->}{TestOvalA}{TestOval} +% +% \LegendDefinition[nrCols=2]{ +% \LegLine{style=Database} & Werte aus der Datenbank & +% \LegLine{style=Result} & Modell\\ +% } +% +% +% }
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/numericplots/history.tex b/Master/texmf-dist/doc/latex/numericplots/history.tex new file mode 100644 index 00000000000..971496d74ea --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/history.tex @@ -0,0 +1,62 @@ +% Copyright 2010 Thomas König, Alexander Michel +% +% This file is part of NumericPlots. +% +% NumericPlots is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% any later version. +% +% NumericPlots is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + +\part{Version} + +\section{History} + +\begin{itemize} + \item 18.05.2010 + \begin{itemize} + \item added LabelOption to plotAxis + \item added TickLabelOption to plotAxis + \item added possibility to change StdLabelOption + \item added possibility to change StdTickLabelOption + \end{itemize} + \item 11.06.2010 + \begin{itemize} + \item expanded documentation + \item changed the command \texttt{LegLine}. + \item added the commands \texttt{plotxGrid} and \texttt{plotyGrid}. The + grids may now be plotted before the axis to avoid overlapping of the grid + and the axis. + \end{itemize} + \item 17.06.2010 + \begin{itemize} + \item changed export2latex: check for the necessary precision before + exporting the data + \end{itemize} + \item 21.06.2010 + \begin{itemize} + \item added option for logarithmic axes + \end{itemize} + \item 05.07.2010 + \begin{itemize} + \item added command NDPline + \item added instructions to fill areas between plots to documentation + \end{itemize} + \item 03.08.2010 + \begin{itemize} + \item added options to \texttt{export2latex.m} + \end{itemize} + \item 05.08.2010 + \begin{itemize} + \item new calculation of tick lengths + \item length of the ticks may now be given in mm, see + \ref{sec:OptionsGeneral} + \end{itemize} +\end{itemize}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/numericplots/options.tex b/Master/texmf-dist/doc/latex/numericplots/options.tex new file mode 100644 index 00000000000..a37da9848f9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/numericplots/options.tex @@ -0,0 +1,28 @@ +% Copyright 2010 Thomas König, Alexander Michel +% +% This file is part of NumericPlots. +% +% NumericPlots is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% any later version. +% +% NumericPlots is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + +\section{Options} + +\subsection{General}\label{sec:OptionsGeneral} + + These are the options for the environment \texttt{NumericDataPlot}. + + \begin{itemize} + \item xPicMin [0], yPicMin[0], xPicMax[1000], yPicMax[1000] + \item TickLength [2] defines the length of the ticks in mm + \item llx[-1.5cm], lly[-1.25cm], urx[2pt], ury[2pt] + \end{itemize}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/numericplots/NumericPlots.sty b/Master/texmf-dist/tex/latex/numericplots/NumericPlots.sty new file mode 100644 index 00000000000..aa0cb63d572 --- /dev/null +++ b/Master/texmf-dist/tex/latex/numericplots/NumericPlots.sty @@ -0,0 +1,1054 @@ +% Copyright 2010 Thomas König, Alexander Michel, Michael Baumgart +% +% This file is part of NumericPlots. +% +% NumericPlots is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% any later version. +% +% NumericPlots is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with NumericPlots. If not, see <http://www.gnu.org/licenses/>. + +\NeedsTeXFormat{LaTeX2e} + +\ProvidesPackage{NumericPlots}[2010/08/09 LaTeX package to plot numeric data] + +% ========================================================== +% || TODO +% || +% || - implementation should be independant of psset +% || - factor for x and y axis? +% || - add option beamer (change default Sep/Sizes..) +% || - change calculation of lengths (LabelSep) -> see TickLength + + + +\RequirePackage{calc} +\RequirePackage{fp} + +\RequirePackage{ifthen} +\RequirePackage{pstricks} +\RequirePackage{pst-node} +\RequirePackage{pst-plot} +\RequirePackage{pstricks-add} % has to be the last of the pst-packages to be loaded! +% the following seems not to work. xcolor must be included with x11names option! +\RequirePackage{xcolor} + + +% ======================================= +% === Definition of keys and commands === +% ======================================= +% +% All the provided options (keys) are defined in the following section. Maybe it +% is possible to store the values of the keys somehow. We then wouldn't have to +% define all the new commands.. + +\RequirePackage{xkeyval} + +% globally needed values as newcommands +\newcommand{\NumDataPlotxRange}{1} +\newcommand{\NumDataPlotxCoordRange}{1} +\newcommand{\NumDataPlotxDataCoordRatio}{1} +\newcommand{\NumDataPlotyRange}{1} +\newcommand{\NumDataPlotyCoordRange}{1} +\newcommand{\NumDataPlotyDataCoordRatio}{1} +\newcommand{\NumDataPlotLnTen}{2.3025850929940} +\newcommand{\NumDataPlotTickPos}{0} + +\newcommand{\xScaling}{} +\newcommand{\yScaling}{} + +\newcommand{\NDPputXcoord}{0} +\newcommand{\NDPputYcoord}{0} +\newcommand{\NDPRefPoint}{c} + +\newcommand{\NumDataPlotBuffer}{0} +\newcommand{\NumDataPlotBufferI}{0} +\newcommand{\TicksXRight}{0} +\newcommand{\TicksXLeft}{0} +\newcommand{\TicksYRight}{0} +\newcommand{\TicksYLeft}{0} +\newcommand{\xTickLength}{-10} +\newcommand{\yTickLength}{-10} + +\newcommand{\xNrTicks}{1} +\newcommand{\yNrTicks}{1} + +\newboolean{PlotLeftAxis} +\setboolean{PlotLeftAxis}{true} +\newboolean{PlotRightAxis} +\setboolean{PlotRightAxis}{true} + +\newboolean{PlotLowerAxis} +\setboolean{PlotLowerAxis}{true} +\newboolean{PlotUpperAxis} +\setboolean{PlotUpperAxis}{true} + +\newcommand{\nrLegendCols}{1} +\newcommand{\StdLabelOption}{{}} +\newcommand{\StdTickLabelOption}{{}} +\newlength{\LegLineWidth}\setlength{\LegLineWidth}{20pt} + +\newboolean{LegendOrientationLeft} +\newboolean{LegendOrientationRight} +\newboolean{LegendOrientationCenter} +\setboolean{LegendOrientationLeft}{true} +\setboolean{LegendOrientationRight}{false} +\setboolean{LegendOrientationCenter}{false} + + +\newcommand{\LogxAxis}{} +\newcommand{\LogxAxisLabel}[1]{#1} +\newcommand{\LogyAxis}{} +\newcommand{\LogyAxisLabel}[1]{#1} + +\newcounter{BufferCounter} +% ---------------------------------------------------------------------------- +% | define keys for the axis style etc. +% ---------------------------------------------------------------------------- + +% define some command keys +% the command keys only save the provided value in \NumDataPlot<key> for later +% use. The standard values for the command keys are set at the end of the +% package. + +\define@cmdkeys[NumericDataPlot]{Axis}[NumDataPlot] + {xMax, xMin, + Dx, + dx, % so far, these are always calculated and cannot be set by user + xCoordMax, xCoordMin, + yMax, yMin, + Dy, + dy, % so far, these are always calculated and cannot be set by user + yCoordMax, yCoordMin + } + +\define@cmdkeys[NumericDataPlot]{xAxis}[NumDataPlotx]{ + LabelRotation, LabelPos, TickSep, LabelOption, TickLabelOption + } +\define@cmdkeys[NumericDataPlot]{yAxis}[NumDataPloty]{ + LabelRotation, LabelPos, TickSep, LabelOption, TickLabelOption + } + +\define@boolkey[NumericDataPlot]{Axis}{xLog}[true]{ + \ifNumericDataPlot@Axis@xLog + \renewcommand{\LogxAxis}{log} + \renewcommand{\LogxAxisLabel}[1]{10^{##1}} + \else + \renewcommand{\LogxAxis}{} + \renewcommand{\LogxAxisLabel}[1]{##1} + \fi +} + +\define@boolkey[NumericDataPlot]{Axis}{yLog}[true]{ + \ifNumericDataPlot@Axis@yLog + \renewcommand{\LogyAxis}{log} + \renewcommand{\LogyAxisLabel}[1]{10^{##1}} + \else + \renewcommand{\LogyAxis}{} + \renewcommand{\LogyAxisLabel}[1]{##1} + \fi +} + +% xMin and yMin also set xO/yO. It will later be ensured that if the user +% provides a value for xO/yO, these values will be used! (in order to do so, it +% is always necessary to call the following two commands in the given order: +% \setkeys[NumericDataPlot]{Axis}{<list of keys>} +% \setrmkeys[NumericDataPlot]{AxisWait} +% where <list of keys> can contain all the keys from Axis and from AxisWait) +\define@cmdkeys[NumericDataPlot]{AxisWait}[NumDataPlot]{xO, yO}{} + +\define@boolkeys[NumericDataPlot]{xAxis} + {NoGrid, NoTicks, NoLabel, NoTickLabel}[true] + +\define@boolkeys[NumericDataPlot]{yAxis} + {NoGrid, NoTicks, NoLabel, NoTickLabel}[true] + +\define@key[NumericDataPlot]{yAxis}{yLabelSep}[\origXLabelSep]{\setlength{\yLabelSep}{#1}} +\define@key[NumericDataPlot]{xAxis}{xLabelSep}[\origYLabelSep]{\setlength{\xLabelSep}{#1}} + +\define@choicekey+[NumericDataPlot]{xAxis}{AxisStyle}[\val\nrAxisStyle] +{Boxed,Lower,Upper,None}{ + \ifcase\nrAxisStyle\relax + \setboolean{PlotLowerAxis}{true} + \setboolean{PlotUpperAxis}{true} + \or + \setboolean{PlotLowerAxis}{true} + \setboolean{PlotUpperAxis}{false} + \or + \setboolean{PlotLowerAxis}{false} + \setboolean{PlotUpperAxis}{true} + \or + \setboolean{PlotLowerAxis}{false} + \setboolean{PlotUpperAxis}{false} + \fi +}{ + \PackageWarning{NumericPlots} + {AxisStyle #1 not defined. Use Boxed, Lower, Upper or None} +} + +\define@choicekey+[NumericDataPlot]{yAxis}{AxisStyle}[\val\nrAxisStyle] +{Boxed,Right,Left,None}{ + \ifcase\nrAxisStyle\relax + \setboolean{PlotRightAxis}{true} + \setboolean{PlotLeftAxis}{true} + \or + \setboolean{PlotRightAxis}{true} + \setboolean{PlotLeftAxis}{false} + \or + \setboolean{PlotRightAxis}{false} + \setboolean{PlotLeftAxis}{true} + \or + \setboolean{PlotRightAxis}{false} + \setboolean{PlotLeftAxis}{false} + \fi +}{ + \PackageWarning{NumericPlots} + {AxisStyle #1 not defined. Use Boxed, Right, Left or None} +} + + +% ---------------------------------------------------------------------------- +% | general keys +% | +% | picture width etc. +% ---------------------------------------------------------------------------- + +\define@cmdkeys[NumericDataPlot]{General}[NumDataPlotG]{ + xPicMin, yPicMin, xPicMax, yPicMax, + TickLength +} + + +\define@key[NumericDataPlot]{General}{llx}[\StdLLX]{ + \psset{llx=-#1} + \addtolength{\OffsetWidth}{\StdLLX} + \addtolength{\OffsetWidth}{-#1} +} +\define@key[NumericDataPlot]{General}{urx}[\StdURX]{ + \psset{urx=#1} + \addtolength{\OffsetWidth}{-\StdURX} + \addtolength{\OffsetWidth}{#1} +} +\define@key[NumericDataPlot]{General}{lly}[\StdLLY]{\psset{lly=#1}} +\define@key[NumericDataPlot]{General}{ury}[\StdURY]{\psset{ury=#1}} + + +% ---------------------------------------------------------------------------- +% | keys for the legend +% ---------------------------------------------------------------------------- + +\define@key[NumericDataPlot]{Legend}{nrCols}[1]{\renewcommand{\nrLegendCols}{#1}} +\define@key[NumericDataPlot]{Legend}{LegLineWidth}[20pt]{\setlength{\LegLineWidth}{#1}} + +\define@choicekey+[NumericDataPlot]{Legend}{LabelOrientation}[\val\nrLegOrient] +{r,l,c}{ + \ifcase\nrLegOrient\relax + \setboolean{LegendOrientationLeft}{false} + \setboolean{LegendOrientationRight}{true} + \setboolean{LegendOrientationCenter}{false} + \or + \setboolean{LegendOrientationLeft}{true} + \setboolean{LegendOrientationRight}{false} + \setboolean{LegendOrientationCenter}{false} + \or + \setboolean{LegendOrientationLeft}{false} + \setboolean{LegendOrientationRight}{false} + \setboolean{LegendOrientationCenter}{true} + \fi +}{ + \PackageWarning{NumericPlots}{LabelOrientation #1 not defined. Use r, l or c} +} + +\define@key[NumericDataPlot]{put}{x}{ + \FPsub{\NumDataPlotBuffer}{#1}{\NumDataPlotxMin} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotxDataCoordRatio} + \FPadd{\NDPputXcoord}{\NumDataPlotBuffer}{\NumDataPlotxCoordMin} +} +\define@key[NumericDataPlot]{put}{y}{ + \FPsub{\NumDataPlotBuffer}{#1}{\NumDataPlotyMin} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotyDataCoordRatio} + \FPadd{\NDPputYcoord}{\NumDataPlotBuffer}{\NumDataPlotyCoordMin} +} +\define@key[NumericDataPlot]{put}{RefPoint}[c]{ + \renewcommand{\NDPRefPoint}{#1} +} + +%------------------------------------------------------------------------------- + + +\newlength{\picwidth} +\newlength{\CPicWidth} +\newlength{\StdLLX}\setlength{\StdLLX}{-1.5cm} +\newlength{\StdLLY}\setlength{\StdLLY}{-1.25cm} +\newlength{\StdURX}\setlength{\StdURX}{2pt} +\newlength{\StdURY}\setlength{\StdURY}{2pt} +\newlength{\OffsetWidth} + + +\newlength{\origXLabelSep}\setlength{\origXLabelSep}{10pt} +\newlength{\origYLabelSep}\setlength{\origYLabelSep}{20pt} +\newlength{\xLabelSep}\setlength{\xLabelSep}{\origXLabelSep} +\newlength{\yLabelSep}\setlength{\yLabelSep}{\origYLabelSep} + +% ============================================================================== +% || +% || legend +% || +% ============================================================================== + + +\newcommand{\LegLineOld}[2][]{% + \setkeys[NumericDataPlot]{Legend}{#1} + % + \centering\Rnode{lab#2}{}% + \psline[style=#2,showpoints=false]([nodesep=0.5\LegLineWidth]lab#2)([nodesep=-0.5\LegLineWidth]lab#2)% + \psline[style=#2](lab#2)(lab#2)% +} + +\newcommand{\LegLine}[2][]{% + \setkeys[NumericDataPlot]{Legend}{#1} + % + \centering\Rnode{LegLineNode}{}% + \psline[#2,showpoints=false]([nodesep=0.5\LegLineWidth]LegLineNode)([nodesep=-0.5\LegLineWidth]LegLineNode)% + \psline[#2](LegLineNode)(LegLineNode)% +} + + +\newcommand{\LegendDefinition}[2][nrCols]{% + \setkeys[NumericDataPlot]{Legend}{#1}% + % + \psframebox[fillcolor=white, fillstyle=solid]{% + \ifLegendOrientationLeft + \begin{tabular}{*{\nrLegendCols}{p{\LegLineWidth}l}}% + #2% + \end{tabular}% + \fi + \ifLegendOrientationCenter + \begin{tabular}{*{\nrLegendCols}{p{\LegLineWidth}c}} + #2 + \end{tabular} + \fi + \ifLegendOrientationRight + \begin{tabular}{*{\nrLegendCols}{p{\LegLineWidth}r}} + #2 + \end{tabular} + \fi + }%psframebox +} + +% ============================================================================== +% || +% || axis labels +% || +% ============================================================================== + + +\newcommand{\LeftyLabel}[1]{ + \rput[b] + {!90 \NumDataPlotyLabelRotation\space add} + (!\NumDataPlotxCoordMin\space + \NumDataPlotyCoordRange\space \NumDataPlotyLabelPos\space mul + \NumDataPlotyCoordMin\space add){ + \begin{tabular}{c} + \NumDataPlotyLabelOption{}#1\\ + \vspace{\yLabelSep} + \end{tabular}} + \setlength{\yLabelSep}{\origYLabelSep} +} + +\newcommand{\RightyLabel}[1]{ + \rput[b] + {!270 \NumDataPlotyLabelRotation\space add} + (!\NumDataPlotxCoordMax\space + \NumDataPlotyCoordRange\space \NumDataPlotyLabelPos\space mul + \NumDataPlotyCoordMin\space add){ + \begin{tabular}{c} + \NumDataPlotyLabelOption{}#1\\ + \vspace{\yLabelSep} + \end{tabular}} + \setlength{\yLabelSep}{\origYLabelSep} +} + +\newcommand{\UpperxLabel}[1]{ + \rput[b]{!0 \NumDataPlotxLabelRotation\space add} + (!\NumDataPlotxCoordRange\space \NumDataPlotxLabelPos\space mul + \NumDataPlotxCoordMin\space add \NumDataPlotyCoordMax){ + \begin{tabular}{c} + \NumDataPlotxLabelOption{}#1\\ + \vspace{\xLabelSep} + \end{tabular}} + \setlength{\xLabelSep}{\origXLabelSep} +} + +\newcommand{\LowerxLabel}[1]{ + \rput[t]{!0 \NumDataPlotxLabelRotation\space add} + (!\NumDataPlotxCoordRange\space \NumDataPlotxLabelPos\space mul + \NumDataPlotxCoordMin\space add \NumDataPlotyCoordMin){ + \begin{tabular}{c} + \vspace{\xLabelSep}\\ + \NumDataPlotxLabelOption{}#1 + \end{tabular}} + \setlength{\xLabelSep}{\origXLabelSep} +} +% ============================================================================== +% || +% || Axis (Scaling) +% || +% ============================================================================== + +\newcommand{\ScaleAxes}{ + % calculate scaling: + % (<x> - xMin) * xDataCoordRatio + xCoordMin + % (<y> - yMin) * yDataCoordRatio + yCoordMin + % DataCoordRatio = (CoordMax-CoordMin)/(Max-Min) + % for logarithmic axes: + % (log(<x>) - log(xMin)) * xDataCoordRatio + xCoordMin + % (log(<y>) - log(yMin)) * yDataCoordRatio + yCoordMin + % DataCoordRatio = (CoordMax-CoordMin)/(log(Max)-log(Min)) + \renewcommand{\xScaling}{\LogxAxis\space \NumDataPlotxMin\space sub + \NumDataPlotxDataCoordRatio\space mul \NumDataPlotxCoordMin\space add} + \renewcommand{\yScaling}{\LogyAxis\space \NumDataPlotyMin\space sub + \NumDataPlotyDataCoordRatio\space mul \NumDataPlotyCoordMin\space add} + \pstScalePoints(1.0, 1.0){\xScaling}{\yScaling} +} + +% ============================================================================== +% || +% || x-Axis +% || +% ============================================================================== + +\newcommand{\setxAxis}[1]{ + % set the keys. xO and yO have to be set after xMin and yMin have been set! + % (xMin and yMin also set xO and yO but when xO and yO are set by the user, + % these values should be overwritten.) + \setkeys*[NumericDataPlot]{Axis} + [yO, yMin, yMax, Dy, dy, yCoordMin, yCoordMax, yLog]{#1} + \setrmkeys[NumericDataPlot]{AxisWait}[yO] + + % for logarithmic axes: calculate log(xMax), log(xMin), Dx=1, xO=ceil(xMin) + \ifNumericDataPlot@Axis@xLog + \FPln{\NumDataPlotBuffer}{\NumDataPlotxMax} + \FPdiv{\NumDataPlotxMax}{\NumDataPlotBuffer}{\NumDataPlotLnTen} + \FPround{\NumDataPlotxMax}{\NumDataPlotxMax}{3} + \FPln{\NumDataPlotBuffer}{\NumDataPlotxMin} + \FPdiv{\NumDataPlotxMin}{\NumDataPlotBuffer}{\NumDataPlotLnTen} + \FPround{\NumDataPlotxMin}{\NumDataPlotxMin}{3} + \renewcommand{\NumDataPlotDx}{1} + \FPadd{\NumDataPlotBuffer}{\NumDataPlotxMin}{0.5} + \FPtrunc{\NumDataPlotxO}{\NumDataPlotBuffer}{0} + \fi + + \FPsub{\NumDataPlotxRange}{\NumDataPlotxMax}{\NumDataPlotxMin} + \FPsub{\NumDataPlotxCoordRange}{\NumDataPlotxCoordMax}{\NumDataPlotxCoordMin} + \FPdiv{\NumDataPlotxDataCoordRatio}{\NumDataPlotxCoordRange}{\NumDataPlotxRange} + + % calculate number of ticks + \FPdiv{\xNrTicks}{\NumDataPlotxRange}{\NumDataPlotDx} + \FPtrunc{\xNrTicks}{\xNrTicks}{0} + + % calculate dx + \FPmul{\NumDataPlotdx}{\NumDataPlotxDataCoordRatio}{\NumDataPlotDx} + \FPround{\NumDataPlotdx}{\NumDataPlotdx}{2} + + % calculate coordinates of x origin + \FPsub{\NumDataPlotBuffer}{\NumDataPlotxO}{\NumDataPlotxMin} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotxDataCoordRatio}{\NumDataPlotBuffer} + \FPadd{\xCoordOrig}{\NumDataPlotBuffer}{\NumDataPlotxCoordMin} + \FPround{\xCoordOrig}{\xCoordOrig}{2} + + % calculate number of ticks on right side of the origin + \FPsub{\TicksXRight}{\NumDataPlotxMax}{\NumDataPlotxO} + \FPdiv{\TicksXRight}{\TicksXRight}{\NumDataPlotDx} + \FPtrunc{\TicksXRight}{\TicksXRight}{0} + + % calculate number of ticks on left side of the origin (number is negative!) + \FPsub{\TicksXLeft}{\NumDataPlotxMin}{\NumDataPlotxO} + \FPdiv{\TicksXLeft}{\TicksXLeft}{\NumDataPlotDx} + \FPsub{\TicksXLeft}{\TicksXLeft}{1} + \FPtrunc{\TicksXLeft}{\TicksXLeft}{0} + + \ScaleAxes{} +} + + +\newcommand{\plotxGridLine}[1]{ + \FPsub{\NumDataPlotBuffer}{\NumDataPlotxCoordMax}{#1} + \FPsub{\NumDataPlotBufferI}{#1}{\NumDataPlotxCoordMin} + \FPmin{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotBufferI} +% \FPifneg{\NumDataPlotBuffer} +% \else + % plot grid line + \ifNumericDataPlot@xAxis@NoGrid + \else + \psline[style=GridSt](#1, \NumDataPlotyCoordMin)(#1, \NumDataPlotyCoordMax) + \fi + % plot tick for lower axis and upper axis - if desired + \ifNumericDataPlot@xAxis@NoTicks + \else + \ifthenelse{\boolean{PlotLowerAxis}}{ + \psline[style=TickSt](#1, \NumDataPlotyCoordMin) + (!#1\space \NumDataPlotyCoordMin\space \xTickLength \space sub) + }{} + \ifthenelse{\boolean{PlotUpperAxis}}{ + \psline[style=TickSt](#1, \NumDataPlotyCoordMax) + (!#1 \NumDataPlotyCoordMax\space \xTickLength \space add) + }{} + \fi +% \fi +} + +\newcommand{\plotxSubGridLine}[1]{ + \FPsub{\NumDataPlotBuffer}{\NumDataPlotxCoordMax}{#1} + \FPsub{\NumDataPlotBufferI}{#1}{\NumDataPlotxCoordMin} + \FPmin{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotBufferI} + \FPifneg{\NumDataPlotBuffer} + \else + % plot grid line + \ifNumericDataPlot@xAxis@NoGrid + \else + \psline[style=GridSt](#1,\NumDataPlotyCoordMin)(#1,\NumDataPlotyCoordMax) + \fi + \fi +} + +\newcommand{\plotxTickLabels}[3]{ + \FPadd{\NumDataPlotBuffer}{\TicksXLeft}{1} + \FPround{\NumDataPlotBuffer}{\NumDataPlotBuffer}{0} + + % plot ticks on right side of the origin + \mmultido{\n=\NumDataPlotxO+\NumDataPlotDx}{\TicksXRight} + { + \rput[#3]{0}(!\NumDataPlotdx \space \NumDataPlotDx \space div \n + \space \NumDataPlotxO \space sub mul \xCoordOrig \space add \space #1 + \space \NumDataPlotxTickSep \space #2) + {\NumDataPlotxTickLabelOption{}$\LogxAxisLabel{\n}$} + } + % plot ticks on left side of the origin + \mmultido{\n=\NumDataPlotxO+\NumDataPlotDx}{\NumDataPlotBuffer} + { + \rput[#3]{0}(!\xCoordOrig \space \NumDataPlotdx \space + \NumDataPlotDx \space div \n \space \NumDataPlotxO \space sub mul add \space #1 \space \NumDataPlotxTickSep \space #2) + {\NumDataPlotxTickLabelOption{}$\LogxAxisLabel{\n}$} + } + % plot tick at origin + \rput[#3]{0}(!\xCoordOrig\space #1 \space + \NumDataPlotxTickSep\space #2) + {\NumDataPlotxTickLabelOption{}$\LogxAxisLabel{\NumDataPlotxO}$} +} + +\newcommand{\xLogSubGrid}[1]{ + \ifNumericDataPlot@Axis@xLog + \multido{\iSubb=2+2}{4}{ + \FPln{\NumDataPlotBuffer}{\iSubb} + \FPdiv{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotLnTen} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotxDataCoordRatio} + \FPadd{\NumDataPlotTickPos}{#1}{\NumDataPlotBuffer} + \plotxSubGridLine{\NumDataPlotTickPos} + } + \fi +} + +\newcommand{\plotxGrid}{ + % plot gridline on right side of the origin + \mmultido{\n=\xCoordOrig+\NumDataPlotdx}{\TicksXRight}{ + \plotxGridLine{\n} + \xLogSubGrid{\n} + } + % plot gridline on left side of the origin and at origin + \multido{\n=\xCoordOrig+\NumDataPlotdx}{\TicksXLeft}{ + \plotxGridLine{\n} + } + \FPsub{\NumDataPlotBuffer}{\TicksXLeft}{1} + \FPround{\NumDataPlotBuffer}{\NumDataPlotBuffer}{0} + \multido{\n=\xCoordOrig+\NumDataPlotdx}{\NumDataPlotBuffer}{ + \xLogSubGrid{\n} + } +} + +\newcommand{\plotxAxis}[2][]{ + \setkeys[NumericDataPlot]{xAxis}{#1} + + % plot grid, ticks and ticklabels + \plotxGrid{} + + + % plot lower axis + \ifthenelse{\boolean{PlotLowerAxis}} + { + \psline(\NumDataPlotxCoordMin,\NumDataPlotyCoordMin)(\NumDataPlotxCoordMax, \NumDataPlotyCoordMin) + \ifNumericDataPlot@xAxis@NoTickLabel + \else + \plotxTickLabels{\NumDataPlotyCoordMin}{sub}{t} + \fi + % plot label + \ifNumericDataPlot@xAxis@NoLabel + \else + \LowerxLabel{#2} + \fi + %plot upper axis (boxed) + \ifthenelse{\boolean{PlotUpperAxis}}{ + % plot upper axis + \psline(\NumDataPlotxCoordMin,\NumDataPlotyCoordMax)(\NumDataPlotxCoordMax, \NumDataPlotyCoordMax) + }{} + }{ + % plot upper axis (only upper axis) + \ifthenelse{\boolean{PlotUpperAxis}}{ + % plot upper axis + \psline(\NumDataPlotxCoordMin,\NumDataPlotyCoordMax)(\NumDataPlotxCoordMax, \NumDataPlotyCoordMax) + % plot ticklabels + \ifNumericDataPlot@xAxis@NoTickLabel + \else + \plotxTickLabels{\NumDataPlotyCoordMax}{add}{b} + \fi + % plot label + \ifNumericDataPlot@xAxis@NoLabel + \else + \UpperxLabel{#2} + \fi + }{} + } +} + +\newcommand{\repeatxAxis}{\plotxAxis[NoLabel, NoTickLabel]{}} + +% ============================================================================== +% || +% || y-Axis +% || +% ============================================================================== + +\newcommand{\plotyTickLabels}[3]{ + \FPadd{\NumDataPlotBuffer}{\TicksYLeft}{1} + \FPround{\NumDataPlotBuffer}{\NumDataPlotBuffer}{0} + % plot ticks on right side of the origin + \mmultido{\n=\NumDataPlotyO+\NumDataPlotDy}{\TicksYRight} + { + \rput[#3]{0}(!#1 \space \NumDataPlotyTickSep + \space #2 \space \NumDataPlotdy \space \NumDataPlotDy \space div \n \space \NumDataPlotyO \space sub mul \yCoordOrig \space add) + {\NumDataPlotyTickLabelOption{}$\LogyAxisLabel{\n}$} + } + % plot ticks on left side of the origin + \mmultido{\n=\NumDataPlotyO+\NumDataPlotDy}{\NumDataPlotBuffer} + { + \rput[#3]{0}(!#1 \space \NumDataPlotyTickSep + \space #2 \space \NumDataPlotdy \space \NumDataPlotDy \space div \n \space \NumDataPlotyO \space sub mul \yCoordOrig \space add) + {\NumDataPlotyTickLabelOption{}$\LogyAxisLabel{\n}$} + } + % plot tick at origin + \rput[#3]{0}(!#1 \space \NumDataPlotyTickSep\space #2 \space \yCoordOrig) + {\NumDataPlotyTickLabelOption{}$\LogyAxisLabel{\NumDataPlotyO}$} +} + +\newcommand{\setyAxis}[1]{ +% values from the x-axis must be ignored! If they weren't, the default values + % would be set! + \setkeys*[NumericDataPlot]{Axis} + [xO, xMin, xMax, xCoordMin, xCoordMax, Dx, dx, xLog]{#1} + \setrmkeys[NumericDataPlot]{AxisWait}[xO] + + % for logarithmic axes: calculate log(xMax), log(xMin), Dx=1, xO=ceil(xMin) + \ifNumericDataPlot@Axis@yLog + \FPln{\NumDataPlotBuffer}{\NumDataPlotyMax} + \FPdiv{\NumDataPlotyMax}{\NumDataPlotBuffer}{\NumDataPlotLnTen} + \FPround{\NumDataPlotyMax}{\NumDataPlotyMax}{6} + \FPln{\NumDataPlotBuffer}{\NumDataPlotyMin} + \FPdiv{\NumDataPlotyMin}{\NumDataPlotBuffer}{\NumDataPlotLnTen} + \FPround{\NumDataPlotyMin}{\NumDataPlotyMin}{6} + \renewcommand{\NumDataPlotDy}{1} + \FPadd{\NumDataPlotBuffer}{\NumDataPlotyMin}{0.5} + \FPtrunc{\NumDataPlotyO}{\NumDataPlotBuffer}{0} + \fi + + \FPsub{\NumDataPlotyRange}{\NumDataPlotyMax}{\NumDataPlotyMin} + \FPsub{\NumDataPlotyCoordRange}{\NumDataPlotyCoordMax}{\NumDataPlotyCoordMin} + \FPdiv{\NumDataPlotyDataCoordRatio}{\NumDataPlotyCoordRange}{\NumDataPlotyRange} + + % calculate number of ticks + \FPdiv{\yNrTicks}{\NumDataPlotyRange}{\NumDataPlotDy} + \FPtrunc{\yNrTicks}{\yNrTicks}{0} + + % calculate dy + \FPmul{\NumDataPlotdy}{\NumDataPlotyDataCoordRatio}{\NumDataPlotDy} + \FPround{\NumDataPlotdy}{\NumDataPlotdy}{2} + + % calculate coordinates of y origin + \FPsub{\NumDataPlotBuffer}{\NumDataPlotyO}{\NumDataPlotyMin} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotyDataCoordRatio}{\NumDataPlotBuffer} + \FPadd{\yCoordOrig}{\NumDataPlotBuffer}{\NumDataPlotyCoordMin} + \FPround{\yCoordOrig}{\yCoordOrig}{2} + + % calculate number of ticks on right side of the origin + \FPsub{\TicksYRight}{\NumDataPlotyMax}{\NumDataPlotyO} + \FPdiv{\TicksYRight}{\TicksYRight}{\NumDataPlotDy} + \FPtrunc{\TicksYRight}{\TicksYRight}{0} + + % calculate number of ticks on left side of the origin (number is negative!) + \FPsub{\TicksYLeft}{\NumDataPlotyMin}{\NumDataPlotyO} + \FPdiv{\TicksYLeft}{\TicksYLeft}{\NumDataPlotDy} + \FPsub{\TicksYLeft}{\TicksYLeft}{1} + \FPtrunc{\TicksYLeft}{\TicksYLeft}{0} + + % --- scaling --- + \ScaleAxes{} +} + + +\newcommand{\plotyGridLine}[1]{ + \FPsub{\NumDataPlotBuffer}{\NumDataPlotyCoordMax}{#1} + \FPsub{\NumDataPlotBufferI}{#1}{\NumDataPlotyCoordMin} + \FPmin{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotBufferI} + \FPifpos{\NumDataPlotBuffer} + % plot grid line + \ifNumericDataPlot@yAxis@NoGrid + \else + \psline[style=GridSt](\NumDataPlotxCoordMin, #1)(\NumDataPlotxCoordMax, #1) + \fi + % plot tick for lower axis and upper axis - if desired + \ifNumericDataPlot@yAxis@NoTicks + \else + \ifthenelse{\boolean{PlotLeftAxis}}{ + \psline[style=TickSt](\NumDataPlotxCoordMin, #1) + (!\NumDataPlotxCoordMin\space \yTickLength \space sub #1) + }{} + \ifthenelse{\boolean{PlotRightAxis}}{ + \psline[style=TickSt](\NumDataPlotxCoordMax, #1) + (!\NumDataPlotxCoordMax\space \yTickLength \space add #1) + }{} + \fi + \fi +} + +\newcommand{\plotySubGridLine}[1]{ + \FPsub{\NumDataPlotBuffer}{\NumDataPlotyCoordMax}{#1} + \FPsub{\NumDataPlotBufferI}{#1}{\NumDataPlotyCoordMin} + \FPmin{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotBufferI} + \FPifpos{\NumDataPlotBuffer} + % plot grid line + \ifNumericDataPlot@yAxis@NoGrid + \else + \psline[style=GridSt](\NumDataPlotxCoordMin, #1)(\NumDataPlotxCoordMax, #1) + \fi + \fi +} + + + +\newcommand{\yLogSubGrid}[1]{ + \ifNumericDataPlot@Axis@yLog + \multido{\iSubb=2+2}{4}{ + \FPln{\NumDataPlotBuffer}{\iSubb} + \FPdiv{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotLnTen} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotyDataCoordRatio} + \FPadd{\NumDataPlotTickPos}{#1}{\NumDataPlotBuffer} + \plotySubGridLine{\NumDataPlotTickPos} + } + \fi +} + +\newcommand{\plotyGrid}{ + % plot gridline on right side of the origin + \mmultido{\n=\yCoordOrig+\NumDataPlotdy}{\TicksYRight}{ + \plotyGridLine{\n} + \yLogSubGrid{\n} + } + % plot gridline on left side of the origin + \multido{\n=\yCoordOrig+\NumDataPlotdy}{\TicksYLeft}{ + \plotyGridLine{\n} + } + \FPsub{\NumDataPlotBuffer}{\TicksYLeft}{1} + \FPround{\NumDataPlotBuffer}{\NumDataPlotBuffer}{0} + \multido{\n=\yCoordOrig+\NumDataPlotdy}{\NumDataPlotBuffer}{ + \yLogSubGrid{\n} + } +% \putS{ +% TicksYLeft: \TicksYLeft +% } +} + +\newcommand{\plotyAxis}[2][]{ + \setkeys[NumericDataPlot]{yAxis}{#1} + + % plot grid + \plotyGrid + + % plot lower axis + \ifthenelse{\boolean{PlotLeftAxis}} + { + \psline(\NumDataPlotxCoordMin,\NumDataPlotyCoordMin)(\NumDataPlotxCoordMin, \NumDataPlotyCoordMax) + \ifNumericDataPlot@yAxis@NoTickLabel + \else + \plotyTickLabels{\NumDataPlotxCoordMin}{sub}{r} + \fi + % plot upper axis + \ifthenelse{\boolean{PlotRightAxis}} + { + \psline(\NumDataPlotxCoordMax,\NumDataPlotyCoordMin)(\NumDataPlotxCoordMax, \NumDataPlotyCoordMax) + }{} + % --- label --- + \ifNumericDataPlot@yAxis@NoLabel + \else + \LeftyLabel{#2} + \fi + }{ + \ifthenelse{\boolean{PlotRightAxis}} + { + \psline(\NumDataPlotxCoordMax,\NumDataPlotyCoordMin)(\NumDataPlotxCoordMax, \NumDataPlotyCoordMax) + \ifNumericDataPlot@yAxis@NoTickLabel + \else + \plotyTickLabels{\NumDataPlotxCoordMax}{add}{l} + \fi + % --- label --- + \ifNumericDataPlot@yAxis@NoLabel + \else + \RightyLabel{#2} + \fi + }{} + } +} + +% ============================================================================== +% || +% || commands... +% || +% ============================================================================== + +\newcommand{\NDPput}[2][]{ + \setkeys[NumericDataPlot]{put}{RefPoint=c} + \setkeys[NumericDataPlot]{put}{#1} + \rput[\NDPRefPoint](\NDPputXcoord, \NDPputYcoord){#2} +} + +\newcommand{\NDPhline}[2][]{ + + \FPsub{\NumDataPlotBuffer}{#2}{\NumDataPlotyMin} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotyDataCoordRatio} + \FPadd{\NDPputYcoord}{\NumDataPlotBuffer}{\NumDataPlotyCoordMin} + + \psline[#1](\NumDataPlotxCoordMin, \NDPputYcoord) + (\NumDataPlotxCoordMax, \NDPputYcoord) +} + +\newcommand{\NDPvline}[2][]{ + + \FPsub{\NumDataPlotBuffer}{#2}{\NumDataPlotxMin} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotxDataCoordRatio} + \FPadd{\NDPputXcoord}{\NumDataPlotBuffer}{\NumDataPlotxCoordMin} + + \psline[#1](\NDPputXcoord, \NumDataPlotyCoordMin) + (\NDPputXcoord, \NumDataPlotyCoordMax) +} + +\newcommand{\NDPline}[5][]{ + + \FPsub{\NumDataPlotBuffer}{#2}{\NumDataPlotxMin} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotxDataCoordRatio} + \FPadd{\NDPputXcoordOne}{\NumDataPlotBuffer}{\NumDataPlotxCoordMin} + + \FPsub{\NumDataPlotBuffer}{#2}{\NumDataPlotxMin} + \FPmul{\NumDataPlotBuffer}{\NumDataPlotBuffer}{\NumDataPlotxDataCoordRatio} + \FPadd{\NDPputXcoordOne}{\NumDataPlotBuffer}{\NumDataPlotxCoordMin} + + + \psline[#1] + (!#2 \NumDataPlotxMin\space sub \NumDataPlotxDataCoordRatio\space mul + \NumDataPlotxCoordMin\space add + #3 \NumDataPlotyMin\space sub \NumDataPlotyDataCoordRatio\space mul + \NumDataPlotyCoordMin\space add) + (!#4 \NumDataPlotxMin\space sub \NumDataPlotxDataCoordRatio\space mul + \NumDataPlotxCoordMin\space add + #5 \NumDataPlotyMin\space sub \NumDataPlotyDataCoordRatio\space mul + \NumDataPlotyCoordMin\space add) +} + +% ============================================================================== +% || +% || environment NumericDataPlot +% || +% ============================================================================== + + +\newenvironment{NumericDataPlot}[3][]{ + % + \setlength{\OffsetWidth}{-\StdLLX +\StdURX} + % set standard values (they will be reset by setkeys if defined) + \psset{llx=\StdLLX, lly=\StdLLY, ury=\StdURY, urx=\StdURX} + % + \setkeys[NumericDataPlot]{General}{#1} + % + \setlength{\CPicWidth}{#2 - \OffsetWidth} + % calculate length of the yTicks: + % PicCoordWidth (=GxPicMax-GxPicMin) -> PicWidth (=#2) + % Length -> 1mm * yTickLength + % yTickLength must be negative + \setcounter{BufferCounter}{1*\ratio{#2}{1mm}} + \FPsub{\NumDataPlotBuffer}{\NumDataPlotGxPicMax}{\NumDataPlotGxPicMin} + \FPdiv{\NumDataPlotBufferI}{\NumDataPlotBuffer}{\theBufferCounter} + \FPmul{\yTickLength}{\NumDataPlotBufferI}{\NumDataPlotGTickLength} + \FPmul{\yTickLength}{\NumDataPlotBufferI}{-1} + % calculate length of the xTicks + \setcounter{BufferCounter}{1*\ratio{#3}{1mm}} + \FPsub{\NumDataPlotBuffer}{\NumDataPlotGyPicMax}{\NumDataPlotGyPicMin} + \FPdiv{\NumDataPlotBufferI}{\NumDataPlotBuffer}{\theBufferCounter} + \FPmul{\xTickLength}{\NumDataPlotBufferI}{\NumDataPlotGTickLength} + \FPmul{\xTickLength}{\NumDataPlotBufferI}{-1} + + \FPdiv{\NumDataPlotxTickSep}{\NumDataPlotGxPicMax}{20} + \FPround{\NumDataPlotxTickSep}{\NumDataPlotxTickSep}{0} + \FPdiv{\NumDataPlotyTickSep}{\NumDataPlotGyPicMax}{20} + \FPround{\NumDataPlotyTickSep}{\NumDataPlotyTickSep}{0} +% \FPdiv{\xTickLength}{\NumDataPlotGxPicMax}{-75} +% \FPround{\xTickLength}{\xTickLength}{0} +% \FPdiv{\yTickLength}{\NumDataPlotGyPicMax}{-75} +% \FPround{\yTickLength}{\yTickLength}{0} + \begin{psgraph}[fillstyle=solid, fillcolor=gray, + xAxis=false, yAxis=false] (\NumDataPlotGxPicMin, \NumDataPlotGyPicMin)(\NumDataPlotGxPicMin, \NumDataPlotGyPicMin)(\NumDataPlotGxPicMax, \NumDataPlotGyPicMax) + {\CPicWidth}{#3} +}{ + \pstScalePoints(1.0, 1.0){0 add}{0 add} + \end{psgraph} +} + + +\psset{xunit=1mm, yunit=1mm, xAxisLabel={}, yAxisLabel={}} + + +% ============================================================================ +% || +% || Definition of styles +% || +% ============================================================================ + +\newpsstyle{GridSt}{linecolor=gray, linestyle=dotted, linewidth=0.75pt} +\newpsstyle{TickSt}{linecolor=black, linestyle=solid, linewidth=0.5pt} + + +\definecolor{LineColorA}{cmyk}{1 0.25 0 0} %blue +\definecolor{LineColorB}{cmyk}{1 0 1 0.2} %green +\definecolor{LineColorC}{cmyk}{0 1 1 0.2} %red +\definecolor{LineColorD}{cmyk}{0 0.7 1 0} % orange +\definecolor{LineColorE}{cmyk}{0.7 1 0 0} % purple +\definecolor{LineColorF}{cmyk}{1 0 0 0} % light blue +\definecolor{LineColorG}{cmyk}{0 0.25 1 0} % yellow + +\newpsstyle{StdLineStyA}{linecolor=LineColorA} +\newpsstyle{StdLineStyB}{linecolor=LineColorB} +\newpsstyle{StdLineStyC}{linecolor=LineColorC} +\newpsstyle{StdLineStyD}{linecolor=LineColorD} +\newpsstyle{StdLineStyE}{linecolor=LineColorE} +\newpsstyle{StdLineStyF}{linecolor=LineColorF} +\newpsstyle{StdLineStyG}{linecolor=LineColorG} + +\DeclareOptionX{BW}{ + \newpsstyle{StdLineStyA} + {linecolor=lightgray,linestyle=solid,linewidth = 1.5pt} + \newpsstyle{StdLineStyB} + {linecolor=gray,linestyle=solid,linewidth = 1.0pt} + \newpsstyle{StdLineStyC} + {linecolor=black,linestyle=solid,linewidth = 0.75pt} + \newpsstyle{StdLineStyD} + {linecolor=black,linestyle=dashed, dash = 3pt 2pt,linewidth = 0.75pt} + \newpsstyle{StdLineStyE} + {linecolor=gray,linestyle=dashed,dash = 3pt 2pt,linewidth = 1.0pt} + \newpsstyle{StdLineStyF} + {linecolor=black,linestyle=dotted, dotsep =2pt,linewidth = 1.5pt} + \newpsstyle{StdLineStyG} + {linecolor=gray,linestyle=dotted, dotsep =2pt,linewidth = 1.5pt} +} + +\DeclareOptionX{beamer}{ + \renewcommand{\StdLLY}{-1.0cm} + \renewcommand{\StdTickLabelOption}{\footnotesize} + \setlength{\origXLabelSep}{1pt} +} +\DeclareOptionX{xAxisStyle}[Boxed]{ + \presetkeys[NumericDataPlot]{xAxis}{AxisStyle=#1}{} +} +\DeclareOptionX{yAxisStyle}[Boxed]{ + \presetkeys[NumericDataPlot]{yAxis}{AxisStyle=#1}{} +} +\DeclareOptionX{LabelOption}[{}]{ + \renewcommand{\StdLabelOption}{#1} +} +\DeclareOptionX{TickLabelOption}[{}]{ + \renewcommand{\StdTickLabelOption}{#1} +} +\ProcessOptionsX + +% \ProcessOptions + +% =========================================================================== +% || +% || set standard values for keys +% || +% =========================================================================== +\presetkeys[NumericDataPlot]{Axis}{ + xMax=100, xMin=0, Dx=10, + xCoordMax=\NumDataPlotGxPicMax, xCoordMin=\NumDataPlotGxPicMin, + xLog=false, + yMax=100, yMin=0, Dy=10, + yCoordMax=\NumDataPlotGyPicMax, yCoordMin=\NumDataPlotGyPicMin, + yLog=false, + }{} +\presetkeys[NumericDataPlot]{xAxis}{ + NoGrid=false, NoTicks=false, NoLabel=false, NoTickLabel=false, + LabelRotation=0, LabelPos=0.5, TickSep=20, LabelOption=\StdLabelOption{}, + TickLabelOption=\StdTickLabelOption{} }{} +\presetkeys[NumericDataPlot]{yAxis}{ + NoGrid=false, NoTicks=false, NoLabel=false, NoTickLabel=false, + LabelRotation=0, LabelPos=0.5, TickSep=20, LabelOption=\StdLabelOption{}, + TickLabelOption=\StdTickLabelOption{} }{} + +% if xO/yO are not set they'll be set to xMin/yMin +\presetkeys[NumericDataPlot]{AxisWait}{ + xO=\NumDataPlotxMin, yO=\NumDataPlotyMin +}{} + +\presetkeys[NumericDataPlot]{General}{ + xPicMin=0, yPicMin=0, xPicMax=1000, yPicMax=1000, TickLength=2}{} + +\presetkeys[NumericDataPlot]{Legend}{ + LabelOrientation=l +}{} + +% =========================================================================== +% || +% || commands to put something at a location of the plot +% || +% =========================================================================== + +% put in the NorthWest corner of the plot +\newcommand{\putNW}[1]{ +\rput[lt]{0}(\NumDataPlotxCoordMin, \NumDataPlotyCoordMax){#1}} +% put in the SouthWest corner of the plot +\newcommand{\putSW}[1]{ +\rput[lb]{0}(\NumDataPlotxCoordMin, \NumDataPlotyCoordMin){#1}} +% put in the NorthEast corner of the plot +\newcommand{\putNE}[1]{ +\rput[rt]{0}(\NumDataPlotxCoordMax, \NumDataPlotyCoordMax){#1}} +% put in the SouthEast corner of the plot +\newcommand{\putSE}[1]{ +\rput[rb]{0}(\NumDataPlotxCoordMax, \NumDataPlotyCoordMin){#1}} +% put in the South of the plot +\newcommand{\putS}[1]{ +\rput[b]{0}(!\NumDataPlotxCoordMax\space\NumDataPlotxMin\space sub 2 div +\NumDataPlotxCoordMin\space add \NumDataPlotyCoordMin){#1}} +% put in the North of the plot +\newcommand{\putN}[1]{ +\rput[t]{0}(!\NumDataPlotxCoordMax\space\NumDataPlotxCoordMin\space sub 2 div +\NumDataPlotxCoordMin\space add \NumDataPlotyCoordMax){#1}} +% put in the West of the plot +\newcommand{\putW}[1]{ +\rput[l]{0}(!\NumDataPlotxCoordMin\space +\NumDataPlotyCoordMax\space\NumDataPlotyCoordMin\space sub 2 div \NumDataPlotyCoordMin\space add){#1}} +% put in the East of the plot +\newcommand{\putE}[1]{ +\rput[r]{0}(!\NumDataPlotxCoordMax\space +\NumDataPlotyCoordMax\space\NumDataPlotyCoordMin\space sub 2 div \NumDataPlotyCoordMin\space add){#1}} |