What is the default distance between the axis numbers and axis labels in the plots made with pgfplots?
[Tex/LaTex] Default distance between axis numbers and axis labels pgfplots
pgfplots
Related Solutions
As mentioned in the comments, this is basically the same as Pgfplots with custom axis markers. All you need to do is to specify where you want the xtick={...}
and how you want each of them labelled via xticklabels={...}
.
Method 1: Explicit Labels:
Explicit labels can be specified using xticklabels
.
The one complication that comes about is that sometimes the label overlaps with the plot as is the case for -\pi
and 2pi
in the blue graph. I have not found a elegant way to fix that so I just manually add some spacing to those labels to tweak them as I did the red graph:
Method 2: Scaled Axis Labels:
An alternate is to scale the x-axis labels in terms of multiples of pi
, and show that the x axis labels are multiples of pi
. This solution is based on Spikes solution, so you should up vote that if you prefer this version. I prefer to label this as part of the axis (brown graph), but others might prefer to display it as in the cyan graph:
xticklabels
:
If you want a tick mark, but not a corresponding label you can simply place an empty label as in $$
or just better just use a double comma ,,
to skip it being labelled. For instance, if the labels at +\pi
and -\pi
are not desired, simply replace those labels with spaces (extra spaces here are just to point out where the gap is):
xticklabels={$-2\pi$, $-\frac{3\pi}{2}$, , $-\frac{\pi}{2}$,
$\frac{\pi}{2}$, , $\frac{3\pi}{2}$, $2\pi$}
xtick
:
Note that two methods of specifying where the tick marks go are used in the code. One is to explicitly list them as
xtick={-6.28318, -4.7123889, -3.14159, -1.5708, 1.5708, 3.14159, 4.7123889, 6.28318}
This is used in the first two examples so that the correspondence between the xtick
and xticklabels
is easier to see. The second two use the more compact method:
xtick={-6.28318, -4.7123889, ..., 6.28318}
Code:
\documentclass{article}
\usepackage{pgfplots}
% Grouping the common style settings here to make the code below easier to read
\pgfkeys{/pgfplots/Axis Style/.style={
width=13.5cm, height=5cm,
axis x line=center,
axis y line=middle,
samples=100,
ymin=-1.5, ymax=1.5,
xmin=-7.0, xmax=7.0,
domain=-2*pi:2*pi
}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={
-6.28318, -4.7123889, -3.14159, -1.5708,
1.5708, 3.14159, 4.7123889, 6.28318
},
xticklabels={
$-2\pi$, $-\frac{3\pi}{2}$, $-\pi$, $-\frac{\pi}{2}$,
$\frac{\pi}{2}$, $\pi$, $\frac{3\pi}{2}$, $2\pi$
}
]
\addplot [mark=none, ultra thick, blue] {sin(deg(x))};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={
-6.28318, -4.7123889, -3.14159, -1.5708,
1.5708, 3.14159, 4.7123889, 6.28318
},
xticklabels={
$-2\pi$, $-\frac{3\pi}{2}$, $-\pi\hspace{0.30cm}$, $-\frac{\pi}{2}$,
$\frac{\pi}{2}$, $\pi\hspace{0.10cm}$, $\frac{3\pi}{2}$, $\hspace{0.25cm} 2\pi$
}
]
\addplot [mark=none, ultra thick, red] {sin(deg(x))};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={-6.28318, -4.7123889, ..., 6.28318},
scaled x ticks={real:3.1415},
xtick scale label code/.code={},
xlabel={$x \thinspace [\times \pi]$}
]
\addplot [mark=none, ultra thick, brown] {sin(deg(x))};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
Axis Style,
xtick={-6.28318, -4.7123889, ..., 6.28318},
scaled x ticks={real:3.1415},
xtick scale label code/.code={$[\times \pi]$},
xlabel={$x$}
]
\addplot [mark=none, ultra thick, cyan] {sin(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}
The key compat=newest
is supposed to change the way axis labels are placed.
In all versions before 1.3, the axis labels have been placed at a fixed, absolute distance - without respecting the width of any tick labels. After 1.3, a "new" (we have 1.6.1 by now) feature allows to compute the size of the largest tick label and places the axis labels next to them.
Note that the use of compat=newest
is generally discouraged. What should happen if version 1.7 wants to change default values? The choice newest
would result in a different output compared to now. Please use compat=1.5
or compat=1.6
(or whatever version you are running). Since 1.6, pgfplots will dump a suggested value to the log file.
In your case, you can use the axis option xlabel absolute
(or its y variant) to restore the old absolute placement.
Best Answer
The default distance between the tick labels and the axis labels when using
compat=1.3
or later (and thusxlabel near ticks
) is2*inner sep + 2*outer sep = 2*0.3333em + 2*0.5\pgflinewidth
.If you're not using
compat=1.3
(or explicitly supplyxlabel absolute
), the distance between the top of the x label and the x axis is15pt
, and the distance between the horizontal centre of the y label and the y axis is35pt
.