summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-dv-axes.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-dv-axes.tex')
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-dv-axes.tex800
1 files changed, 800 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-dv-axes.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-dv-axes.tex
new file mode 100644
index 00000000000..bb7b9eb0400
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-dv-axes.tex
@@ -0,0 +1,800 @@
+% Copyright 2010 by Till Tantau
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+% See the file doc/generic/pgf/licenses/LICENSE for more details.
+
+
+\section{Axes}
+\label{section-dv-axes}
+
+\subsection{Overview}
+
+To be written...
+
+
+\subsection{Concepts}
+
+\subsubsection{Axes}
+
+\subsubsection{Mayor, Minor, and Subminor Ticks}
+
+\subsubsection{Tick Placement Strategies}
+\label{section-dv-concept-tick-placement-strategies}
+
+Consider the following problem: The data visualization engine
+determines that in a
+plot the $x$-values vary between $17.4$ and $34.5$. In this case, we
+certainly do not want, say, ten ticks at exactly ten evenly spaced
+positions starting with $17.4$ and ending with $34.5$, because this
+would yield ticks at positions like $32.6$. Ticks should be placed at
+``nice'' positions like $20$, $25$, and $30$.
+
+Determining which positions are ``nice'' is somewhat difficult. In the
+above example, the positions $20$, $25$, and $30$ are certainly nice,
+but only three ticks may be a bit few of them. Better might be the
+tick positions $17.5$, $20$, $22.5$, through to $32.5$. However, users
+might prefer even numbers over fractions like $2.5$ as the stepping.
+
+A \emph{tick placement strategy} is a method of automatically deciding
+which positions are \emph{good} for placing ticks. The data
+visualization engine comes with a number of predefined strategies, see
+Section~\ref{section-dv-tick-placement-strategies}, but you can also
+define new ones yourself. When the data visualization is requested to
+automatically determine
+``good'' positions for the placement of ticks on an axis, it uses one
+of several possible \emph{basic strategies}. These strategies differ
+dramatically in which tick positions they will choose: For a range of
+values between $5$ and $1000$, a |linear steps| strategy might place
+ticks at positions $100$, $200$, through to $1000$, while an
+|exponential steps| strategy would prefer the tick positions $10$,
+$100$ and $1000$. The exact number and values of the tick positions
+chosen by either strategy can be fine-tuned using additional options
+like |step| or |about|.
+
+Here is an example of the different stepping chosen when one varies
+the tick placement strategy:
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [scientific axes, visualize as smooth line]
+ data [format=function] {
+ var x : interval [1:11];
+ func y = \value x*\value x;
+ };
+\end{tikzpicture}
+\qquad
+\begin{tikzpicture}
+ \datavisualization [scientific axes, visualize as smooth line,
+ y axis={exponential steps},
+ x axis={ticks={quarter about strategy}},
+ ]
+ data [format=function] {
+ var x : interval [1:11];
+ func y = \value x*\value x;
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+
+
+\subsubsection{Grids}
+
+\subsection{Usage}
+
+
+\subsection{Reference: Standard Axis Systems}
+
+In this section the axis system commonly used in data visualizations
+are described.
+
+\subsubsection{Scientific Axis Systems}
+
+\begin{key}{/tikz/data visualization/scientific axes}
+ This key installs a two-dimensional coordinate system based on the
+ attributes |/data point/x| and |/data point/y|.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [scientific axes, visualize as smooth line]
+ data [format=function] {
+ var x : interval [0:100];
+ func y = sqrt(\value x);
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+ This axis system is usually a good choice to depict ``arbitrary two
+ dimensional data.'' Because the axes are automatically scaled, you
+ do not need to worry about how large or small the values will
+ be. The name |scientific axes| is intended to indicate that this
+ axis system is often used in scientific publications.
+
+ Note, however, that this axis system will always distort the
+ relative magnitudes of the units on the two axis. If you wish the
+ units on both axes to be equal, consider directly specifying the
+ unit length ``by hand'':
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [visualize as smooth line,
+ scientific axes,
+ all axes={unit length=1cm per 10 units, ticks={few}}]
+ data [format=function] {
+ var x : interval [0:100];
+ func y = sqrt(\value x);
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+ The |scientific axes| have the following properties:
+ \begin{itemize}
+ \item The |x|-values are surveyed and the $x$-axis is then scaled
+ and shifted so that it has the length specified by the following key.
+ \begin{key}{/tikz/data visualization/scientific
+ axes/width=\meta{dimension} (initially 5cm)}
+ \end{key}
+ The minimum value is at the left end of the axis and at the canvas
+ origin. The maximum value is at the right end of the axis.
+ \item The |y|-values are surveyed and the $y$-axis is then scaled so
+ that is has the length specified by the following key.
+ \begin{key}{/tikz/data visualization/scientific
+ axes/height=\meta{dimension}}
+ By default, the |height| is the golden ratio times the |width|.
+ \end{key}
+ The minimum value is at the bottom of the axis and at the canvas
+ origin. The maximum value is at the top of the axis.
+ \item Lines (forming a frame) are depicted at the minimum and
+ maximum values of the axes in 50\% black.
+ \item Ticks are drawn `` on the outside'' of the frame so that they
+ interfere as little as possible with the data.
+ \item Tick labels and axis labels (if present) are drawn left and
+ below.
+ \end{itemize}
+\end{key}
+
+\begin{key}{/tikz/data visualization/scientific inner axes}
+ This axis system works like |scientific axes|, only the ticks are on
+ the ``inside'' of the frame.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [scientific inner axes, visualize as smooth line]
+ data [format=function] {
+ var x : interval [-12:12];
+ func y = \value x*\value x*\value x;
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+ This axis system is also common in publications, but the ticks tend
+ to interfere with marks if they are near to the border as can be
+ seen in the following example:
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [scientific inner axes, scientific axes/width=3.2cm,
+ visualize as scatter/.list={a,b}]
+ data [a] {
+ x, y
+ 0, 0
+ 1, 1
+ 0.5, 0.5
+ 2, 1
+ }
+ data [b] {
+ x, y
+ 0.05, 0
+ 1.5, 1
+ 0.5, 0.75
+ 2, 0.5
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+\end{key}
+
+\begin{key}{/tikz/data visualization/scientific clean axes}
+ This axis system is another version of |scientific axes|. However, the
+ axes and the ticks are completely removed from the actual data,
+ making this axis system especially useful for scatter plots, but
+ also for most other scientific plots.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [scientific clean axes, visualize as smooth line]
+ data [format=function] {
+ var x : interval [-12:12];
+ func y = \value x*\value x*\value x;
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+ The distance of the axes from the actual plot is given by the
+ padding of the axes.
+\end{key}
+
+
+For all scientific axis systems, different label placement strategies
+can be specified. They are discussed in the following.
+
+
+\begin{key}{/tikz/data visualization/scientific axes standard labels}
+ As the name suggests, this is the standard placement strategy. The
+ label of the $x$-axis is placed below the center of the $x$-axis,
+ the label of the $y$-axis is rotated by $90^\circ$ and placed left
+ of the center of the $y$-axis.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [scientific clean axes,
+ visualize as smooth line,
+ scientific axes standard labels,
+ x axis={label=degree $d$, ticks={tick unit=${}^\circ$}},
+ y axis={label=$\sin d$}]
+ data [format=function] {
+ var x : interval [-10:10] samples 10;
+ func y = sin(\value x);
+ };
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\begin{key}{/tikz/data visualization/scientific axes upright labels}
+ Works like |scientific axes standard labels|, only the label of the
+ $y$-axis is not rotated.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [scientific clean axes,
+ visualize as smooth line,
+ scientific axes upright labels,
+ x axis={label=degree $d$, ticks={tick unit=${}^\circ$}},
+ y axis={label=$\cos d$,
+ ticks={style={/pgf/number format/.cd,precision=4,fixed zerofill}}}]
+ data [format=function] {
+ var x : interval [-10:10] samples 10;
+ func y = cos(\value x);
+ };
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+
+\begin{key}{/tikz/data visualization/scientific axes end labels}
+ Places the labels at the end of the $x$- and the $y$-axis, similar
+ to the axis labels of a school book axis system.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [scientific clean axes,
+ visualize as smooth line,
+ scientific axes end labels,
+ x axis={label=degree $d$, ticks={tick unit=${}^\circ$}},
+ y axis={label=$\tan d$}]
+ data [format=function] {
+ var x : interval [-10:10] samples 10;
+ func y = tan(\value x);
+ };
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+
+
+
+
+\subsubsection{School Book Axis Systems}
+
+\begin{key}{/tikz/data visualization/school book axes}
+ This axis system is intended to ``look like'' the coordinate systems
+ often used in school books: The axes are drawn in such a way that
+ they intersect to origin. Furthermore, no automatic
+ scaling is done to ensure that the lengths of units are the same in
+ all directions.
+
+ This axis system must be used with care -- it is nearly always
+ necessary to specify the desired unit length by hand using the
+ option |unit length|. If the magnitudes of the units on the two axes
+ differ, different unit lengths typically need to be specified for
+ the different axes.
+
+ Finally, if the data is ``far removed'' from the origin, this
+ axis system will also ``look bad.''
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [school book axes, visualize as smooth line]
+ data [format=function] {
+ var x : interval [-1.3:1.3];
+ func y = \value x*\value x*\value x;
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+ The stepping of the ticks is one unit by default. Using keys like
+ |ticks=some| may help to give better steppings.
+\end{key}
+
+
+\begin{key}{/tikz/data visualization/school book axes standard labels}
+ This key makes the label of the $x$-axis appear at the right end of
+ this axis and it makes the label of the $y$-axis appear at the top
+ of the $y$-axis.
+
+ Currently, this is the only supported placement strategy for the
+ school book axis system.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [school book axes,
+ visualize as smooth line,
+ school book axes standard labels,
+ clean ticks,
+ x axis={label=$x$},
+ y axis={label=$f(x)$}]
+ data [format=function] {
+ var x : interval [-1:1];
+ func y = \value x*\value x + 1;
+ };
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+
+
+
+
+\subsubsection{Advanced: Underlying Cartesian Axis Systems}
+
+The axis systems described in the following are typically not used
+directly by the user. The systems setup \emph{directions} for several
+axes in some sensible way, but they do not actually draw anything on
+these axes. For instance, the |xy Cartesian| creates two axes called
+|x axis| and |y axis| and makes the $x$-axis point right and the
+$y$-axis point up. In contrast, an axis system like |scientific axes|
+uses the axis system |xy Cartesian| internally and then proceeds to
+setup a lot of keys so that the axis lines are drawn,
+ticks and grid lines are drawn, and labels are placed at the correct
+positions.
+
+\begin{key}{/tikz/data visualization/xy Cartesian}
+ This axis system creates two axes called |x axis| and |y axis| that
+ point right and up, respectively. By default, one unit is mapped to
+ one cm.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization [xy Cartesian, visualize as smooth line]
+ data [format=function] {
+ var x : interval [-1.25:1.25];
+ func y = \value x*\value x*\value x;
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+
+ \begin{key}{/tikz/data visualization/xy axes=\meta{options}}
+ This key applies the \meta{options} both to the |x axis| and the
+ |y axis|.
+ \end{key}
+
+\end{key}
+
+
+\begin{key}{/tikz/data visualization/xyz Cartesian cabinet}
+ This axis system works like |xy Cartesian|, only it
+ \emph{additionally} creates an axis called |z axis| that points left
+ and down. For this axis, one unit corresponds to $\frac{1}{2}\sin
+ 45^\circ\mathrm{cm}$. This is also known as a cabinet projection.
+
+ \begin{key}{/tikz/data visualization/xyz axes=\meta{options}}
+ This key applies the \meta{options} both to the |x axis| and the
+ |y axis|.
+ \end{key}
+
+\end{key}
+
+
+\begin{key}{/tikz/data visualization/uv Cartesian}
+ This axis system works like |xy Cartesian|, but it introduces two
+ axes called |u axis| and |v axis| rather than the |x axis| and the
+ |y axis|. The idea is that in addition to a ``major''
+ $xy$-coordinate system this is also a ``smaller'' or ``minor''
+ coordinate system in use for depicting, say, small vectors with
+ respect to this second coordinate system.
+
+ \begin{key}{/tikz/data visualization/uv axes=\meta{options}}
+ Applies the \meta{options} to both the |u axis| and the |y axis|.
+ \end{key}
+
+\end{key}
+
+\begin{key}{/tikz/data visualization/uvw Cartesian cabinet}
+ Like |xyz Cartesian cabinet|, but for the $uvw$-system.
+
+ \begin{key}{/tikz/data visualization/uvw axes=\meta{options}}
+ Like |xyz axes|.
+ \end{key}
+\end{key}
+
+
+
+\subsection{Reference: Tick Placement Strategies}
+\label{section-dv-tick-placement-strategies}
+
+As described in \ref{section-dv-concept-tick-placement-strategies},
+it is not a trivial task for the data visualization engine to
+correctly automatically determine good positions for the placement of
+ticks on axes. When the values on an axis range between, say, $17.4$
+and $34.5$, it is somewhat unclear where ticks should be placed.
+
+
+\subsubsection{Predefined Strategies}
+
+The following strategies are always available:
+
+\begin{key}{/tikz/data visualization/axis options/linear steps}
+ This strategy placed ticks at positions that are evenly spaced by
+ the current value of |step|.
+
+ In detail, the following happens: Let $a$ be the minimum value of the
+ data values along the axis and let $b$ be the maximum. Let the
+ current \emph{stepping} be $s$ (the stepping is set using the |step|
+ option, see below) and let the current \emph{phasing} be $p$ (set
+ using the |phase|) option. Then ticks are placed all positions
+ $i\cdot s + p$ that lie in the interval $[a,b]$, where $i$ ranges
+ over all integers.
+
+ The tick positions computed in the way described above are
+ \emph{mayor} step positions. In addition to these, if the key
+ |minor steps between steps| is set to some number $n$, then $n$ many
+ minor ticks are introduced between each two mayor ticks (and also
+ before and after the last mayor tick, provided the values still lie
+ in the interval $[a,b]$). Note that is $n$ is $1$, then one minor tick
+ will be added in the middle between any two mayor ticks. Use a value
+ of $9$ (not $10$) to partition the interval between two mayor ticks
+ into ten equally sized minor intervals.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization
+ [scientific inner axes, scientific axes/width=3cm,
+ x axis={ticks={step=3, minor steps between steps=2}},
+ y axis={ticks={step=.36}},
+ visualize as scatter]
+ data {
+ x, y
+ 17, 30
+ 34, 32
+ };
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\begin{key}{/tikz/data visualization/axis options/exponential steps}
+ This strategy produces ticks at positions that are appropriate for
+ logarithmic plots. It is automatically selected when you use the
+ |logarithmic| option with an axis.
+
+ In detail, the following happens: As for |linear steps| let numbers
+ $a$, $b$, $s$, and $p$ be given. Then, mayor ticks are placed at all
+ positions $10^{i\cdot s+p}$ that lie in the interval $[a,b]$ for $i
+ \in \mathbb Z$.
+
+ The minor steps are added in the same way as for |linear steps|. In
+ particular, they interpolate \emph{linearly} between mayor steps.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \datavisualization
+ [scientific axes,
+ x axis={logarithmic, length=2cm, ticks={step=1.5}},
+ y axis={logarithmic, ticks={step=1, minor steps between steps=9}},
+ visualize as scatter]
+ data {
+ x, y
+ 1, 10
+ 1000, 1000000
+ };
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+
+
+
+\subsubsection{Choosing a Stepping Explicitly}
+
+The following options are used to configure tick placement strategies
+like |linear steps|. Unlike the basic choice of a placement strategy,
+which is an axis option, the following should be passed to the option
+|ticks| or |grid| only.. So, you would write
+things like |x axis={ticks={step=2}}|, but |x axis=linear steps|.
+
+\begin{key}{/tikz/data visualization/step=\meta{value} (initially 1)}
+ The value of this key is used to determine the spacing of the major
+ ticks. The key is used by the |linear steps| and |exponential steps|
+ strategies described above, see the explanations there.
+\end{key}
+
+\begin{key}{/tikz/data visualization/minor steps between
+ steps=\meta{number} (default 9)}
+ As for |step|, see the explanation of |linear steps|.
+\end{key}
+
+\begin{key}{/tikz/data visualization/phase=\meta{value} (initially 0)}
+ As for |step|, see the explanation of |linear steps|.
+\end{key}
+
+
+
+\subsubsection{Choosing a Stepping Automatically}
+
+The |step| option gives you ``total control'' over the stepping of
+ticks on an axis, but you often do not know the correct stepping in
+advance. In this case, you may prefer to have a good value for |step|
+being computed for you automatically.
+
+Like the |step| key, these options are passed to the |ticks|
+option. So, for instance, you would write |x axis={ticks={about=4}}|
+to request about four ticks to be placed on the $x$-axis.
+
+
+\begin{key}{/tikz/data visualization/about=\meta{number}}
+ This key asks the data visualization to place \emph{about}
+ \meta{number} many ticks on an axis. It is not guaranteed that
+ \emph{exactly} \meta{number} many ticks will be used, rather the
+ actual number will be the closest number of ticks to \meta{number}
+ so that their stepping is still ``good''. For instance, when you say
+ |about=10|, it may happen that exactly |10|, but perhaps even |13| ticks are
+ actually selected, provided that these numbers of ticks lead to good
+ stepping values like |5| or |2.5| rather than numbers like |3.4| or
+ |7|. The method that is used to determine which steppings a deemed to
+ be ``good'' depends on the current tick placement strategy.
+
+ \medskip
+ \textbf{Linear steps.}
+ Let us start with |linear steps|: First, the difference between the
+ maximum value $v_{\max}$ and the minimum value $v_{\min}$ on the
+ axis is computed; let us call it $r$ for ``range.'' Then, $r$ is
+ divided by \meta{number},
+ yielding a target stepping~$s$. If $s$ is a number like $1$ or $5$
+ or $10$, then this number could be used directly as the new value of
+ |step|. However, $s$ will typically something strange like $0.02345$
+ or $345223.76$, so $s$ must be replaced by a better value like $0.02$
+ in the first case and perhaps $250000$ in the second case.
+
+ In order to determine which number is to be used, $s$ is rewritten
+ in the form $m \cdot 10^k$ with $1 \le m < 10$ and $k \in \mathbb
+ Z$. For instance, $0.02345$ would be rewritten as $2.345 \cdot
+ 10^{-2}$ and $345223.76$ as $3.4522376 \cdot 10^5$. The next step
+ is to replace the still not-so-good number $m$ like $2.345$ or
+ $3.452237$ by a ``good'' value $m'$. For this, the current value of
+ the |about strategy| is used:
+ \begin{key}{/tikz/data visualization/about strategy=\meta{list}}
+ The \meta{list} is a comma-separated sequence of pairs
+ \meta{threshold}/\meta{value} like for instance |1.5/1.0| or
+ |2.3/2.0|. When a good value $m'$ is sought for a given $m$, we
+ iterate over the list and find the first pair
+ \meta{threshold}/\meta{value} where \meta{threshold}
+ exceeds~$m$. Then $m'$ is set to \meta{value}. For instance, if
+ \meta{list} is |1.5/1.0,2.3/2.0,4/2.5,7/5,11/10|, which is the
+ default, then for $m=3.141$ we would get $m'=2.5$ since $4 >
+ 3.141$, but $2.3 \le 3.141$. For $m=6.3$ we would get $m'=5$.
+ \end{key}
+ Once $m'$ has been determined, the stepping is set to $s' = m'
+ \cdot 10^k$.
+
+ % Define an axis type
+ \tikzdatavisualizationset{
+ one dimensional axis/.style={
+ new Cartesian axis=axis,
+ axis={
+ attribute=main,
+ unit vector={(0pt,1pt)},
+ visualize axis={style=->},
+ visualize ticks={major={tick text at low},direction axis=perpendicular},
+ length=3cm
+ },
+ new Cartesian axis=perpendicular,
+ perpendicular={
+ attribute=perp,
+ unit vector={(1pt,0pt)},
+ include values=0,
+ include values=1
+ }
+ }
+ }
+
+ \def\showstrategy#1{
+
+ % Show the effect for the different strategies
+ \medskip
+ \begin{tikzpicture}
+ \foreach \max/\about [count=\c] in {10/5,20/5,30/5,40/5,50/5,60/5,70/5,80/5,90/5,100/5,100/3,100/10}
+ {
+ \begin{scope}[xshift=\c pt*30]
+ \datavisualization [#1,
+ one dimensional axis,
+ axis={
+ ticks={about=\about},
+ include values=0,
+ include values=\max
+ }
+ ];
+
+ \node at (0,-5mm) [anchor=mid] {\texttt{\about}};
+ \end{scope}
+ }
+
+ \node at (30pt,-5mm) [anchor=mid east] {\texttt{about=\ \ }};
+ \end{tikzpicture}
+}
+
+ The net effect of all this is that for the default strategy, the
+ only valid stepping are the values $1$, $2$, $2.5$ and $5$ and every
+ value obtainable by multiplying one of these values by a power of
+ ten. The following example shows the effects of, first, setting
+ |about=5| (corresponding to the |some| option) and then having axes
+ where the minimum value is always |0| and where the maximum value
+ ranges from |10| to |100| and, second, setting |about| to the values
+ from |3| (corresponding to the |few| option) and to |10|
+ (corresponding to the |many| option) while having the
+ minimum at |0| and the maximum at |100|:
+
+ \showstrategy{standard about strategy}
+
+ \medskip
+ \textbf{Exponential steps.}
+ For |exponential steps| the strategy for determining a good stepping
+ value is similar to |linear steps|, but with the following
+ differences:
+ \begin{itemize}
+ \item Naturally, since the stepping value refers to the exponent,
+ the whole computation of a good stepping value needs to be done
+ ``in the exponent.'' Mathematically spoken, instead of considering
+ the difference $r = v_{\max} - v_{\min}$, we consider the difference $r =
+ \log v_{\max} - \log v_{\min}$. With this difference, we still
+ compute $s = r / \meta{number}$ and let $s = m \cdot 10^k$ with $1
+ \le m < 10$.
+ \item It makes no longer sense to use values like $2.5$ for $m'$
+ since this would yield a fractional exponent. Indeed, the only
+ sensible values for $m'$ seem to be $1$, $3$, $6$, and
+ $10$. Because of this, the |about strategy| is ignored and one of
+ these values or a multiple of one of them by a power of ten is
+ used.
+ \end{itemize}
+
+ The following example shows the chosen steppings for a maximum
+ varying from $10^1$ to $10^5$ and from $10^{10}$ to $10^{50}$ as
+ well as for $10^{100}$ for |about=3|:
+
+ \medskip
+ \begin{tikzpicture}
+ \foreach \max [count=\c] in {1,...,5,10,20,...,50,100}
+ {
+ \begin{scope}[xshift=\c pt*40]
+ \datavisualization [
+ one dimensional axis,
+ axis={
+ logarithmic,
+ ticks={about=3},
+ include values=1,
+ include values=1e\max
+ }
+ ];
+ \end{scope}
+ }
+ \end{tikzpicture}
+
+
+ \medskip
+ \textbf{Alternative strategies.}
+
+ In addition to the standard |about strategy|, there are some
+ additional strategies that you might wish to use instead:
+
+ \begin{key}{/tikz/data visualization/standard about
+ strategy}
+ Permissible values for $m'$ are: $1$, $2$, $2.5$, and~$5$. This
+ strategy is the default strategy.
+ \end{key}
+
+ \begin{key}{/tikz/data visualization/euro about strategy}
+ Permissible values for $m'$ are: $1$, $2$, and~$5$. These are the
+ same values as for the Euro coins, hence the
+ name.
+
+ \showstrategy{euro about strategy}
+ \end{key}
+
+ \begin{key}{/tikz/data visualization/half about strategy}
+ Permissible values for $m'$: $1$ and $5$. Use this
+ strategy if only powers of $10$ or halves thereof seem logical.
+
+ \showstrategy{half about strategy}
+ \end{key}
+
+ \begin{key}{/tikz/data visualization/quarter about strategy}
+ Permissible values for $m'$ are: $1$, $2.5$, and $5$.
+
+ \showstrategy{quarter about strategy}
+ \end{key}
+
+ \begin{key}{/tikz/data visualization/int about strategy}
+ Permissible values for $m'$ are: $1$, $2$, $3$, $4$, and $5$.
+
+ \showstrategy{int about strategy}
+ \end{key}
+\end{key}
+
+\begin{key}{/tikz/data visualization/many}
+ This is an abbreviation for |about=10|.
+\end{key}
+
+\begin{key}{/tikz/data visualization/some}
+ This is an abbreviation for |about=5|.
+\end{key}
+
+\begin{key}{/tikz/data visualization/few}
+ This is an abbreviation for |about=3|.
+\end{key}
+
+\begin{key}{/tikz/data visualization/none}
+ Switches off the automatic step computation. Unless you use |step=|
+ explicitly to set a stepping, no ticks will be (automatically)
+ added.
+\end{key}
+
+
+
+
+\subsubsection{Advanced: Defining New Placing Strategies}
+
+\begin{key}{/tikz/data visualization/axis options/tick placement strategy=\meta{macro}}
+ This key can be used to install a so-called \emph{tick placement
+ strategy}. Whenever |visualize ticks| is used to request some
+ ticks to be visualized, it is checked whether some automatic ticks
+ should be created. This is the case when the following key is set:
+ \begin{key}{/tikz/data visualization/compute step=\meta{code}}
+ The \meta{code} should compute a suitable value for the stepping
+ to be used by the \meta{macro} in the tick placement strategy.
+
+ For instance, the |step| key sets |compute step| to
+ |\def\tikz@lib@dv@step{#1}|. Thus, when you say |step=5|, then the
+ desired stepping of |5| is communicated to the \meta{macro} via the
+ macro |\tikz@lib@dv@step|.
+ \end{key}
+
+ Provided |compute step| is set to some nonempty value, upon
+ visualization of ticks the \meta{macro} is executed. Typically,
+ \meta{macro} will first call the \meta{code} stored in the key
+ |compute step|. Then, it should implement some strategy then uses
+ the value of the computed or desired stepping to create appropriate
+ |at| commands. To be precise, it should set the keys |major|,
+ |minor|, and/or |subminor| with some appropriate |at| values.
+
+ Inside the call of \meta{macro}, the macro |\tikzdvaxis| will have
+ been set to the name of the axis for which default ticks need to be
+ computed. This allows you to access the minimum and the maximum
+ value stored in the |scaling mapper| of that axis.
+ \begin{codeexample}[]
+\def\silly{
+ \tikzdatavisualizationset{major={at={2,3,5,7,11,13}}}
+}
+\begin{tikzpicture}
+ \datavisualization [
+ scientific axes, visualize as scatter,
+ x axis={tick placement strategy=\silly}
+ ]
+ data {
+ x, y
+ 0, 0
+ 15, 15
+ };
+\end{tikzpicture}
+\end{codeexample}
+\end{key}
+
+\subsection{Advanced: Creating New Axes}
+
+\subsection{Advanced: Creating New Axis Systems}