463 lines
22 KiB
TeX
463 lines
22 KiB
TeX
\chapter{Graphical Representation of Scientific Data}
|
|
|
|
We may count the ability of adequately presenting scientific data to
|
|
the core competences needed to do science. We need to present data in
|
|
a meaningful way that fosters understanding of the data and the
|
|
results.
|
|
|
|
\begin{figure}[hb!]
|
|
\includegraphics[width=0.9\columnwidth]{convincing}
|
|
\titlecaption{The consequences of bad plots may be
|
|
severe.}{\url{www.xkcd.com}}\label{xkcdplotting}
|
|
\end{figure}
|
|
|
|
\section{What makes a good plot?}
|
|
Plot should help/enable the interested reader to get a grasp of the
|
|
data and to understand the performed analysis and to critically assess
|
|
the presented results. The most important rule is the correct and
|
|
complete annotation of the plots. This starts with axis labels and
|
|
units and and extends to legends. Incomplete annotation can have
|
|
terrible consequences (\figref{xkcdplotting}).
|
|
|
|
The principle of \emph{ink minimization} may be used a a guiding
|
|
principle for appealing plots. It requires that the relation of amount
|
|
of ink spent on the data and that spent on other parts of the plot
|
|
should be strongly in favor of the data. Ornamental of otherwise
|
|
unnecessary gimicks should not be used in scientific contexts. An
|
|
exception can be made if the particular figure was designed for
|
|
didactiv purposes and sometimes for presentations.
|
|
|
|
\begin{important}[Correct labeling of plots]
|
|
A data plot must be sufficiently labeled:
|
|
\begin{itemize}
|
|
\item Every axis must have a label and the correct unit, if it has one.\\
|
|
(e.g. \code[xlabel()]{xlabel('Speed [m/s]'}).
|
|
\item When more than one line is plotted, they have to be labeled
|
|
using the figure legend, or similar \matlabfun{legend()}.
|
|
\item If using subplots that show similar information on the axes,
|
|
they should be scaled to show the same ranges to ease comparison
|
|
between plots. (e.g. \code[xlim()]{xlim([0 100])}.\\ If one
|
|
chooses to ignore this rule one should explicitly state this in
|
|
the figure caption and/or the descriptions in the text.
|
|
\item Labels must be large enough to be readable. In particular,
|
|
when using the figure in a presentation use large enough fonts.
|
|
\end{itemize}
|
|
\end{important}
|
|
|
|
|
|
\section{Things that should be avoided.}
|
|
|
|
When plotting scientific data we should take great care to avoid
|
|
suggestive or misleading presentations. Unnecessary additions and fancy
|
|
graphical effects make a plot frivolous and also violate the \emph{ink
|
|
minimization principle}. Illustrations in comic style
|
|
(\figref{comicexamplefig}) are not suited for scientific data in most
|
|
instances. For presentations or didactic purposes, however, using a
|
|
comic style may be helpful to indicate that the figure is a mere
|
|
sketch and the exact position of the data points is of no importance.
|
|
|
|
\begin{figure}[t]
|
|
\includegraphics[width=0.7\columnwidth]{outlier}\vspace{-3ex}
|
|
\titlecaption{Comic-like illustration.}{Obviously not suited to
|
|
present scientific data. In didactic or illustrative contexts they
|
|
can be helpful to focus on the important
|
|
aspects.}\label{comicexamplefig}
|
|
\end{figure}
|
|
|
|
|
|
The following figures show examples of misleading or suggestive
|
|
presentaions of data. Several of the effects have been axaggerated to
|
|
make the point. A little more subtlely these methods are employed to
|
|
nudge the viewers experience into the desired direction. You can find
|
|
more examples on \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{Perspective distortion influendes the perceived
|
|
size.}{By changing the perspective of the 3-D illustration the
|
|
highlighted segment \textbf{C} gains more weight than it should
|
|
have. In the left graph segments \textbf{A} and \textbf{C} appear
|
|
very similar. The 2-D plot on the right-hand side shows that this
|
|
is an
|
|
illusion. \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{Chosing the figure format influences the erceived
|
|
strength of a correlation.}{All three subplots show the same data.
|
|
By choosing a certain figure size we can pronounce or to reduce
|
|
the perceived strength of the correlation in th data. Techincally
|
|
all three plots are correct.
|
|
\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{Scaling of markers and symbols.} {In these graphs
|
|
symbols have been used to illustrate the measurements made in two
|
|
categories. The measured value for category \textbf{B} is actually
|
|
three times the measured value for category \textbf{A}. In the
|
|
left graph the symbol for catergory \textbf{B} has been scaled to
|
|
triple heigth while maintaining the porpotions. This appears jusst
|
|
fair and correct but leads to the effect that the covered surface
|
|
is not increased to the 3-fold but the 9-fold (center plot). The
|
|
plot on the right shows how it could have been done correctly.
|
|
\url{https://en.wikipedia.org/wiki/Misleading_graph}} \label{misleadingsymbolsfig}
|
|
\end{figure}
|
|
|
|
By using perspective effects in 3-D plot the perceived size can be
|
|
distorted into the desired direction. While the plot is correct in a
|
|
strict sense it is rather suggestive
|
|
(\figref{misleadingpiefig}). Similarly the choice of figure size and
|
|
proportions can lead to different interpretations of the
|
|
data. Stretching the y-extent of a graph leads to a stronger
|
|
impression of the correlation in the data. Compressing this axis will
|
|
lead to a much weaker perceived correlation
|
|
(\figref{misleadingscalingfig}). When using symbols to illustrate a
|
|
quantity we have to take care not to overrate of difference due to
|
|
symbol scaling (\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}
|
|
|