This repository has been archived on 2021-05-17. You can view files and clone it, but cannot push or open issues or pull requests.
scientificComputing/plotting/lecture/plotting_de.tex

466 lines
22 KiB
TeX

\chapter{Graphische Darstellung von Daten}
Die F\"ahigkeit zur ad\"aquaten Darstellung wissenschaftlicher Daten
darf durchaus zu den notwendigen Kernkompetenzen gez\"ahlt werden. Wir
brauchen sie um unsere Daten und Ergebnisse \"uberzeugend darzustellen
und um das Verst\"andnis zu vereinfachen.
\begin{figure}[hb!]
\includegraphics[width=0.9\columnwidth]{convincing}
\titlecaption{Die Folgen schlecht annotierter
Plots.}{\url{www.xkcd.com}} \label{xkcdplotting}
\end{figure}
\section{Was macht einen guten Plot aus?}
Graphen sollen dem geneigten Leser erm\"oglichen, die Daten zu
erfassen und die beschriebenen Ergebnisse und Effekte zu begutachen,
zu hinterfragen und zu validieren.
Eine der obersten Regeln ist die vollst\"andige Annotation von Plots:
Achsenbeschriftung mit Einheiten und Legenden
(\figref{xkcdplotting}).
Eine weiteres Prinzip f\"ur ansprechende Graphiken ist die \emph{ink
minimization}. Dieses Prinzip fordert, dass das Verh\"altnis aus
Tinte, die f\"ur die Darstellung der Daten gebraucht wird und der
Menge Tinte, die f\"ur sonstige Elemente der Graphik aufgewendetwird
m\"oglichst gro{\ss} ist. Mit anderen Worten: \"uberfl\"ussige
Ausschm\"uckungen sollten sich in Datenplots nur selten finden lassen;
die Daten sollen im Vordergrund stehen. Eine Ausnahme kann gemacht
werden, wenn der Plot z.B in einer Pr\"asentation oder zu didaktischen
Zwecken genutzt wird.
\begin{important}[Beschriftung von Plots]
Ein Datenplot muss ausreichend beschriftet werden:
\begin{itemize}
\item Alle Achsen m\"ussen eine Bezeichnung und eine Einheit erhalten\\
(z.B. \code[xlabel()]{xlabel('Geschwindigkeit [m/s]'}).
\item Wenn mehrere Dinge in einem Plot dargestellt werden, m\"ussen
diese mit einer Legende oder \"ahnlichem benannt werden
\matlabfun{legend()}.
\item Mehrere Plots mit den gleichen Gr\"o{\ss}en auf den Achsen,
m\"ussen den gleichen Wertebereich auf den Achsen zeigen
(z.B. \code[xlim()]{xlim([0 100])}.\\
Ausnahmen sind m\"oglich, sollten aber in der
Abbildungsunterschrift erw\"ahnt werden.
\item Die Beschriftung mu{\ss} gro{\ss} genug sein, um lesbar zu sein.
\end{itemize}
\end{important}
\section{Dinge, die vermieden werden sollten.}
Bei der Darstellung wissenschaftlicher Daten sollte drauf geachtet
werden suggestive oder fehlleitende Darstellungen zu vermeiden.
Ablenkung durch \"uberm\"a{\ss}ige Effekte lassen einen Plot unruhig
und unseri\"os wirken (Versto{\ss} gegen das Prinzip \enterm{ink
minimization}). Comicartige Effekte wie z.B. in
\figref{comicexamplefig} sind nicht geeignet um Daten darzustellen. Im
didaktischen Kontext hingegen kann dieser Stil hilfreich sein, um zu
betonen, dass es sich um illustrative Beispiele handelt bei denen es
nicht auf die genaue Lage der Datenpunkte ankommt.
\begin{figure}[t]
\includegraphics[width=0.7\columnwidth]{outlier}\vspace{-3ex}
\titlecaption{Comicartige Darstellungen.}{Sie sind f\"ur die Darstellung
wissenschaftlicher Daten nicht geeignet. F\"ur illustrative Beispiele
k\"onnen sie aber helfen, die wesentlichen Aspekte zu betonen.}\label{comicexamplefig}
\end{figure}
Im Folgenden werden einige Beispiele fehlleitender oder suggestiver
Darstellungen gezeigt. Einiger dieser Effekte sind deutlich
\"uberzeichnet, sie werden aber, etwas dezenter nat\"urlich, mitunter
mit voller Absicht eingesetzt, um die Wahrnehmung in die gewollte
Richtung zu beeinflussen. Auf Wikipedia gibt es weitere Beispiele
(\url{https://en.wikipedia.org/wiki/Misleading_graph}).
\begin{figure}[p]
\includegraphics[width=0.35\textwidth]{misleading_pie}
\hspace{0.05\textwidth}
\includegraphics[width=0.35\textwidth]{sample_pie}
\titlecaption{Perspektivische Verzerrung beeinflusst die
Gr\"o{\ss}enwahrnehmung.}{Durch die Wahl der perspektivischen
Darstellung erscheint das hervorgehobene Segment C des
Tortendiagramms als mindestens gleichwertig zu Segment A. Die
2-dimensionale Darstellung rechts macht deutlich, dass die
scheinbare Gleichwertigkeit der Segmente A und C eine reine
Illusion ist. Quelle:
\url{https://en.wikipedia.org/wiki/Misleading_graph}}\label{misleadingpiefig}
\end{figure}
\begin{figure}[p]
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[width=0.9\textwidth]{line_graph1}
\end{minipage}
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[width=0.9\textwidth]{line_graph1_3}
\end{minipage}
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[width=0.9\textwidth]{line_graph1_4}
\end{minipage}
\titlecaption{Die Wahl der Zeichenfl\"ache beeinflusst den visuellen
Eindruck.}{Alle drei Plots zeigen die gleichen Daten. Allein die
Skalierung der Zeichenfl\"ache unterscheidet sich und beeinflusst,
wie stark der Zusammenhang zwischen den Gr\"o{\ss}en auf der x-
und y-Achse wahrgenommen wird. Quelle:
\url{https://en.wikipedia.org/wiki/Misleading_graph}}\label{misleadingscalingfig}
\end{figure}
\begin{figure}[p]
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[width=0.8\textwidth]{improperly_scaled_graph}
\end{minipage}
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[width=0.8\textwidth]{comparison_properly_improperly_graph}
\end{minipage}
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[width=0.7\textwidth]{properly_scaled_graph}
\end{minipage}
\titlecaption{Die Skalierung von Symbolen kann problematisch sein.}
{In diesen Graphen werden Symbole eingesetzt um Messgr\"o{\ss}en in
zwei Kategorien zu vergleichen. Die Messgr\"o{\ss}e in Kategorie B
ist dabei 3-fach so gro{\ss}. Im linken Fall wird das einzelne
Symbol f\"ur Kategorie B proportional auf die 3-fache H\"ohe
skaliert (die Seitenverh\"altnisse bleiben erhalten). Dies scheint
auf den ersten Blick korrekt, f\"uhrt aber dazu, dass das Symbol
der Kategorie B nicht nur dreifach gewachsen ist sondern nun die
neunfache Fl\"ache besitzt. Der Plot rechts zeigt die korrekte
Verwendung von Symbolen. Quelle:
\url{https://en.wikipedia.org/wiki/Misleading_graph}} \label{misleadingsymbolsfig}
\end{figure}
Durch perspektivische Effekte k\"onnen Gr\"o{\ss}enverh\"altnisse
verzerrt dargestellt werden (\figref{misleadingpiefig}). Ver\"anderung
der Achsenskalierungen kann die Wahrnehmung des Betrachters in die
eine oder andere Richtung lenken. Ein Zusammenhang kann so
verschleiert oder \"ubertrieben werden
(\figref{misleadingscalingfig}). Insbesondere wenn die Gr\"o{\ss}e
von Symbolen zur Darstellung einer Quantit\"at eingesetzt wird, muss
mit Vorsicht vorgegangen werden, um Unterschiede nicht \"uberproportional
darzustellen (\figref{misleadingsymbolsfig}).
\section{Das Plottingsystem von \matlab{}}
Plotten in \matlab{} ist zun\"achst einmal einfach. Durch den Aufruf
von \code[plot()]{plot(x, y)} wird ein einfacher, schlichter Linienplot
erstellt. Diesem Plot fehlen jedoch jegliche Annotationen wie
Achsbeschriftungen, Legenden, etc. Es gibt zwei M\"oglichkeiten diese
hinzuzuf\"ugen: (i) das Graphische User Interface oder (ii) die
Kommandozeile. Beide haben ihre Berechtigung sowie Vor- und
Nachteile.
\begin{figure}
\begin{minipage}[t]{0.6\textwidth}
\includegraphics[height=0.29\textheight]{plot_editor}
\end{minipage}
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[height=0.29\textheight]{property_editor}
\end{minipage}
\titlecaption{Der \matlab{} Plot-Editor.}{\"Uber das Menu
``Tools $\rightarrow$ Edit Plot'' erreicht man den Plot Editor. Je nachdem
welches Element des Plots ausgew\"ahlt wurde, ver\"andern sich
die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und
Einstellungen k\"onnen \"uber den ``Property Editor'', rechts,
eingesehen und ver\"andert werden. Der ``Property Editor'' ist
\"uber die Schaltfl\"ache ``More Properties''
erreichbar.}\label{ploteditorfig}
\end{figure}
W\"ahrend es bequem ist, die Abbildung mit der GUI
(\figref{ploteditorfig}) zu bearbeiten sind die erhaltenen Ergebnisse
nicht einfach reproduzierbar oder \"ubertragbar. Wenn eine Abbildung
korrigiert werden musss, wird es schwierig und zeitaufwendig.
Plots in \matlab{} bestehen aus mehreren Elementen:
\begin{enumerate}
\item \enterm[figure]{Figure}: Dieses Element stellt die gesamte
Zeichenf\"ache, das Blatt Papier, dar.
\item \enterm[axes]{Axes}: Das Koordinatensystem in welches gezeichnet wird.
\item \enterm[lines]{Lines}: Die gezeichneten Datenplots wie Linien,
Fl\"achen, etc.
\item \enterm[annotations]{Annotations}: Annotationen wie Textboxen
oder auch Pfeile, die zum Hervorheben von Punkten, oder Abschnitten
gedacht sind.
\item \enterm[legends]{Legends}: Legenden der Datenplots.
\end{enumerate}
Jedes dieser Elemente bietet eine Vielzahl von
Einstellungsm\"oglichkeiten. Wie schon erw\"ahnt, k\"onnen diese
\"uber die GUI (Abbildung \ref{ploteditorfig}) bearbeitet werden.
Alle Einstellungen, die \"uber das graphische Interface vorgenommen
werden k\"onnen, sind auch \"uber Befehle auf der Kommandozeile
m\"oglich. Auf diese Weise k\"onnen Einstellungen problemlos in ein
Skript oder eine Funktion eingebaut werden. Dieser Ansatz hat den
gro{\ss}en Vorteil, dass man sich die M\"uhe nur einmal machen
muss. Die Abbildungen k\"onnen exakt reproduziert werden und m\"ussen
nicht mehr neu beschriftet werden, wenn sich die Daten ver\"andert
oder erweitert haben, oder wenn der gleiche Plot von vielen
Datens\"atzen erstellt werden soll.
\begin{important}[Manuelle Bearbeitung vermeiden]
Das nachtr\"agliche Bearbeiten und Beschriften der Abbildungen mit
einem beliebigen Graphikprogramm erscheint auf den ersten Blick
bequem, birgt aber seine eigenen Risiken (z.B. verrutschte Achsen,
verlorengegangene Beschriftungen, etc.) und ist auf lange Sicht sehr
aufwendig, da bei ver\"anderter Datenlage die Graphik nur manuell
reproduzierbar ist. Deshalb sollten publikationsreife Abbildungen immer
vollst\"andig aus \matlab{} heraus erzeugt werden und eine
Nachbearbeitung mit Graphikprogrammen m\"oglichst ganz vermieden
werden.
\end{important}
\subsection{Einfaches Plotten}
Einen einfachen Linienplot zu erstellen ist denkbar
einfach. Angenommen, es existiert einer Variable \varcode{y} im
\enterm{Workspace}, die die darzustellenden Daten enth\"alt. Es
gen\"ugt folgender Funktionsaufruf: \code[plot()]{plot(y)}. Wenn bislang noch
keine Abbildung erstellt wurde, \"offnet \matlab{} ein neues Fenster
und stellt die Daten als Linienplot dar. Dabei werden die Datenpunkte
durch eine Linie verbunden. Die Messpunkte selbst sind nicht
sichtbar. Wenn schon eine Abbildung existiert, wird der Inhalt
ersetzt. Das Festhalten von bestehenden Plots kann an- oder abgestellt
werden indem \code{hold on} bzw. \code{hold off} vor dem \code{plot()}
Befehl aufgerufen wird.
Im obigen Plot Aufruf wird nur ein Argument, das \varcode{y}, an die
Funktion \code{plot()} \"ubergeben. \code{plot()} erh\"alt nur die
y-Werte. \matlab{} substituiert in diesem Fall die fehlenden x-Werte,
indem eine Schrittweite von 1 angenommen wird. Die x-Achse reicht also
von 1 bis zur L\"ange des Vektors \varcode{y}. Diese Skalierung der
x-Achse ist nur in den wenigsten F\"allen erw\"unscht. Besser ist es,
die zugeh\"origen x-Werte explixit zu \"ubergeben und so z.B. die
y-Werte als Funktion der Zeit darzustellen (\code[plot()]{plot(x, y)}).
Standard\"a{\ss}ig wird der erste Lininenplot in blau, mit
durchgezogener Linie, ohne Marker und der Strichst\"arke 1
dargestellt. Der zweite Linienplot erh\"alt automatisch die Farbe
'rot'. Alle anderen Eigenschaften sind identisch. Die Reihenfolge der
Farben ist vordefiniert kann aber durch das Setzen einer
\enterm{colormap} beeinflusst werden. Die Tabellen
\ref{plotlinestyles} zeigen vordefinierte Werte f\"ur den Linienstil,
die Farbe und die verschiedenen Marker.
\begin{table}[tp]
\titlecaption{Vordefinierte Linienstile (links), Farben (Mitte) und Markersymbole (rechts).}{}\label{plotlinestyles}
\begin{tabular}[t]{lc} \hline
\textbf{Linienstil} & \textbf{K\"urzel} \erh \\\hline
durchgezogen & '\verb|-|' \erb \\
gestrichelt & '\verb|--|' \\
gepunktet & '\verb|:|' \\
Strichpunkte & '\verb|.-|' \\\hline
\end{tabular}
\hfill
\begin{tabular}[t]{lc} \hline
\textbf{Farbe} & \textbf{K\"urzel} \erh \\ \hline
Rot & 'r' \erb \\
Gr\"un & 'g' \\
Blau & 'b' \\
Cyan & 'c' \\
Magenta & 'm' \\
Gelb & 'y' \\
Schwarz & 'k' \\ \hline
\end{tabular}
\hfill
\begin{tabular}[t]{lc} \hline
\textbf{Markersymbol} & \textbf{K\"urzel} \erh \\ \hline
Kreis & 'o' \erb \\
Stern & '*' \\
Plus & '+' \\
Kreuz & 'x' \\
Diamant & 'd' \\
Pentagramm & 'p' \\
Hexagramm & 'h' \\
Quadrat & 's' \\
Dreieck & '\^{}' \\
Umgekehrtes Dreieck & 'v' \\
Dreieck links & '$<$'\\
Dreieck rechts & '$>$'\\\hline
\end{tabular}
\end{table}
\subsection{Ver\"andern von Linieneigenschaften}
Die Eigenschaften des Linienplots k\"onnen \"uber weitere Argumente
der \code{plot()} Funktion ver\"andert werden. Folgender Aufruf (Listing
\ref{settinglineprops})erzeugt einen roten Linienplot mit gepunkteter
Linie der St\"arke 1.5 und Sternmarkern an den Positionen der
Datenpunkte. Zus\"atzlich wird noch die Eigenschaft
\code{displayname} gesetzt, um dem Linienplot einen Namen zu
geben, der in einer Legende verwendet werden kann.
\begin{lstlisting}[label=settinglineprops, caption={Setzen von Linieneigenschaften beim \varcode{plot} Aufruf}]
x = 0:0.1:2*pi;
y = sin(x);
plot( x, y, 'color', 'r', 'linestyle', ':', 'marker', '*', 'linewidth', 1.5, 'displayname', 'plot 1')
\end{lstlisting}
\subsection{Ver\"andern von Achseneigenschaften}
Das erste, was ein Plot zus\"atzlich braucht, ist eine
Achsenbeschriftung. Mithilfe der Funktionen \code[xlabel()]{xlabel('Time [ms]')}
und \code[ylabel()]{ylabel('Voltage [V]')} k\"onnen diese gesetzt
werden.
Standardm\"a{\ss}ig setzt Matlab die Grenzen der x- und y-Achse so,
dass die Daten hineinpassen. Dabei wird meist auf den n\"achsten
ganzzahligen Wert aufgerundet. Mit den Funktionen \code{xlim()} und
\code{ylim()} k\"onnen die Grenezen der Achsen aber auch manuell
eingestellt werden. Die Funktionen \code{xlim()} und \code{ylim()}
erwarten als Argument einen 2-elementigen Vektor mit dem Minimum und
dem Maximum der jeweiligen Achse. Tabelle \ref{plotaxisprops} listet
weitere h\"aufig genutzte Einstellungen der Achsen. Mit der
\code{set()} - Funktion k\"onnen diese ver\"andert werden wie in Zeile
15 in Listing \ref{niceplotlisting} gezeigt. Die \code{set()} -
Funktion erwartet als erstes Argument ein sogenanntes Handle der
Achse, dieses wird gefolgt von einer beliebig langen Reihe von
Eigenschaft-Wert Paaren. Soll z.B. das Gitternetz der x-Achse gezeigt
werden, wird die Eigenschaft \code{XGrid} auf den Wert
\varcode{'on'} gesetzt: \code[set()!set(gca, 'XGrid',
'on')]{set(gca, 'XGrid', 'on');}. Das erste Argument ist ein Aufruf
der Funktion \code{gca}, \enterm{get-current-axis} und ist das Achsenhandle
der gerade aktiven Achse.
\begin{table}[tp]
\titlecaption{Ausgew\"ahlte Eigenschaften der Achse.}{ Alle Eigenschaften der Achse findet man in der Hilfe oder im \codeterm{Property Editor} (\figref{ploteditorfig}). Wenn es eine definierte Auswahl von Einstellungen gibt, z.B. bei der Eigenschaft \code{Box}, dann ist die Standardeinstellungen als erstes gelistet.}\label{plotaxisprops}
\begin{tabular*}{1\textwidth}{lp{5.8cm}p{5.5cm}} \hline
\textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \erh \\ \hline
\code{Box} & Definiert, ob der Rahmen der Achse vollst\"andig gezeichnet wird. & $\{'on'|'off'\}$ \erb \\
\code{Color} & Hintergrundfarbe des Koordinatensystems. & Beliebige RGB, CMYK Werte. \\
\code{Fontname} & Der Name der Schriftart. & Im System installierte Schriften. \\
\code{FontSize} & Gr\"o{\ss}e der Schrift. & Skalarer Wert.\\
\code{FontUnit} & Einheit, in der die Schriftgr\"o{\ss}e bestimmt wird. & $\{'points' | 'centimeters' | 'inches', ...\}$\\
\code{FontWeight} & Fett- oder Normalsatz der Schrift. & $\{'normal' | 'bold'\}$\\
% & 'd' \\ ??????
\code{TickDir} & Richtung der Teilstriche auf der Achse. & $\{'in' | 'out'\}$\\
\code{TickLength} & L\"ange der Haupt- und Nebenteilstriche & \\
\code{X-, Y-, ZDir} & Richtung der Achsskalierung. & $\{'normal' | 'reversed'\}$\\
\code{X-, Y-, ZGrid} & Sollen Gitternetzlinien gezeigt werden? & $\{'off'|'on'\}$ \\
\code{X-, Y-, ZScale} & Lineare oder logarithmische Skalierung der Achse. & $\{'linear' | 'log'\}$\\
\code{X-, Y-, ZTick} & Position der Teilstriche auf der Achse. & Vektor mit Positionen.\\
\code{X-, Y-, ZTickLabel} & Beschriftung der Teilstriche. & Vektor mit entsprechenden Zahlen oder Cell-Array mit Strings.\\ \hline
\end{tabular*}
\end{table}
\subsection{Ver\"andern von Figure-Einstellungen}
\begin{table}[tp]
\titlecaption{Ausgew\"ahlte Eigenschaften der Figure.}{Alle Eigenschaften der \enterm[figure]{Figure} findet man in der Hilfe von \matlab{} oder im \codeterm{Property Editor} wenn die Abbildung ausgew\"ahlt wurde (\figref{ploteditorfig}).}\label{plotfigureprops}
\begin{tabular*}{1\textwidth}{lp{6.6cm}p{5.7cm}} \hline
\textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \erh \\ \hline
\code{Color} & Hintergrundfarbe der Zeichenfl\"ache. & Beliebige RGB, CMYK Werte. \erb \\
\code{PaperPosition} & Position der Abbildung auf dem Papier & 4-elementiger Vektor mit den Positionen der linken-unteren, und rechten-oberen Ecke. \\
\code{PaperSize} & Gr\"o{\ss}e der des Papiers. & 2-elementiger Vektor mit der Papiergr\"o{\ss}e.\\
\code{PaperUnits} & Einheit, in der die Papiergr\"o{\ss}e bestimmt wird. & $\{'inches' | 'centimeters' | 'normalized' | 'points'\}$\\
\code{Visible} & Hilfreich, wenn ein Plot aus Performanzgr\"unden nicht auf dem Bildschirm gezeigt, sondern direkt gespeichert werden soll. & $\{'on' | 'off'\}$\\ \hline
\end{tabular*}
\end{table}
Wie die Achse, hat auch das \codeterm{Figure} Element eine Reihe von
Eigenschaften, die nach Bedarf mit der \code{set()} - Funktion gesetzt
werden k\"onnen (Tabelle \ref{plotfigureprops} listet die
meistverwendeten). Das erste Argument f\"ur \code{set()} ist jetzt
aber eine Handle f\"ur die Abbildung, nicht das
Koordinatensystem. Statt der Funktion \code{gca} wird \code{gcf}
(\enterm{get-current-figure}) benutzt.
Das folgende Listing \ref{niceplotlisting} zeigt wie ein Skript
aussehen k\"onnte, das die notwendigen Anpassungen vornimmt. Bei jedem
Aufruf des Skripts wird exakt der gleiche Plot (Abbildung
\ref{spikedetectionfig}) erstellt und gespeichert. Erw\"ahnenswert
sind hier vor allem die Zeilen 2 und 3 in denen die Gr\"o{\ss}e der
Abbildung in Zentimetern definiert wird. In Zeile 16 wird die
Abbildung dann in genau der angegebenen Gr\"o{\ss}e im ``pdf'' Format
gespeichert. Dazu wird die Funktion \code{saveas()} verwendet, die als
erstes Argument wieder ein Handle auf die Figure erwartet. Das zweite
Argument ist der Dateiname, und zuletzt muss das gew\"unschte Format
(Box \ref{graphicsformatbox}) angegeben werden.
\begin{figure}[t]
\includegraphics{spike_detection}
\titlecaption{Automatisch erstellter Plot.}{Dieser Plot wurde vollst\"andig
mit dem Skript in Listing \ref{niceplotlisting} erstellt und
gespeichert.}\label{spikedetectionfig}
\end{figure}
\begin{ibox}[t]{\label{graphicsformatbox}Dateiformate f\"ur Abbildungen.}
Es gibt zwei grunds\"atzlich verschiedene Arten von Dateiformaten f\"ur
Graphiken:
\begin{enumerate}
\item \determ{Rastergraphik} (\enterm{bitmap})
\item \determ{Vektorgraphik} (\enterm{vector graphics})
\end{enumerate}
Bei Rastergraphiken wird f\"ur jeden Bildpunkt (jedes Pixel) der
aktuelle Farbwert angegeben. Rastergraphiken haben eine bestimmte
Aufl\"osung (z.B. 300\,dpi --- dots per inch). Sie sind vor allem
f\"ur Fotos geeignet. Im Gegensatz dazu werden bei Vektorgraphiken
die Abbildungen durch sogenannte Primitive (Linien, Kreise,
Polygone, ...) beschrieben. Der Vorteil der Vektorgraphiken
ist die Skalierbakeit ohne Qualit\"atsverlust.
\begin{minipage}[t]{0.38\textwidth}
\mbox{}\\[-2ex]
\includegraphics[width=0.85\textwidth]{VectorBitmap.pdf}
\rotatebox{90}{\footnotesize by Darth Stabro at en.wikipedia.org}
\end{minipage}
\hfill
\begin{minipage}[t]{0.5\textwidth}
Von \matlab{} unterst\"utzte Formate\footnote{mehr Information in der Hilfe zu \code{saveas()}}:\\[2ex]
\begin{tabular}{|l|c|l|}
\hline
\textbf{Format} & \textbf{Typ} & \code{saveas()} Argument \erh \\ \hline
pdf & Vektor & \varcode{'pdf'} \erb \\
eps & Vektor & \varcode{'eps'}, \varcode{'epsc'} \\
SVG & Vektor & \varcode{'svg'} \\
PS & Vektor & \varcode{'ps'}, \varcode{'psc'} \\
jpg & Bitmap & \varcode{'jpeg'} \\
tif & Bitmap & \varcode{'tiff'}, \varcode{'tiffn'} \\
png & Bitmap & \varcode{'png'} \\
bmp & Bitmap & \varcode{'bmp'} \\ \hline
\end{tabular}
\end{minipage}
Wenn aus \matlab{} heraus Graphiken gespeichert werden sollen, dann
ist es meistens sehr sinnvoll sie als Vektorgraphik zu speichern. Im
Zweifelsfall k\"onnen diese sp\"ater immer noch in Rastergraphiken
umgewandelt werden. Der Weg von einer Rastergraphik zu einer
Vektorgraphik ist dagegen nicht verlustfrei m\"oglich. Das Speichern von
Abbildungen mit sehr vielen graphischen Elementen (z.B. ein
Rasterplot mit tausenden von Aktionspotentialen) ist als
Rastergraphik allerdings deutlich schneller und speichereffizienter.
\end{ibox}
\lstinputlisting[caption={Skript zur Erstellung des Plots in \figref{spikedetectionfig}.}, label=niceplotlisting]{automatic_plot.m}
Neben den Standard-Linienplots gibt es eine ganze Reihe weiterer
M\"oglichkeiten Daten zu Visualisieren. Mathworks zeigt auf seiner
Homepage viele Beispiele mit zugeh\"origem Code
\url{http://www.mathworks.de/discovery/gallery.html}.
\section{Fazit}
Ein guter Datenplot stellt die Daten m\"oglichst vollst\"andig und
n\"uchtern dar. Verzerrungen durch perspektivische Darstellungen,
Achs- oder Symbolskalierungen sollten vermieden werden.
Wenn verschiedene Linienplots in einen Graphen geplottet werden,
sollte neben der Farbe auch der Linienstil (durchgezogen, gepunktet,
gestrichelt, etc.) variiert werden, um auch im Schwarz-Wei{\ss}-Druck
eine Unterscheidung zu erm\"oglichen.
Bei der Farbwahl sollte auf
Kombinationen aus Rot und Gr\"un verzichtet werden, da sie f\"ur einen nicht
unwesentlichen Teil der m\"annlichen Bev\"olkerung nicht
unterscheidbar sind.
Achte bei der Erstellung von Plots insbesondere auf:
\begin{itemize}
\item Klarheit.
\item Vollst\"andige und lesbare Beschriftung.
\item Deutliche Unterscheidbarkeit von Kurven.
\item Keine suggestive Darstellung.
\item Ausgewogenheit von Linienst\"arken, Schrift- und Plotgr\"o{\ss}e.
\item Fehlerbalken, wenn sie angebracht sind.
\end{itemize}