In a plot with pgfplots I would like to draw, from background to foreground, in the following order:
- (background) grid;
- (intermediate layer) plot;
- (foreground) axis.
As specified in this answer,
Adding
axis on topto the axis options means axis lines, ticks and grids are printed on top of the stuff inside the environment.
So, this is not the correct option for this. This code
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{shapes.geometric,arrows,arrows.meta}
\pgfplotsset{
/pgfplots/layers/Bowpark/.define layer set={
axis background,axis grid,main,axis ticks,axis lines,axis tick labels,
axis descriptions,axis foreground
}{/pgfplots/layers/standard},
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[/pgfplots/layers/Bowpark,
width=\textwidth,
xmin=-0.5, xmax=6,
ymin=-0.5, ymax=4,
axis line style = thin,
axis lines=middle,
axis line style={-{Stealth[length=2.5mm]}},
thick,
grid=major, grid style={dashed,gray!30}]
\addplot[blue, samples = 100] {x^2};
\end{axis}
\end{tikzpicture}
\end{document}
doesn't work neither (plot is above grid, but also above the axis). I used \addplot[blue, samples = 100] {x^2}; instead of \addplot[samples = 100] {x^(1/2)}; to better highlight the superposition of the plot, the grid and the axis.
What's wrong? Note that also trying
\pgfplotsset{
/pgfplots/layers/Bowpark/.define layer set={
axis background,main,axis grid,axis ticks,axis lines,axis tick labels,
axis descriptions,axis foreground
}{/pgfplots/layers/standard},
}
(switched the order of main and axis grid) produces the same output.
Maybe something in my configuration ignores the layers order?



axis on topbut draw the grid by hand, behind the plot. – Henri Menke Oct 26 '18 at 14:37