\chapter{\tr{Data plotting}{Graphische Darstellung von Daten}}

\section{Dos and Don'ts bei der graphische Darstellung von Daten}

Die Fähigkeit 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 wissenschaftlicher Arbeiten
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 \textbf{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 aufgewendet m\"oglichst gro{\ss} ist. Mit anderen Worten
\"uberfl\"ussiger Ausschm\"uckungen sollten sich in Datenplots nur
selten finden lassen. Eine Ausnahme kann vielleicht 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}

\subsection{Beispiele suggestiver oder fehlleitender Darstellungen}
Im folgenden werden einige Beispiele fehlleitender oder suggestiver
Darstellungen gezeigt. Einiger dieser Effekte sind deutlich
\"uberzeichnet, die beschriebenen ``Tricks'' werden allerdings, 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.



TODOS\\
Elemente eines Plots:
\begin{enumerate}
\item Figure
\item Axes
\item Lines
\item Annotationen
\item Legende
\end{enumerate}

\subsection{Einfaches Plotten}
TODO

\subsection{Ver\"andern von Eigenschaften von Linen}

\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{Graphischer Plot Editor.} \"Uber das Menu
    ``Tools->Edit Plot'' erreicht man den Plot Editor. Je nachdem
    welches Element des Plots ausgew\"ahlt wurde ver\"andern sich
    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 man \"uber das graphische Interface machen
kann 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.  Zu den h\"aufigsten
Einstellungen geh\"oren:
\begin{enumerate}
\item Einstellungen der Linienplots:
  \begin{itemize}
  \item St\"arke und Farbe.
  \item Linienstil, Marker.
  \end{itemize}
\item Achsbeschriftung:
  \begin{itemize}
  \item \code{xlabel}, \code{ylabel}.
  \item Schriftart und Gr\"o{\ss}e.
  \end{itemize}
\item Achsenskalierung und Ticks:
  \begin{itemize}
  \item Skalierung der Achsen (Minumum und Maxmimum, logarithmisch oder linear).
  \item Manuelles Setzen der Ticks, ihrer Richtung und Beschriftung.
  \item Grid or no Grid?
  \end{itemize}
\item Setzen von globalen Parametern:
  \begin{itemize}
  \item Einstellung der Papiergr\"o{\ss}e und plzieren der
    Zeichenfl\"ache.
  \item Soll die Zeichenfl\"ache auf allen vier Seiten von einer Box eingeschlossen sein oder nicht?
  \item Speichern der Abbildung als pdf.      
  \end{itemize}
\end{enumerate}

\subsection{Globale Einstellungen}

\TODO

Das folgende Listing \ref{niceplotlisting} zeigt das Skript, das die
Abbildung \ref{spikedetectionfig} erstellt und speichert. Abh\"angig
davon, ob man Eigenschaften der Abbildung oder der Achsen setzen will
benutzt man die \code{set} Funktion und \"ubergibt ihr ein sogenanntes
Handle der Achse oder der Abbildung und sowohl den Namen als auch den
gew\"unschten Wert der Eigenschaft: \code{set(gcf, 'PaperUnits',
  'centimeters')} setzt die Eigenschaft ``PaperUnits'' der Abbildung
auf ``centimeters''. (Standard Einheit ist, nat\"urlich, ``inches''.)
\code{gcf} steht f\"ur ``get current figure'' und stellt ein Handle
der aktuellen Abbildung zur Verf\"ugung. Um Eigenschaften der Achse zu
setzten benutzt man: \code{set(gca, 'linewidth', 1.5)} wobei
\code{gca} f\"ur ``get current axis'' steht. Wenn man den Namen einer
Eigenschaft nicht kennt, kann man entweder in der Hilfe nachschlagen
oder sie im ``Property Editor'' finden.

\begin{lstlisting}[caption={Skript zur Erstellung des Plots in Abbildung \ref{spikedetectionfig}.}, label=niceplotlisting]
fig = 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(fig, '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 unter
\url{http://www.mathworks.de/discovery/gallery.html} viele Beispiele
mit zugeh\"origem Code. 

\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}

