我的问题与 pgfplots 中的图层顺序有关。我有 3 层:
- 外部图形,包括
\addplot graphics
- 轴网格和刻度
- 额外的“箭筒”绘图来自
\addplot
我希望看到(1-2-3)层序列(外部图形是底层)。
如果我不做任何特别的事情,我可以得到(2-1-3),
(1-3-2)如果我使用axis on top
,
\pgfplotsset{set layers}
几乎可以完成工作,但轴架仍然在外部图形下,
最后我发现(1-2-3)是可行的,但需要使用两个axis
环境。
那么,产生所需的(1-2-3)层序列的最佳方法是什么?
以下是代码示例:
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
%\pgfplotsset{set layers}
\begin{axis}[
grid=both,
enlargelimits=false,
axis on top
]
\addplot graphics [xmin=0,xmax=1,ymin=0,ymax=1] {demo};
\addplot [thick,yellow,
quiver={u=\thisrow{u},v=\thisrow{v},update limits=false},-stealth]
table
{
x y u v
0.4 0.5 0 0.1
};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
图书馆backgrounds
帮助:
\usetikzlibrary{backgrounds}
...
\addplot[on background layer] graphics ...
完整示例(不包含axis on top
且包含更多当前行):
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{pgfplots}
\usetikzlibrary{backgrounds}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
grid=both,
grid style={semithick, white},
tick style={semithick, white},
enlargelimits=false,
]
\addplot[on background layer] graphics [xmin=0,xmax=1,ymin=0,ymax=1] {demo};
\addplot [ultra thick, yellow,
quiver={u=\thisrow{u},v=\thisrow{v},update limits=false},-stealth]
table
{
x y u v
0.4 0.5 0 0.1
};
\end{axis}
\end{tikzpicture}
\end{document}
因此,图像位于背景中,随后是带有网格的轴心,顶部是“箭筒”图形。