summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/pgfplots/pgfplots.reference.numberformatting.tex
blob: e92e1b133bee8ad45c8e372faa449c975cf57e11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287

\subsection{Number Formatting Options}
\label{sec:number:printing}%
\PGFPlots\ typesets tick labels rounded to given precision and in configurable number formats. The command to do so is |\pgfmathprintnumber|; it uses the current set of number formatting options. In addition, \PGFPlots\ might prepare tick numbers before they are handed over to |\pgfmathprintnumber|.

The options related to number printing as such are described in all detail in the manual for \PGFPlotstable, which comes with \PGFPlots. This section contains the reference for everything which is specific to an axis, and only a brief survey over the number formatting options as such.

\subsubsection{Frequently Used Number Printing Settings}
\label{sec:number:faq}
This section provides a brief survey about the most frequently used aspects of number formatting in \PGFPlots. 
\begin{enumerate}
	\item \PGFPlots\ computes common tick scaling factors like $\cdot 10^2$ and produces only integers as tick labels.
	
	In order to get numbers like $0.001$ as tick labels instead of $1$ with a separate label $\cdot 10^{-3}$, you can use |scaled ticks=false| in your axis. See the description of |scaled ticks| for details.

	\item In order to customize the way numbers are rounded and/or displayed,
	use something like |xticklabel style={/pgf/number format/.cd,fixed,precision=5}|. 
	
	Here is a short list of possibilities:
