463 lines
22 KiB
TeX
463 lines
22 KiB
TeX
\chapter{\tr{Data plotting}{Graphische Darstellung von Daten}}
|
|
|
|
\section{Dos and Don'ts bei der graphischen Darstellung von Daten}
|
|
|
|
Die F\"ahigkeit zur ad\"aquaten Darstellung wissenschaftlicher Daten
|
|
darf man durchaus zu den notwendigen Kernkompetenzen z\"ahlen. Wir
|
|
brauchen sie um unsere Daten und Ergebnisse \"uberzeugend darzustellen
|
|
und 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}
|
|
|
|
\subsection{Was soll ein Plot leisten?}
|
|
Graphen sollen dem geneigten Leser erm\"oglichen die Daten zu erfassen
|
|
und die beschriebenen Effekte zu begutachen, zu hinterfragen und zu
|
|
validieren. Eine der obersten Regeln ist die vollst\"andige Annotation
|
|
von Plots (Abbildung \ref{xkcdplotting}). Eine weiteres Prinzip, an
|
|
das man sich halten sollte, 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. Eine Ausnahme kann
|
|
gemacht werden, wenn der Plot z.B in einer Pr\"asentation oder zu
|
|
didaktischen Zwecken genutzt wird.
|
|
|
|
\subsection{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. Comicartige Effekte wie z.B. in Abbildung
|
|
\ref{comicexamplefig} sind in der Regel nicht zul\"assig. Ausnahme ist
|
|
hier allerdings der Einsatz im didaktischen Kontext, wo es um die
|
|
Illustration (z.B. einer Methode) geht und kein Anspruch auf
|
|
Korrektheit besteht.
|
|
|
|
\begin{figure}
|
|
\includegraphics[width=0.35\columnwidth]{images/one_d_problem_c}
|
|
\titlecaption{Comicartige Darstellungen}{ sind f\"ur die Darstellung
|
|
wissenschaftlicher Daten nicht geeignet.}\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}).
|
|
|
|
Durch perspektivische Effekte k\"onnen Gr\"o{\ss}enverh\"altnisse
|
|
verzerrt dargestellt werden (z.B. Abbildung
|
|
\ref{misleadingpiefig}). Ver\"anderung der Achsenskalierungen kann die
|
|
Wahrnehmung des Betrachters in die ein oder andere Richtung
|
|
lenken. Ein Zusammenhang kann so verschleiert oder \"ubertrieben
|
|
werden (Abbildung \ref{misleadingscalingfig}). Insbesondere wenn die
|
|
Gr\"o{\ss}e von Symbolen zur Darstellung einer Quantit\"at eingesetzt
|
|
werden, muss man mit Vorsicht vorgehen um Unterschiede nicht
|
|
\"uberproportional darzustellen (Abbildung
|
|
\ref{misleadingsymbolsfig}).
|
|
|
|
\begin{figure}
|
|
\begin{minipage}[t]{0.4\textwidth}
|
|
\includegraphics[width=\textwidth]{images/misleading_pie}
|
|
\end{minipage}
|
|
\begin{minipage}[t]{0.4\textwidth}
|
|
\includegraphics[width=\textwidth]{images/sample_pie}
|
|
\end{minipage}
|
|
\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}
|
|
\begin{minipage}[t]{0.3\textwidth}
|
|
\includegraphics[width=0.9\textwidth]{images/line_graph1}
|
|
\end{minipage}
|
|
\begin{minipage}[t]{0.3\textwidth}
|
|
\includegraphics[width=0.9\textwidth]{images/line_graph1_3}
|
|
\end{minipage}
|
|
\begin{minipage}[t]{0.3\textwidth}
|
|
\includegraphics[width=0.9\textwidth]{images/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}
|
|
\begin{minipage}[t]{0.3\textwidth}
|
|
\includegraphics[width=0.8\textwidth]{images/improperly_scaled_graph}
|
|
\end{minipage}
|
|
\begin{minipage}[t]{0.3\textwidth}
|
|
\includegraphics[width=0.8\textwidth]{images/comparison_properly_improperly_graph}
|
|
\end{minipage}
|
|
\begin{minipage}[t]{0.3\textwidth}
|
|
\includegraphics[width=0.7\textwidth]{images/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}
|
|
|
|
\newpage
|
|
|
|
\section{Das Plottingsystem von \matlab{}}
|
|
|
|
Plotten in \matlab{} ist zun\"achst einmal einfach. Durch den Aufruf
|
|
von \code{plot(x, y)} wird ein einfacher, schlichter Linienplot
|
|
erstellt. Zun\"achst fehlen diesem Plot jegliche Annotationen wie
|
|
Achsbeschriftungen, Legenden, etc. Um diese hizuzuf\"ugen kann man
|
|
zwei Wege gehen: Das Graphische User Interface oder die
|
|
Kommandozeile. Beide haben ihre Berechtigung sowie Vor- und
|
|
Nachteile. W\"ahrend es bequem ist, die Abbildung mit der GUI
|
|
(Abbildung \ref{ploteditorfig}) zu bearbeiten sind die erhaltenen
|
|
Ergebnisse nicht einfach reproduzierbar. Wenn eine Abbildung
|
|
korrigiert werden musss, wird es schwierig und zeitaufwendig. Die
|
|
nachtr\"agliche Bearbeitung der Abbildungen mit einem beliebigen
|
|
Graphikprogramm erscheitn bequem, birgt seine eigenen Risiken und ist
|
|
auf lange Sicht sehr aufwendig. Das Bestreben sollte sein, aus
|
|
\matlab{} heraus publikationsreife Abbildungen zu erzeugen.
|
|
|
|
|
|
Plots in \matlab{} bestehen aus mehreren Elementen:
|
|
\begin{enumerate}
|
|
\item \enterm{Figure}: Dieses Element stellt die gesamte
|
|
Zeichenf\"ache, das Blatt Papier, dar.
|
|
\item \enterm{Axes}: Das Koordinatensystem in welches gezeichnet wird.
|
|
\item \enterm{Lines}: Die gezeichneten Datenplots wie Linien,
|
|
Fl\"achen, etc.
|
|
\item \enterm{Annotations}: Annotationen wie Textboxen oder auch
|
|
Pfeil, die zum Hervorheben von Punkten, oder Abschnitten gedacht
|
|
sind.
|
|
\item \enterm{Legends}: Legenden der Daten plots.
|
|
\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. Je
|
|
nachdem welches der graphischen Elemente (Figure, Axes, etc., s.\,o.)
|
|
ausgew\"ahlt wurde ver\"andern sich die Einstellungs\"oglichkeiten in
|
|
des Editors.
|
|
|
|
\begin{figure}
|
|
\begin{minipage}[t]{0.6\columnwidth}
|
|
\includegraphics[width=0.9\textwidth]{plot_editor}
|
|
\end{minipage}
|
|
\begin{minipage}[t]{0.3\columnwidth}
|
|
\includegraphics[width=0.9\textwidth]{property_editor}
|
|
\end{minipage}
|
|
\caption{\textbf{Graphisches Interface: ``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}
|
|
|
|
Alle Einstellungen, die \"uber das graphische Interface vorgenommen
|
|
werden k\"onnen sind auch \"uber Befehle auf der Kommandozeile
|
|
m\"oglich. Das hei{\ss}t, dass die Einstellungen problemlos in ein
|
|
Skript oder eine Funktion eingebaut werden k\"onnen. Dieser Ansatz hat
|
|
den Vorteil, dass man sich die M\"uhe nur einmal machen muss. Die
|
|
Abbildungen k\"onnen exakt reprosuziert werden.
|
|
|
|
\subsection{Einfaches Plotten}
|
|
|
|
Einen einfachen Linienplot zu erstellen ist denkbar
|
|
einfach. Angenommen, es existiert einer Variable \code{y} im
|
|
\enterm{Workspace}, die die darzustellenden Daten enth\"alt. Es
|
|
gen\"ugt folgender Funktionsaufruf: \code{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 \code{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 \code{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(x, y)}).
|
|
Standard\"a{\ss}ig wird der erste Lininenplot mit 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
|
|
\enter{colormap} beeinflusst werden. Die Tabellen
|
|
\ref{plotlinestyles} zeigen vordefinierte Werte f\"r den Linienstil,
|
|
die Farbe und die verschiedenen Marker.
|
|
|
|
|
|
\begin{table}[tp]
|
|
\titlecaption{Vordefinierte Linienstile (links), Farben (Mitte) und Markersymbole (rechts).}{}\label{plotlinestyles}
|
|
\begin{minipage}[t]{0.3\textwidth}
|
|
\vspace{0pt}
|
|
\begin{tabular}{c|l}
|
|
\textbf{Linienstil} & \textbf{K\"urzel} \\\hline
|
|
durchgezogen & '-' \\
|
|
gestrichelt & '--' \\
|
|
gepunktet & ':' \\
|
|
Strichpunkte & '.-' \\\hline
|
|
\end{tabular}
|
|
\end{minipage}
|
|
\vspace{0pt}
|
|
\begin{minipage}[t]{.3\textwidth}
|
|
\vspace{0pt}
|
|
\hspace{0.05\textwidth}
|
|
\begin{tabular}{lc}
|
|
\textbf{Farbe} & \textbf{K\"urzel} \\ \hline
|
|
Rot & 'r'\\
|
|
Gr\"un & 'g' \\
|
|
Blau & 'b' \\
|
|
Cyan & 'c' \\
|
|
Magenta & 'm' \\
|
|
Gelb & 'y' \\
|
|
Schwarz & 'k' \\ \hline
|
|
\end{tabular}
|
|
\end{minipage}
|
|
\vspace{0pt}
|
|
\begin{minipage}[t]{0.3\textwidth}
|
|
\vspace{0pt}
|
|
\begin{tabular}{lc}
|
|
\textbf{Markersymbol} & \textbf{K\"urzel} \\ \hline
|
|
Kreis & 'o'\\
|
|
Stern & '*' \\
|
|
Plus & '+' \\
|
|
Kreuz & 'x' \\
|
|
Diamant & 'd' \\
|
|
Pentagramm & 'p' \\
|
|
Hexagramm & 'h' \\
|
|
Quadrat & 's' \\
|
|
Dreieck & '\^{}' \\
|
|
Umgekehrtes Dreieck & 'v' \\
|
|
Dreieck links & '$<$'\\
|
|
Dreieck rechts & '$>$'\\\hline
|
|
\end{tabular}
|
|
\end{minipage}
|
|
\end{table}
|
|
|
|
\subsection{Ver\"andern von Linieneigenschaften}
|
|
|
|
Will man die Eigenschaften des Linienplots selbst bestimmen, so
|
|
empfiehlt es sich das dem \code{plot} Befehlt mitzuteilen. Folgender
|
|
Aufruft erzeugt einen roten Linienplot mit gepunkteter Linie der
|
|
St\"arke 1.5 und Strenmarkern and den Positionen der
|
|
Datenpunkte. Zus\"atzlich wird noch die Eigenschaft
|
|
\codeterm{displayname} gesetzt, um dem Linienplot einen Namen zu
|
|
geben, der in einer Legende verwendet werden kann.
|
|
\begin{lstlisting}
|
|
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 braucht ist eine Achsenbeschriftung. Mithilfe
|
|
der Funktionen \code{xlabel('Time [ms]')} und \code{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. Will man diese manuell bestimmen, dann benutzt man die
|
|
Funktionen \code{xlim} und \code{ylim}. Diese 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. Um sie zu ver\"andern benutzt man
|
|
die Funktion \code{set}. Listing \ref{niceplotlisting} Zeile 15 zeigt
|
|
wie sie verwendet wird. Die 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 \codeterm{XGrid} auf den
|
|
Wert \codeterm{'on'} gesetzt: \code{set(gca, 'XGrid', 'on');}. Das
|
|
erste Argument ist ein Aufruf der Funktion \code{gca},
|
|
``get-current-axis'' und ist das Achsenhandle.
|
|
|
|
\begin{table}[tp]
|
|
\titlecaption{Ausgew\"ahlte Eigenschaften der Achse. Alle Eigenschaften der Achse findet man in der Hilfe oder im \codeterm{Property Editor}, siehe Abbildung \ref{ploteditorfig}. Wenn es eine definierte Auswahl von Einstellungen gibt, z.B. bei der Eigenschaft \codeterm{Box}, dann ist die Standardeinstellungen, als erstes gelistet.}{}\label{plotaxisprops}
|
|
\begin{tabular}{l|p{5cm}|p{5cm}}
|
|
\textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline
|
|
\codeterm{Box} & Definiert, ob der Rahmen der Achse vollst\"andig gezeichnet wird. & $\{'on'|'off'\}$ \\
|
|
\codeterm{Color} & Hintergrundfarbe des Koordinatensystems. & Beliebige RGB, CMYK ... Werte. \\
|
|
\codeterm{Fontname} & Der Name der Schriftart. & Im System installierte Schriften. \\
|
|
\codeterm{FontSize} & Gr\"o{\ss}e der Schrift. & Skalarer Wert.\\
|
|
\codeterm{FontUnit} & Einheit, in der die Schriftgr\"{\ss}e bestimmt wird. & $\{'points' | 'centimeters' | 'inches', ...\}$\\
|
|
\codeterm{FontWeight} & Fett- oder Normalsatz der Schrift. & $\{normal' | 'bold'\}$\\
|
|
& 'd' \\
|
|
\codeterm{TickDir} & Richtung der Teilstriche auf der Achse. & $\{'in' | 'out'\}$\\
|
|
\codeterm{TickLength} & L\"ange der Haupt- und Nebenteilstriche & \\
|
|
\codeterm{X-, Y-, ZDir} & Richtung der Achsskalierung. & $\{'normal' | 'reversed'\}$\\
|
|
\codeterm{X-, Y-, ZGrid} & Sollen Gitternetzlinien gezeigt werden? & $\{'off'|'on'\}$ \\
|
|
\codeterm{X-, Y-, ZScale} & Lineare oder logarithmische Skalierung der Achse. & $\{'linear' | 'log'\}$\\
|
|
\codeterm{X-, Y-, ZTick} & Position der Teilstriche auf der Achse. & Vektor mit Positionen.\\
|
|
\codeterm{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}
|
|
|
|
Wie die Achse, hat auch das \codeterm{Figure} Element eine Reihe von
|
|
Eigenschaften, die nach Bedarf gesetzt werden k\"onnen (Tabelle
|
|
\ref{plotfigureprops} listet die meistverwendeten). Um sie zu setzen
|
|
verwendet man wieder die \code{set} Funktion. Das erste Argument ist
|
|
jetzt aber eine Handle f\"ur die Abbildung, nicht das
|
|
Koordinatensystem. Statt der Funktion \code{gca} wird \code{gcf},
|
|
``get-current-figure'' benutzt.
|
|
|
|
\begin{table}[tp]
|
|
\titlecaption{Ausgew\"ahlte Eigenschaften der \codeterm{Figure}. Alle Eigenschaften der Achse findet man in der Hilfe con \matlab{} oder im \codeterm{Property Editor} wenn die Abbildung ausgew\"ahlt wurde (Abbildung \ref{ploteditorfig}).}{}\label{plotfigureprops}
|
|
\begin{tabular}{l|p{5cm}|p{5cm}}
|
|
\textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline
|
|
\codeterm{Color} & Hintergrundfarbe der Zeichenfl\"ache. & Beliebige RGB, CMYK ... Werte. \\
|
|
\codeterm{PaperPosition} & Posistion der Abbildung auf dem Papier & 4-elementiger Vektor mit den Positionen der linken-unteren, und rechten-oberen Ecke. \\
|
|
\codeterm{PaperSize} & Gr\"o{\ss}e der des Papiers. & 2-elementiger Vektor mit der Papiergr\"o{\ss}e.\\
|
|
\codeterm{PaperUnits} & Einheit, in der die Papiergr\"{\ss}e bestimmt wird. & $\{'inches' | 'centimeters' | 'normalized' | 'points'\}$\\
|
|
\codeterm{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}
|
|
|
|
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.
|
|
\clearpage
|
|
|
|
\begin{lstlisting}[caption={Skript zur Erstellung des Plots in Abbildung \ref{spikedetectionfig}.}, label=niceplotlisting]
|
|
figure()
|
|
set(gcf, 'PaperUnits', 'centimeters', 'PaperSize', [11.7 9.0]);
|
|
set(gcf, 'PaperPosition',[0.0 0.0 11.7 9.0], 'Color', 'white')
|
|
hold on
|
|
plot(time, neuronal_data, 'color', [ 0.2 0.5 0.7], 'linewidth', 1.)
|
|
plot(spike_times, ones(size(spike_times))*threshold, 'ro', 'markersize', 4)
|
|
line([time(1) time(end)], [threshold threshold], 'linestyle', '--',
|
|
'linewidth', 0.75, 'color', [0.9 0.9 0.9])
|
|
ylim([0 35])
|
|
xlim([0 2.25])
|
|
box('off')
|
|
xlabel('time [s]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10)
|
|
ylabel('potential [mV]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10)
|
|
title('pyramidal cell', 'fontname', 'MyriadPro-Regular', 'fontsize', 12)
|
|
set(gca, 'TickDir','out', 'linewidth', 1.5, 'fontname', 'MyriadPro-Regular')
|
|
saveas(gcf, 'spike_detection.pdf', 'pdf')
|
|
\end{lstlisting}
|
|
|
|
\begin{figure}
|
|
\includegraphics[width=0.5\columnwidth]{./images/spike_detection}
|
|
\caption{\textbf{Annehmbarer Plot.} Dieser Plot wurde vollst\"andig
|
|
mit dem Skript in Listing \ref{niceplotlisting} erstellt und
|
|
gespeichert.}\label{spikedetectionfig}
|
|
\end{figure}
|
|
|
|
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}.
|
|
|
|
|
|
\begin{ibox}[t]{\label{graphicsformatbox}Dateiformate f\"ur Abbildungen.}
|
|
Im Wesentlichen gibt es zwei 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. 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.42\textwidth}
|
|
\includegraphics[width=\textwidth]{VectorBitmap.pdf}
|
|
\small{by Darth Stabro at en.wikipedia.org}
|
|
\vspace{0.1cm}
|
|
\end{minipage}
|
|
\begin{flushright}
|
|
\begin{minipage}[t]{0.5\textwidth}
|
|
\vspace{-9.5cm}
|
|
Von \matlab{} unterst\"utzte Formate\footnote{Auswahl, mehr Information in der Hilfe zu \code{saveas}}:\\
|
|
\begin{tabular}{l|c|l}
|
|
\textbf{Format} & \textbf{Typ} & \code{saveas} Argument} \\ \hline
|
|
pdf & Vektor & \codeterm{'pdf'} \\
|
|
eps & Vektor & \codeterm{'eps','epsc'} \\
|
|
SVG & Vektor & \codeterm{'svg'} \\
|
|
PS & Vektor & \codeterm{'ps', 'psc'} \\
|
|
jpg & Bitmap & \codeterm{'jpeg'} \\
|
|
tif & Bitmap & \codeterm{'tiff', 'tiffn'} \\
|
|
png & Bitmap & \codeterm{'png'} \\
|
|
bmp & Bitmap & \codeterm{'bmp'} \\
|
|
\end{tabular}
|
|
\end{minipage}
|
|
\end{flushright}
|
|
|
|
Wenn aus \matlab{} heraus Graphiken gespeichert werden sollen, dann
|
|
ist es meist sinnvoll sie als Vektorgraphik zu speichern. Im
|
|
Zweifelsfall k\"onnen diese sp\"ater in Rastergraphiken umgewandelt
|
|
werden. Der Weg von einer Rastergraphik zu einer Vektorgraphik ist
|
|
nich 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}
|
|
|
|
|
|
\subsection{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 man
|
|
verschiedene Linienplots in einen Graphen plottet, sollte man neben
|
|
der Farbe auch den Linienstil (durchgezogen, gepunktet, gestrichelt,
|
|
etc.) variieren um auch im Schwarz-Wei{\ss}-Druck eine Unterscheidung zu
|
|
erm\"oglichen. Bei der Farbwahl sollte man auf Kombinationen aus Rot
|
|
und Gr\"un verzichten, da sie f\"ur einen nicht unwesentlichen Teil
|
|
der m\"annlichen Bev\"olkerung nicht unterscheidbar sind. Man achte
|
|
insbesondere auf:
|
|
\begin{enumerate}
|
|
\item Klarheit.
|
|
\item Vollstaendige 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{enumerate}
|
|
|