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.tex

253 lines
11 KiB
TeX

\chapter{\tr{Data plotting}{Graphische Darstellung von Daten}}
\section{Does and Don'ts bei der Graphische Darstellung von Daten}
Die ad\"aquate Darstellung wissenschaftlicher Daten darf man durchaus
zu den notwendigen Kernkompetenzen z\"ahlen. Wir brauchen sie um
unsere Daten optimal darstellen zu k\"onnen und unsere Aussagen zu
unterstreichen.
\begin{figure}[hb!]
\includegraphics[width=0.9\columnwidth]{convincing}
\caption{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}. Es besagt, dass das
Verh\"altnis aus Tinte, die f\"ur die Darstellung der Daten gebraucht
wird und der Menge Tinte, die f\"ur die Graphik ben\"otigt wird sollte
m\"oglichst gro{\ss} sein. 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
bei einer Pr\"asentation genutzt wird.
\subsection{Dinge, die vermieden werden sollten.}
Bei der Darstellung wissenschaftlicher Daten sollte drauf geachtet
werden suggestive oder gar fehlleitende Darstellung zu vermeiden.
Ablenkung durch \"uberm\"a{\ss}ige Effekte lassen eine 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 keinen Anspruch auf
Korrektheit besteht.
\begin{figure}
\includegraphics[width=0.35\columnwidth]{images/one_d_problem_c}
\caption{\textbf{Comicartige Darstellung.} Ist 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 angesprochen. Einiger dieser Effekte sind deutlich
\"uberzeichnet die beschiebenen Tricks werden, etwas dezenter,
allerdings 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}).
\paragraph{Fehlleitende Darstellung}
Man kann durch graphische Tricks wie Perspektive (Abbildung
\ref{misleadingpiefig}) oder auch gezielte Achsenskalierungen
(Abbildung \ref{misleadingscalingfig}) den Eindruck des Betrachters
steuern. Insbesondere wenn die Gr\"o{\ss}e von Symbolen zur
Darstellung einer Quantit\"at eingesetzt werden, muss man mit Vorsicht
vorgehen um Unterschiede nicht zu \"uberproportional zu verzerren
(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}
\caption{\textbf{Perspektivische Verzerrungen beeinlfu{\ss}t die
Gr\"o{\ss}enwahrnehmung.} Durch die geeignete Wahl der
Perspektive erscheint das hervorgehobene Segment (C) des
Tortendiagramms als mindestens gleichwertig zum 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=\textwidth]{images/line_graph1}
\end{minipage}
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[width=\textwidth]{images/line_graph1_3}
\end{minipage}
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[width=\textwidth]{images/line_graph1_4}
\end{minipage}
\caption{\textbf{Wahl der Zeichenfl\"ache kann den visuellen
Eindruck beeinflu{\ss}en.} 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.8\textwidth]{images/properly_scaled_graph}
\end{minipage}
\caption{\textbf{Die Skalierung von Symbolen kann problematisch
sein.} In diesen Graphen werden Symbole eingesetzt um zwei
Kategorien zu vergleichen. Im linken Fall wird das einzelne Symbol
proportionsgerecht skaliert. Dies scheint auf den ersten Blick
richtig f\"uhrt aber dazu, dass das Symbol der Kategorie B nicht
dreifach sondern neunfach gr\"o{\ss}er geworden ist. Der Plot
rechts zeigt die Korrekte Verwendung von Symbolen. Quelle:
\url{https://en.wikipedia.org/wiki/Misleading_graph}} \label{misleadingsymbolsfig}
\end{figure}
\newpage
\section{Plottingsystem in \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 fehlem diesem Plot jegliche Annotationen wie
Achsbeschriftungen Legenden, etc. Um diese hizuzuf\"ugen kann man zwei
Wege gehen: Das Graphische User Interface oder die
Kommandozheile. Beide haben ihre Berechtigung und Vor- und
Nachteile. W\"ahrend es bequem ist die Abbildung mit der GUI
(Abbildung \ref{ploteditorfig}) zu bearbeiten sind die erhaltenen
Ergebnisse nicht unbedingt reproduzierbar. Auch wenn eine Abbildung
korrigiert werden mus{\ss}, wird es schwierig und zeitaufwendig. Die
Nachtr\"agliche Bearbeitung der Abbildungen mit dem Graphikprogramm
seiner Wahl birgt seine eigenen Risiken. Das Bestreben sollte sein,
aus \matlab{} heraus publikationsreife Abbildungen zu erzeugen.
\begin{figure}
\begin{minipage}[t]{0.45\columnwidth}
\includegraphics[width=0.9\textwidth]{plot_editor}
\end{minipage}
\begin{minipage}[t]{0.225\columnwidth}
\includegraphics[width=0.9\textwidth]{property_editor}
\end{minipage}
\caption{\textbf{Grahischer Plot Editor.} Editor f\"ur plots. Je
nachdem welches Element des Plots ausgew\"ahlt wurde ver\"andern
sich Einstellungsm\"oglichkeiten. Weitere Eigenschaften k\"onnen
\"uber den ``Property Editor'', rechts, eingestellt 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
heisst, dass die Einstellungen problemlos in eine Skript, eine
Funktion eingebaut werden k\"onnen. Dieser Ansatz hat den Vorteil,
dass man sich die M\"uhe nur ein mal machen muss. Unter den
h\"aufigsten Einstellungen sind:
\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}
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 der Eigenschaft: \code{set(gcf, 'PaperUnits',
'centimeters')} setzt die Eigenschaft ``PaperUnits'' der Abbildung
auf ``centimeters'', Standard 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 Schwarzweissdruck 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}