[plotting] stub for errorbar plotting, more fixes

This commit is contained in:
Jan Grewe 2018-02-07 09:31:18 +01:00
parent a8a0219c84
commit 1fa915b675

View File

@ -261,12 +261,12 @@ additional options consult the help.
\subsection{Changing properties of a line plot}
Die properties of line plots can be changed by passing more arguments
to the \varcode{plot} function. The command show in
listing\,\ref{settinglineprops} creates line plot using the dotted
line style, setting the line width to 1.5pt, a red line color is
chosen, and star marker symbols will be used. Finally the name of the
curve is set to 'plot 1' which will be displayed in a legend, if
The properties of line plots can be changed by passing more arguments
to the \varcode{plot} function. The command shown in
listing\,\ref{settinglineprops} creates a line plot using the dotted
line style, sets the line width to 1.5pt, a red line color is
chosen, and star marker symbols is used. Finally, the name of the
curve is set to \emph{plot 1} which will be displayed in a legend, if
chosen.
\begin{lstlisting}[label=settinglineprops, caption={Setting line properties when calling \varcode{plot}.}]
@ -277,7 +277,7 @@ chosen.
\begin{important}[Choosing the right color.]
Choosing the perfect color goes a little bit beyond personal
taste. When creating a colored plot you may want to consider the
following:
following points:
\begin{itemize}
\item A substantial amount (about 9\%) of the male population can
not distinguish between red and green.
@ -293,13 +293,13 @@ The first thing a data plot needs are axis labels with a correct
unit. By calling the functions \code[xlabel]{xlabel('Time [ms]')} and
\code[ylabel]{ylabel{'Voltage [mV]'}} these can be set. By default the
axes will be scaled to show the whole data range. The extremes will be
selected as the closest integer for small values of the next full
selected as the closest integer for small values or the next full
multiple of tens, hundreds, thousands, etc.\ depending on the maximum
value. If these defaults do not match our needs the limits of the axes
can be explicitly set with the functions \code[xlim()]{xlim()} and
\code[ylim()]{ylim()} functions. To do this, the functions expect a
single argument that is a vector containing the minimum and maximum
value. Table\,\ref{plotaxisprops} list some of the commonly adjusted
value. If these defaults do not match our needs, the limits of the
axes can be explicitly set with the functions \code[xlim()]{xlim()}
and \code[ylim()]{ylim()}. To do this, the functions expect a single
argument, that is a vector containing the minimum and maximum
value. Table\,\ref{plotaxisprops} lists some of the commonly adjusted
properties of an axis. These properties can be set using the
\code[set()]{set()} function. The \code{set} function expects as a
first argument a \enterm{handle} of the affected axis. An axis handle
@ -307,8 +307,9 @@ of the current plot is returned by the \code[gca]{gca} function (gca
stands for ``get current axis''). The following arguments passed to
\code{set} are pairs of the property name and the desired value. It is
possible to set any number of properties using a single call to
\code{set}. See listing\,\ref{niceplotlisting} (lines 20 and 21) for an
example.
\code{set}. See listing\,\ref{niceplotlisting} (lines 20 and 21) for
an example (these commands could be joined into a single call to
\code{set} but have been split for better readability).
\begin{table}[tp]
\titlecaption{Incomplete list of axis properties.}{For a complete
@ -317,18 +318,18 @@ example.
value of a property it will be listed first.}\label{plotaxisprops}
\begin{tabular*}{1\textwidth}{lp{5.8cm}p{5.5cm}} \hline
\textbf{property} & \textbf{Description} & \textbf{options} \erh
\\ \hline \code{Box} & Defines whether the axes are drawn an all
\\ \hline \code{Box} & Defines whether the axes are drawn on all
sides. & $\{'on'|'off'\}$ \erb\\
\code{Color} & Background color of the drawing area, not the whole figure. & Any RGB or CMYK
values. \\
\code{FontName} & Name of the font used for labeling. & Installed fonts. \\
\code{FontSize} & Fontsize used for labels. & any scalar value.\\
\code{FontSize} & Size of the font used for labels. & Any scalar value.\\
\code{FontUnit} & Unit in which the font size is given. & $\{'points' | 'centimeters' | 'inches',
...\}$\\ \code{FontWeight} & Bold or normal font. & $\{'normal' | 'bold'\}$\\
\code{TickDir} & Direction of the axis ticks. & $\{'in' | 'out'\}$\\
\code{TickLength} & Length of the ticks. & scalar value\\
\code{TickLength} & Length of the ticks. & A scalar value\\
\code{X-, Y-, ZDir} & Direction of axis scaling. Zero bottom/left, or not? & $\{'normal' | 'reversed'\}$\\
\code{X-, Y-, ZGrid} & Defines whether grid line for the respective axes should be plotted? &
\code{X-, Y-, ZGrid} & Defines whether grid lines for the respective axes should be plotted? &
$\{'off'|'on'\}$ \\
\code{X-, Y-, ZScale} & Linear of logarithmic scaling? & $\{'linear' | 'log'\}$\\
\code{X-, Y-, ZTick} & Position of the tick marks. & Vector of positions.\\
@ -337,10 +338,12 @@ example.
\end{table}
\subsection{Changing the figure properties}
\subsection{Changing figure properties}
\begin{table}[tp]
\titlecaption{Incomplete list of available figure properties.}{For a complete reference consult the \matlab{} help or select the property editor while having the figure background selected
\titlecaption{Incomplete list of available figure properties.}{For a
complete reference consult the \matlab{} help or select the
property editor while having the figure background selected
(\figref{ploteditorfig}).}\label{plotfigureprops}
\begin{tabular*}{1\textwidth}{lp{6.6cm}p{5.7cm}} \hline
\textbf{property} & \textbf{description} & \textbf{options}
@ -354,15 +357,15 @@ example.
\end{tabular*}
\end{table}
Like axes also the whole figure has several properties that can be
adjusted to the current needs. Most notably the paper (figure) size
and the placement of the axes on the
paper. Table\,\ref{plotfigureprops} lists commonly used ones. For a
complete reference check the help. To change the properties, we again
use the \code{set()} function. The first argument is now a handle to
the current figure, not the current axis as before. Analogously to the
\code{gca} command there is a \code{gcf} (``get current figure'')
command with which the handle can be retrieved.
Like axes, also figure has several properties that can be adjusted to
the current needs. Most notably the paper (figure) size and the
placement of the axes on the paper. Table\,\ref{plotfigureprops} lists
commonly used properties. For a complete reference check the help. To
change the properties, we again use the \code{set()} function. The
first argument is now a handle to the current figure, not the current
axis as before. Analogously to the \code{gca} command there is a
\code{gcf} (``get current figure'') command with which the handle can
be retrieved.
The script shown in the listing\,\ref{niceplotlisting} exemplifies
several features of the plotting system and automatically generates
@ -370,10 +373,11 @@ and saves figure\,\ref{spikedetectionfig}. With any execution of this
script exactly the same plot will be created. If we decided to plot a
different recording, the format will stay exactly the same, just the
data changes. Of special interest are the lines 22 and 23 which set
the size of the figure and line 26 which saves the figure in the 'pdf'
format to file. When calling the function \code{saveas()} the first
argument is the current figure handle a, the second the file name, and
the last one defines the output format (box\,\ref{graphicsformatbox}).
the size of the figure and positions the axes on the paper. Line 26
finally saves the figure in the 'pdf' format to file. When calling the
function \code{saveas()} the first argument is the current figure
handle, the second the file name, and the last one defines the
output format (box\,\ref{graphicsformatbox}).
\begin{figure}[t]
\includegraphics{spike_detection} \titlecaption{Automatically
@ -387,11 +391,11 @@ the last one defines the output format (box\,\ref{graphicsformatbox}).
\item \enterm{Bitmaps}
\item \enterm{Vector graphics}
\end{enumerate}
When using bitmaps a color is given for each pixel of the stored
figure. Bitmaps do have a fixed resolution (e.g.\,300\,dpi --- dots
per inch), they are very useful for photographs. In the contrary
vector graphics store descriptions of the graphic in terms of so
called primitives (lines, circles, polygons, etc.). The main
When using bitmaps a color value is given for each pixel of the
stored figure. Bitmaps do have a fixed resolution (e.g.\,300\,dpi
--- dots per inch), they are very useful for photographs. In the
contrary, vector graphics store descriptions of the graphic in terms
of so called primitives (lines, circles, polygons, etc.). The main
advantage of a vector graphic is that it can be scaled without a
loss of quality.
@ -445,7 +449,7 @@ A very common scenario is to combine several plots in the same
figure. To do this we create so-called subplots
figures\,\ref{regularsubplotsfig},\,\ref{irregularsubplotsfig}. The
\code[subplot()]{subplot()} command allows to place multiple axes onto
a single paper. Generally, \varcode{subplot} expects three argument
a single sheet of paper. Generally, \varcode{subplot} expects three argument
defining the number of rows, column, and the currently active
plot. The currently active plot number starts with 1 and goes up to
$rows \cdot columns$ (numbers in the subplots in
@ -465,10 +469,10 @@ figures\,\ref{regularsubplotsfig}, \ref{irregularsubplotsfig}).
basicstyle=\ttfamily\scriptsize]{regular_subplot.m}
By default, all subplots have the same size, if something else is
desired, e.g., one subplot should span a whole row, while two others
are smaller and placed side by side in the same row, the third
argument of \varcode{subplot} can be a vector or numbers that should
be joined. These have, of course, be adjacent numbers
desired, e.g.\ one subplot should span a whole row, while two others
are smaller and should be placed side by side in the same row, the
third argument of \varcode{subplot} can be a vector or numbers that
should be joined. These have, of course, to be adjacent numbers
(\figref{irregularsubplotsfig},
listing\,\ref{irregularsubplotslisting}).
@ -493,6 +497,48 @@ used cells of the grid by passing a vector as the third argument to
basicstyle=\ttfamily\scriptsize]{irregular_subplot.m}
\subsection{Show estimation errors}
The repeated measurements of a quantity almost always results in
varying results. Neuronal activity, for example is notoriously
noisy. The responses of a neuron to repeated stimulation with the same
stimulus may share common features but are different each time. This
is the reason we calculate measures that describe the variability of
such as the standard deviation and thus need a way to
illustrate it in plots of scientific data. Providing an estimate of
the error gives the reader the chance of assessing the reliability of
the data and get a feeling of possible significance of a
difference in the average values.
\Matlab{} offers several ways to plot the average and the error. We
will introduce two possible ways.
\begin{itemize}
\item The \code[errorbar()]{errorbar} function (figure\,\ref{errorbarplot}).
\item Using the \code[{fill()]{fill} function to draw an area showing
the spread of the data (figure\,\ref{errorareaplot}).
\end{itemize}
\subsubsection{Errorbar}
Using the \code[errorbar()]{errorbar} function is rather straight
forward. In its easiest form, it expects three arguments being the x- and y-values plus the
error.
\begin{figure}[ht]
\includegraphics[]{} \titlecaption{Adding error bars to a line
plot}{\textbf{A} symmetrical error around the mean (e.g. using the
standard deviation). \textbf{B} asymmetrical errors (e.g. the
lower and upper quartiles). \textbf{C} X- and Y-error. See
listing\,\ref{errorbarlisting}}\label{errrorbarplot}
\end{figure}
\begin{figure}[ht]
\includegraphics[]{}
\titlecaption{}\label{errrorareaplot}
\end{figure}
\subsection{Annotations, text}
Sometimes want to highlight certain parts of a plot or simply add an
@ -521,13 +567,13 @@ documentation.
\begin{important}[Positions in data or figure coordinates.]
A very confusing pitfall are the different coordinate systems used
by \varcode{text} and \varcode{annotation}. While text expects the
positions to be in data coordinates, i.e.\,in the limits of the x-
and y-axis, \varcode{annotation} requires the positions to be given
in normalized figure coordinates. Normalized means that the width
and height of the figure are expressed by numbers in the range 0 to
1. The bottom/left corner then has the coordinates $(0,0)$ and the
top/right corner the $(1,1)$.
by \varcode{text} and \varcode{annotation}. While \varcode{text}
expects the positions to be in data coordinates, i.e.\,in the limits
of the x- and y-axis, \varcode{annotation} requires the positions to
be given in normalized figure coordinates. Normalized means that the
width and height of the figure are expressed by numbers in the range
0 to 1. The bottom/left corner then has the coordinates $(0,0)$ and
the top/right corner the $(1,1)$.
Why different coordinate systems? Using data coordinates is
convenient for annotations within a plot, but what about an arrow