summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pst-plot/dtk02-2.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-09-21 21:36:56 +0000
committerKarl Berry <karl@freefriends.org>2013-09-21 21:36:56 +0000
commita03e855f0d4ad31c9354f9b7b2f3a7adc421267b (patch)
tree56635aee8fde687055b08bea7cac279f7e021e69 /Master/texmf-dist/doc/generic/pst-plot/dtk02-2.tex
parentb05efd90841695c51b476d3d3875f020a8ffdf4e (diff)
pst-plot (21sep13)
git-svn-id: svn://tug.org/texlive/trunk@31715 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-plot/dtk02-2.tex')
-rw-r--r--Master/texmf-dist/doc/generic/pst-plot/dtk02-2.tex375
1 files changed, 375 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-plot/dtk02-2.tex b/Master/texmf-dist/doc/generic/pst-plot/dtk02-2.tex
new file mode 100644
index 00000000000..353db1f24f8
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-plot/dtk02-2.tex
@@ -0,0 +1,375 @@
+\documentclass[ngerman]{dtk}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+%\usepackage{pslatex}
+\usepackage{tabularx}
+\usepackage{url}
+\usepackage{graphicx}
+\usepackage{cite}
+%\makeatletter
+%\newcommand{\La}%
+% {L\kern-.36em
+% {\setbox0\hbox{T}%
+% \vbox to\ht0{\hbox{$\m@th$%
+% \csname S@\f@size\endcsname
+% \fontsize\sf@size\z@
+% \math@fontsfalse\selectfont
+% A}%
+% \vss}%
+% }}
+%\makeatother
+%\def\AllTeX{(\La\kern-.075em)\kern-.075em\TeX}
+
+\begin{document}
+\NeedPackage{tabularx}
+\NeedPackage{url}
+\NeedPackage{graphicx}
+\NeedPackage{cite}
+
+
+\title{Die Plot-Funktionen von \texttt{pst-plot}}
+\author{Laura E. Jackson\and Herbert Voß}
+\maketitle
+\begin{abstract}
+ Im letzten Heft wurden die mathematischen Funktionen von \PS~im
+ Zusammenhang mit dem \LaTeX-Paket \texttt{pst-plot} zum Zeichnen von
+ Funktionen beschrieben und durch Beispiele erläutert. In diesem Teil
+ werden die bislang nur erwähnten Plot-Funktionen für externe Daten
+ behandelt.
+\end{abstract}
+
+\section{Einführung}
+Die graphische Darstellung externer Datensätze gehört zu den
+Standardproblemen von technisch-wissenschaftlichen Veröffentlichungen.
+Sehr häufig werden diese mit \texttt{gnuplot} eingelesen, dargestellt,
+mit Koordinatenachsen und weiteren Hinweisen versehen und dann
+abschließend nach \LaTeX\ exportiert. Im Folgenden werden Wege
+aufgezeigt, die den Umweg über \texttt{gnuplot} oder entsprechende
+Programme überflüssig machen können.
+
+Die Geschichte und die Bedeutung von \PS\ wurden hinreichend im
+letzten Heft \cite{dtk02.1:voss:mathematischen} behandelt, ebenso wie
+das benötigte Paket \texttt{pst-plot}
+(\url{CTAN:/graphics/pstricks/latex/pst-plot.sty}), welches Teil des
+Pakets \texttt{pstricks} ist und mit der Anweisung
+\texttt{\textbackslash{}usepackage\{pst-plot\}} einzubinden ist. Daher
+braucht an dieser Stelle nicht weiter auf diese spezifischen Dinge
+eingegangen zu werden.
+
+Das Paket \texttt{pst-plot} stellt die folgenden drei Plot-Funktionen
+für die Darstellung externer Daten mit folgender Syntax zur Verfügung:
+
+\begin{verbatim}
+\fileplot*[<Parameter>]{<Dateiname>}
+\dataplot*[<Parameter>]{<Befehle>}
+\listplot*[<Parameter>]{<Liste>}
+\end{verbatim}
+
+Die Sternversionen stehen hierbei wie für alle Objekte von
+\texttt{PSTricks} jeweils für die inverse Darstellung der Daten,
+d.\,h. für eine standardmäßige Schwarz-Weiß-Grafik erhält man mit der
+Sternversion das Negativ. Im Folgenden wird nur die normale
+Darstellung berücksichtigt, da dies keine Einschränkung der
+Allgemeinheit bedeutet.
+
+Im Zusammenhang mit den Plot-Funktionen sind noch folgende Befehle
+interessant, die ebenfalls durch das Paket \texttt{pst-plot} definiert
+sind:
+
+\begin{verbatim}
+\readdata{<Objectname>}{<Dateiname>}
+\savedata{<Objectname>}{<Dateiname>}
+\end{verbatim}
+
+Weitere Informationen kann man der Dokumentation zu \texttt{pstricks}
+entneh\-men\cite{pstricks} oder der umfangreichen Beschreibung in
+\cite{companion,girou:01:,girou:02:}, die jedoch alle nicht die
+wesentlichen Unterschiede zwischen den drei Plot-Funktionen
+herausarbeiten. Für alle Beispiele wird jeweils die komplette
+\texttt{pspicture}-Umgebung angegeben, so dass eine direkte Übernahme
+der Beispiele möglich ist. Eine Dokumentation des
+\texttt{multido}-Befehls findet man unter \url{CTAN:
+ /macros/latex209/contrib/multido/multido.doc}, alle anderen hier
+nicht weiter erwähnten in der Dokumenation zu
+\texttt{pstricks} \cite{pstricks}.
+
+\section{Plot-Stile}
+
+Insbesondere der Plot-Stil ist als Parameter von Bedeutung und kann
+folgende Werte annehmen:
+
+\noindent\begin{tabularx}{1.0\linewidth}{rX}\toprule
+ \emph{Stilparameter} & \emph{Bedeutung}\\\midrule
+% \hline
+ \texttt{plotstyle=dots} & Wertepaare als einzelne Punkte setzen\\
+ \texttt{=line} & Wertepaare durch eine Gerade verbinden\\
+ \texttt{=polygon} & Wie \texttt{line}, nur mit geschlossenem
+ Linienzug\\
+ \texttt{=curve} & Interpolation zwischen den Wertepaaren,
+ wobei die Kurve über den Anfangs-/Endpunkt
+ hinausgehen kann\\
+ \texttt{=ecurve} & Wie \texttt{curve}, nur beginnt/endet die
+ Kurve bei dem Anfangs-/Endwertepaar.\\
+ \texttt{=ccurve} & Wie \texttt{curve}, nur mit geschlossenem
+ Kurvenzug\\\bottomrule
+\end{tabularx}
+
+Bei einer fehlenden Angabe wird grundsätzlich die \texttt{line}-Option
+gewählt.
+
+
+\section{Beispiele für \texttt{\textbackslash{}fileplot}}
+
+\texttt{fileplot} ist immer dann angebracht, wenn in einer Datei
+gespeicherte Zahlenpaare $(x|y)$ geplottet werden sollen. Diese sind
+als reine Zahlenwerte paarweise in einer oder mehreren Zeilen
+anzuordnen und dürfen nur auf vier verschiedene Arten getrennt sein
+(Leerschritt, Komma oder runde bzw. geschweifte Klammern):
+
+\verb#x y x,y (x,y) {x,y}#
+
+Der als Trenner häufig benutzte Tabulator (\texttt{\textbackslash{}t}
+bzw. \texttt{\textbackslash{}009}) ist demnach nicht zulässig, kann
+aber leicht durch Texteditoren oder für Unix mit
+
+\texttt{tr '\textbackslash{}t' ' ' < inFile > outFile}
+
+ersetzt werden. Diese Datendateien dürfen bis auf das \TeX-übliche
+Kommentarzeichen "`\%"' keine anderen Zeichen außer den
+Zahlenwerten selbst enthalten.
+
+Das erste Beispiel zeigt ein UV/VIS-Absorptionsspektrum ($A=\lg
+\frac{I_{0}}{I}$ als Funktion der Wellenlänge), während das zweite
+eine Populationsentwicklung in Abhängigkeit des Brutfaktors darstellt
+(Feigenbaum-Diagramm). Aus dem jeweils angegebenen Quellcode ergibt
+sich die Art des Plot-Stils.
+
+\begin{minipage}[c]{0.45\linewidth}%
+ \centering\includegraphics{plot-pdf-fig1}
+\end{minipage}%
+\hfill\begin{minipage}[c]{0.52\linewidth}%
+ \scriptsize
+\begin{verbatim}
+\psset{xunit=0.003cm,yunit=1.5cm}
+\begin{pspicture}(-0.25,-0.25)(1950,4)
+ \fileplot[plotstyle=line, linewidth=1.5pt]{%
+ fileplot.data}
+ \psaxes[dx=400,Dx=400]{->}(1900,4)
+ \multido{\n=200+200}{9}{%
+ \psline[linestyle=dotted](\n,0)(\n,4)
+ }
+ \multido{\n=+1}{5}{%
+ \psline[linestyle=dotted](0,\n)(1800,\n)
+ }
+\end{pspicture}
+\end{verbatim}
+\end{minipage}%
+
+\begin{minipage}[c]{0.48\linewidth}%
+\centering\includegraphics{plot-pdf-fig2}
+\end{minipage}%
+\hfill{}\begin{minipage}[c]{0.48\linewidth}%
+\scriptsize\begin{center}
+\begin{verbatim}
+\psset{xunit=1.5cm,yunit=6cm}
+\begin{pspicture}(-0.25,-.25)(4.25,1)
+ \fileplot[plotstyle=dots]{feigenbaum.data}
+ \psaxes{->}(0,0)(4.05,1)
+ \rput(4,-0.05){$x$}
+ \rput(0.2,1.05){$y$}
+ \rput[l](0.2,3.5){Feigenbaum-Diagramm}
+\end{pspicture}
+\end{verbatim}
+\end{center}
+\end{minipage}%
+
+
+\texttt{fileplot} hat den Vorteil der einfachen Anwendung, aber den
+wesentlichen Nachteil, extrem speicherintensiv zu sein, denn \TeX{}
+muss erst alle Zahlenpaare vor einer weiteren Verarbeitung laden. Man
+kann davon ausgehen, dass man bei mehr als 1000 Punkten
+Schwierigkeiten mit der standardmäßig eingestellten
+\TeX-Speicherkapazität bekommen kann. Weiterhin erhöht sich durch das
+Laden der Zahlenpaare die Zeit eines Kompilationsvorgangs ganz
+erheblich.
+
+Eine Möglichkeit, Speicherproblemen aus dem Weg zu gehen, ist die
+Anwendung der \texttt{\textbackslash{}PSTtoEPS}-Funktion des Pakets
+\texttt{pst-eps}, auf die hier jedoch nicht weiter eingegangen wird
+(siehe dazu \cite{pstricks}).
+
+
+\section{Beispiel für \texttt{\textbackslash{}dataplot}}
+
+Ebenso wie \texttt{\textbackslash{}fileplot} benötigt
+\texttt{\textbackslash{}dataplot} einen externen Datensatz, der durch
+eine andere Anwendung erstellt wurde. Im Gegensatz dazu kann dieser
+externe Datensatz jedoch nicht mit \texttt{\textbackslash{}dataplot}
+selbst geladen werden. Dies erfolgt mit dem oben angegebenen
+Befehl \texttt{\textbackslash{}readdata}, beispielsweise
+
+\texttt{\textbackslash{}readdata\{\textbackslash{}feigenbaum\}\{feigenbaum.data\}}
+
+\texttt{\textbackslash{}feigenbaum} ist dann der Name des
+Grafikobjekts. Die Zahl der eingelesenen Dateien ist nur durch den
+Speicher bestimmt, d.\,h. dass mit \texttt{\textbackslash{}dataplot}
+einfache Overlays möglich sind. Die Ausgabe dieser Daten erfolgt mit
+\texttt{\textbackslash{}dataplot\{<Objektname>\}}, beispielsweise
+\texttt{\textbackslash{}dataplot\{\textbackslash{}feigenbaum\}}.
+
+Das angegebene Beispiel zeigt zwei getrennte Datendateien, die in
+einem Koordinatensystem dargestellt werden. Es handelt sich um die
+Sortierzeiten der Verfahren "`Bubble-Sort"' und "`Select-Sort"' in
+Abhängigkeit der Anzahl der zu sortierenden Elemente, wobei das
+Verfahren der Parameter ist. Die Anordnung der Elemente war zu Beginn
+jeweils zufällig verteilt.
+
+\begin{minipage}[c]{0.55\linewidth}%
+ \centering\includegraphics{plot-pdf-fig3}
+\end{minipage}%
+\hfill{}\begin{minipage}[c]{0.42\linewidth}%
+ \scriptsize\begin{center}
+\begin{verbatim}
+\psset{xunit=0.0005cm,yunit=0.005cm}
+\begin{pspicture}(0,0)(10000,1000)
+ \readdata{\bubble}{bubble.data}
+ \readdata{\select}{select.data}
+ \dataplot[plotstyle=line]{\bubble}
+ \dataplot[plotstyle=line]{\select}
+ \psline{->}(0,0)(10000,0)
+ \psline{->}(0,0)(0,1000)
+ \rput[l](40,920){Zeit}
+ \rput[r](9990,-30){Elemente}
+ \rput[l](4500,800){Bubble-Sort}
+ \rput[l](7500,200){Select-Sort}
+\end{pspicture}
+\end{verbatim}
+\end{center}
+\end{minipage}%
+
+
+Grundsätzlich bleibt festzustellen, dass für den reinen Anwender zwischen
+\texttt{dataplot} und \texttt{fileplot} formal kein wesentlicher Unterschied
+besteht. Bei größeren Datenmengen bringt \texttt{dataplot} den Vorteil
+der schnelleren Verarbeitung und Darstellung, wobei es dafür aber
+noch speicherplatzintensiver als \texttt{fileplot} ist.
+
+Weiterhin benutzt \texttt{\textbackslash{}dataplot} intern die im
+nächsten Abschnitt beschriebene Funktion
+\texttt{\textbackslash{}listplot}, wenn Parameter angegeben werden.
+Daraus folgt, dass \texttt{\textbackslash{}dataplot} letztlich nur
+Sinn macht, wenn Polygonzüge gezeichnet werden sollen. In diesem Fall
+zeichnet sich diese Funktion durch eine größere Plot-Geschwindigkeit
+aus, macht aber andererseits nichts anderes als die
+\texttt{pspolygon}-Funktion.
+
+
+\section{Beispiel für \texttt{\textbackslash{}listplot}}
+
+Im Gegensatz zu den vorhergehenden Plot-Funktionen wird das Argument
+von \texttt{\textbackslash{}listplot} zuerst von \TeX{} expandiert,
+wenn es sich um einen \TeX-Befehl handelt, andernfalls wird es
+unverändert an \PS\ durchgereicht. Daraus folgt, dass man komplette
+\PS-Programme im Argument von \texttt{\textbackslash{}listplot}
+ablegen kann. Diese Möglichkeit der Kombination von \TeX{} und
+\PS\ bleibt jedoch in der gesamten Literatur zu \texttt{PSTricks}
+faktisch unberücksichtigt. Dies liegt wohl auch daran, dass
+\texttt{PSTricks} sehr \PS-nah programmiert wurde, sodass sich
+letztlich für jede Anwendung entsprechende \texttt{PSTricks}-Befehle
+finden lassen.
+
+Das angegebene Beispiel zeigt in der Originaldarstellung die
+Entwicklung eines Hènon-Attraktors. Die rechte Grafik enthält
+zusätzlich zum normalen Datensatz einen durch erweiterten \PS-Code
+erzwungenen "`Draft"'-Hinweis. Hierbei ist zum Verständnis allerdings
+eine Kenntnis der \PS-Befehle unabdingbar, wenn dies fehlerfrei
+erfolgen soll. Der angegebene Source\-code enthält aus Platzgründen
+nicht die eigentlichen Daten, die lediglich aus einer Folge von
+Zahlenpaaren bestehen, die durch "`space"' voneinander zu trennen
+sind.
+
+\begin{minipage}[c]{0.48\linewidth}%
+\centering\includegraphics{plot-pdf-fig4}
+\end{minipage}%
+\hfill{}\begin{minipage}[c]{0.48\linewidth}%
+\centering\includegraphics{plot-pdf-fig5}
+\end{minipage}
+
+\begin{minipage}[t]{0.48\linewidth}%
+\scriptsize\begin{verbatim}
+\readdata{\henon}{henon.dat}
+\psset{xunit=1.5cm, yunit=3cm}
+\begin{pspicture}(-2,-0.75)(2.25,1.5)
+ \psaxes{->}(0,0)(-2,-0.5)(1.5,1.25)
+ \listplot[%
+ showpoints=true,%
+ plotstyle=curve]{\henon}
+\end{pspicture}
+\end{verbatim}
+\end{minipage}%
+\hfill{}\begin{minipage}[t]{0.48\linewidth}%
+\scriptsize\begin{center}\begin{verbatim}
+\newcommand{\DataB}{%
+ [ ... Daten ... ]
+ gsave % speichere Grafikstatus
+ /Helvetica findfont 40 scalefont setfont
+ 45 rotate % Rotiere um 45 Grad
+ 0.9 setgray % 1 entspricht Weiß
+ -60 10 moveto (DRAFT) show
+ grestore
+}
+\psset{xunit=1.5cm, yunit=3cm}
+\begin{pspicture}(-3,-0.75)(2.25,1.5)
+ \psaxes{->}(0,0)(-2,-0.5)(1.5,1.25)
+ \listplot[%
+ showpoints=true,%
+ plotstyle=curve]{\dataB}
+\end{pspicture}
+\end{verbatim}
+\end{center}
+\end{minipage}%
+
+
+Zum Manipulieren des Datensatzes von \texttt{\textbackslash{}listplot}
+kann alternativ auch die entsprechende Funktion aus \texttt{pst-plot}
+verändert werden. Möchte man beispielsweise, aus welchen Gründen auch
+immer, die $x|y$-Werte vertauschen und den Graphen um 45° rotieren
+lassen (was einer Rotation um die x-Achse mit anschließender Drehung
+entspricht), so kann dies einfach durch Neudefinition von
+\texttt{\textbackslash{}pst@def} erfolgen, was dann zur folgenden
+Abbildung führt:
+
+\begin{minipage}{0.48\linewidth}
+\scriptsize\begin{center}\begin{verbatim}
+\makeatletter
+\pst@def{ScalePoints}<%
+%----------------------------------------
+ 45 rotate % rotiere alle Objekte
+%----------------------------------------
+ /y ED /x ED
+ counttomark dup dup cvi eq
+ not { exch pop } if
+ /m exch def /n m 2 div cvi def
+ n {
+%----------------------------------------
+ exch % tausche oberste Stackelemente
+%----------------------------------------
+ y mul m 1 roll
+ x mul m 1 roll
+ /m m 2 sub
+ def } repeat>
+\makeatother
+\end{verbatim}
+\end{center}\end{minipage}%
+\hfill
+\begin{minipage}{0.48\linewidth}
+ \centering\includegraphics{plot-pdf-fig6}
+\end{minipage}
+
+
+\bibliography{plot}
+
+\address{Herbert}{Voß}{Wasgenstr. 21\\14129 Berlin\\voss@perce.de}
+\address{Laura Elizabeth}{Jackson}{Raleigh, North Carolina (USA)\\
+ lejacks2@unity.ncsu.edu }
+\end{document}