我刚刚注意到 pgfplots 似乎首先绘制所有线条,然后绘制所有符号。考虑这个 MWE:
\documentclass[10pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[mark=*,color=red] coordinates {(0.1,0.1) (0.9,0.9)};
\addplot[mark=*,color=black] coordinates {(0.1,0.09) (0.9,0.91)};
\end{axis}
\end{tikzpicture}
\end{document}
以下是部分输出的特写:
查看输出的其他部分可以清楚地发现绘制顺序是:
- 红线
- 黑线
- 红色符号
- 黑色符号
在我看来这似乎是“不正确的”。是的,我承认我应该担心更重要的事情,但我怎样才能让 pgfplots 首先绘制所有黑色项目,然后绘制所有红色项目(或反之亦然)?
答案1
根据我的发现,clip mode=individual
这里的诀窍是这样的。
\documentclass[tikz,10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xshift=-8cm]
\addplot[mark=*,color=red] coordinates {(0.1,0.1) (0.9,0.9)};
\addplot[mark=*,color=black] coordinates {(0.1,0.09) (0.9,0.91)};
\end{axis}
\begin{axis}[clip mode=individual]
\addplot[mark=*,color=red] coordinates {(0.1,0.1) (0.9,0.9)};
\addplot[mark=*,color=black] coordinates {(0.1,0.09) (0.9,0.91)};
\end{axis}
\end{tikzpicture}
\end{document}
请注意我会想法这确实mark layer=like plot
可以解决问题,但事实似乎并非如此。