在带有 pgfplots 的图中,我想按以下顺序从背景到前景进行绘制:
- (背景)网格;
- (中间层)图;
- (前景)轴。
作为指定在这个答案中,
添加
axis on top
轴选项意味着轴线、刻度和网格将打印在环境内部的东西上面。
所以,这不是正确的选择。此代码
\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}
也不起作用(图在网格上方,也在轴上方)。我使用了\addplot[blue, samples = 100] {x^2};
而不是 来\addplot[samples = 100] {x^(1/2)};
更好地突出图、网格和轴的叠加。
出了什么问题?请注意,尝试
\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},
}
main
(交换和的顺序axis grid
)产生相同的输出。
也许我的配置忽略了图层顺序?
答案1
在第 4.27 节中对此进行了详细讨论pgfplots
手动的layer set
。我所做的只是根据定义一个新的,其中我将和axis on top
的顺序颠倒过来。axis grid
main
\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}[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},
set layers=Bowpark]
\addplot[blue, samples = 100] {x^2};
\end{axis}
\end{tikzpicture}
\end{document}
编辑:修复了bug,我太马虎了,抱歉!
由用户编辑 2022-10-30曼努埃尔·库纳
如果你使用fillbetween
库,似乎你还必须将包含pre main
在列表中。就我而言,我将pre main
其放在main
包 pgfplots 警告:“fill between”:无法激活图形层“pre main”。填充路径将位于其他路径之上。请确保“pre main”位于图层列表中的某个位置(或设置“/tikz/fill between/on layer=”)。