466 lines
22 KiB
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}
|
|
|