diff options
author | Karl Berry <karl@freefriends.org> | 2013-09-21 21:36:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-09-21 21:36:56 +0000 |
commit | a03e855f0d4ad31c9354f9b7b2f3a7adc421267b (patch) | |
tree | 56635aee8fde687055b08bea7cac279f7e021e69 /Master/texmf-dist/doc/generic/pst-plot/dtk02-2.tex | |
parent | b05efd90841695c51b476d3d3875f020a8ffdf4e (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.tex | 375 |
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} |