\begin{codeexample}[]
\pgfmathprintnumber{123.456789}
\end{codeexample}
\begin{codeexample}[]
\pgfmathprintnumber{12345.6789}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber
	[fixed,precision=5]{12345.6789}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber
	[fixed,fixed zerofill,precision=5]{12345.6789}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber
	[fixed,fixed zerofill,precision=5,use comma]
	{12345.6789}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber
	[sci]{12345.6789}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber
	[sci,sci zerofill,precision=5]{12345.6789}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber
	[sci,sci generic=
	  {mantissa sep=\times,exponent={10^{#1}}}]
	{12.345}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber[frac]{0.333333333333333}; 
	\pgfmathprintnumber[frac]{0.5}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber[print sign]{2}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber
	[1000 sep={\,},fixed,precision=6]{1000000.123456}
\end{codeexample}

\begin{codeexample}[]
\pgfmathprintnumber[
  1000 sep={\,},fixed,precision=6,
  1000 sep in fractionals]
	 {1000000.123456}
\end{codeexample}

	\noindent Each of these keys requires the prefix `|/pgf/number format/|' when used inside of a \PGFPlots\ style (try |/pgf/number format/.cd,|\meta{number formatting keys} to use the same prefix for many \meta{number formatting keys}).

	The number formatting uses |\pgfmathprintnumber|, a \pgfname\ command to typeset numbers. A full reference of all supported options is shipped with \PGFPlots: it is documented in the reference manual for \PGFPlotstable, Section `Number Formatting Options'. The same reference can be found in the documentation for \pgfname.

	Note that the number printer knows \emph{nothing} about \PGFPlots. In particular, it is not responsible for logs and their representation.

	\item For a logarithmic axis, one may want to modify the number formatting style for the \emph{exponent only}. In this case, redefine the style |log plot exponent style| (its documentation contains a couple of examples).

	\item In order to get |fixed| point tick labels on a logarithmic axis, you can use |log ticks with fixed point| (see below).
\end{enumerate}


\subsubsection{PGFPlots-specific Number Formatting}
This section contains fine--tuning options to change number formatting aspects -- but only things which are specific to \PGFPlots\ like peculiarities of tick labels on logarithmic axes. Consider browsing Section~\ref{sec:number:faq} first to see if you need this section. 

\begin{command}{\pgfmathprintnumber\marg{x}}
Generates pretty-printed output for the (real) number \meta{x}. The input number \meta{x} is parsed using |\pgfmathfloatparsenumber| which allows arbitrary precision.

Numbers are typeset in math mode using the current set of number printing options, see below. Optional arguments can also be provided using |\pgfmathprintnumber[|\meta{options}|]|\marg{x}.

Please refer to the manual of \PGFPlotstable\ (shipped with this package) for details about options related to number-printing.
\end{command}

\begin{stylekey}{/pgfplots/log ticks with fixed point}
	Reconfigures \PGFPlots\ to display tick labels of logarithmic axes using \emph{fixed point} numbers instead of the exponential style.

\begin{codeexample}[]
\begin{tikzpicture}
\begin{semilogyaxis}[log ticks with fixed point]
	\addplot+[domain=0:10] {exp(x)};
\end{semilogyaxis}
\end{tikzpicture}
\end{codeexample}

\begin{codeexample}[]
\begin{tikzpicture}
\begin{loglogaxis}[
	log ticks with fixed point,
	xlabel=Cost,ylabel=Error]
\addplot coordinates {
	(5,     8.31160034e-02)
	(17,    2.54685628e-02)
	(49,    7.40715288e-03)
	(129,   2.10192154e-03)
	(321,   5.87352989e-04)
	(769,   1.62269942e-04)
	(1793,  4.44248889e-05)
	(4097,  1.20714122e-05)
	(9217,  3.26101452e-06)
};
\addplot coordinates {
	(7,     8.47178381e-02)
	(31,    3.04409349e-02)
	(111,   1.02214539e-02)
	(351,   3.30346265e-03)
	(1023,  1.03886535e-03)
	(2815,  3.19646457e-04)
	(7423,  9.65789766e-05)
	(18943, 2.87339125e-05)
	(47103, 8.43749881e-06)
};
\legend{Case 1,Case 2}
\end{loglogaxis}
\end{tikzpicture}
\end{codeexample}

	The style replaces |log number format basis|.
\end{stylekey}

\begin{pgfplotskey}{log plot exponent style=\marg{key-value-list}}
Allows to configure the number format of log plot exponents. This style is installed just before `|log number format basis|' will be invoked. Please note that this style will be installed within the default code for `|log number format code|'.
\begin{codeexample}[]
\pgfplotsset{
	samples=15,
	width=7cm,
	xlabel=$x$,
	ylabel=$f(x)$,
	extra y ticks={45},
	legend style={at={(0.03,0.97)},
		anchor=north west}}

\begin{tikzpicture}
\begin{semilogyaxis}[
	log plot exponent style/.style={
		/pgf/number format/fixed zerofill,
		/pgf/number format/precision=1},
	domain=-5:10]

	\addplot {exp(x)};
	\addplot {exp(2*x)};

	\legend{$e^x$,$e^{2x}$}
\end{semilogyaxis}
\end{tikzpicture}
\end{codeexample}

\begin{codeexample}[]
\pgfplotsset{
	samples=15,
	width=7cm,
	xlabel=$x$,
	ylabel=$f(x)$,
	extra y ticks={45},
	legend style={at={(0.03,0.97)},
		anchor=north west}}

\begin{tikzpicture}
\begin{semilogyaxis}[
	log plot exponent style/.style={
		/pgf/number format/fixed,
		/pgf/number format/use comma,
		/pgf/number format/precision=2},
	domain=-5:10]

	\addplot {exp(x)};
	\addplot {exp(2*x)};

	\legend{$e^x$,$e^{2x}$}
\end{semilogyaxis}
\end{tikzpicture}
\end{codeexample}
\end{pgfplotskey}

\label{sec:identify:minor:log}%
\begin{pgfplotskey}{log identify minor tick positions=\mchoice{true,false} (initially false)}
Set this to |true| if you want to identify log--plot tick labels at positions 
\[ i \cdot 10^j \]
with $i \in \{2,3,4,5,6,7,8,9\},\, j \in \Z$. This may be valuable in conjunction with the `|extra x ticks|' and `|extra y ticks|' options.
\begin{codeexample}[]
\begin{tikzpicture}%
\begin{loglogaxis}
	[title=Standard options,
	width=6cm]
\addplot coordinates {
	(1e-2,10)
	(3e-2,100)
	(6e-2,200)
};
\end{loglogaxis}
\end{tikzpicture}%
\end{codeexample}

\begin{codeexample}[]
\pgfplotsset{every axis/.append style={%
	width=6cm,
	xmin=7e-3,xmax=7e-2,
	extra x ticks={3e-2,6e-2},
	extra x tick style={major tick length=0pt,font=\footnotesize}
}}%

\begin{tikzpicture}%
	\begin{loglogaxis}[
		xtick={1e-2},
		title=with minor tick identification,
		extra x tick style={
			log identify minor tick positions=true}]
	\addplot coordinates {
		(1e-2,10)
		(3e-2,100)
		(6e-2,200)
	};
	\end{loglogaxis}
\end{tikzpicture}%

\begin{tikzpicture}%
	\begin{loglogaxis}[
		xtick={1e-2},
		title=without minor tick identification,
		extra x tick style={
			log identify minor tick positions=false}]
	\addplot coordinates {
		(1e-2,10)
		(3e-2,100)
		(6e-2,200)
	};
	\end{loglogaxis}%
\end{tikzpicture}%
\end{codeexample}
	This key is set by the default styles for extra ticks.
\end{pgfplotskey}

\begin{pgfplotscodekey}{log number format code}
Provides \TeX-code to generate log plot tick labels. Argument `|#1|' is the (natural) logarithm of the tick position.
The default implementation invokes |log base 10 number format code| after it changed the log basis to~$10$. It also checks the other log plot options.

This key will have a different meaning when the log basis has been chosen explicitly, see the |log basis x| key.
\end{pgfplotscodekey}


\begin{pgfplotscodekey}{log base 10 number format code}
Allows to change the overall appearance of base 10 log plot tick labels. The default implementation invokes |log number format basis={10}{#1}|.
	
	Use |log plot exponent style| if you only want to change number formatting options for the exponent.
\end{pgfplotscodekey}

\begin{pgfplotscodekey}{log number format basis}
	Typesets a logarithmic tick. The first supplied argument is the log basis, the second the exponent. The initial configuration is
\begin{codeexample}[code only]
\pgfplotsset{
	/pgfplots/log number format basis/.code 2 args={$#1^{\pgfmathprintnumber{#2}}$}
}
\end{codeexample}
	
	Use |log plot exponent style| if you only want to change number formatting options for the exponent.
\end{pgfplotscodekey}