Merge branch 'master' of raven.am28.uni-tuebingen.de:scientificComputing

Conflicts:
	programming/lecture/programming.tex
This commit is contained in:
2015-11-08 21:11:31 +01:00
68 changed files with 602 additions and 312 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -1,6 +1,6 @@
\chapter{\tr{Data plotting}{Graphische Darstellung von Daten}}
\section{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
@@ -57,7 +57,7 @@ Beispiele (\url{https://en.wikipedia.org/wiki/Misleading_graph}).
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
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}).
@@ -119,4 +119,134 @@ vorgehen um Unterschiede nicht zu \"uberproportional zu verzerren
\newpage
\subsection{Plottingsystem in \matlab{}}
\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}