pgfplotsextra:在标记和线条上绘制

pgfplotsextra:在标记和线条上绘制

我正在使用与此 MWE 类似的设置:

\documentclass{article}

\usepackage{pgfplots}

\begin{document}
    \begin{tikzpicture}
    \begin{axis}
        \addplot[domain=-2:2,mark=x] {sin(deg(x)))};
        \pgfplotsextra{
            \draw[red,->,>=latex] (axis cs:-1,0) to (axis cs:0.1,0);
           % in reality there are more commands here
        }
    \end{axis}
    \end{tikzpicture}
\end{document}

这段代码似乎绘制在线条之上,而不是标记之上,这里是放大的版本 在此处输入图片描述

但我想在线条和标记上方绘图。该如何实现?

答案1

您可以通过更改标记层来实现这一点,例如这个答案

\documentclass{article}

\usepackage{pgfplots}

\begin{document}
    \begin{tikzpicture}
    \begin{axis}[set layers, mark layer=axis tick labels]
        \addplot[domain=-2:2,mark=x] {sin(deg(x)))};
        \pgfplotsextra{
            \draw[red,->,>=latex] (axis cs:-1,0) to (axis cs:0.1,0);
           % in reality there are more commands here
        }
    \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

但是,\pgfplotsextra不应该用于绘制路径,并且在足够新的 pgfplots 版本中您不需要它axis cs:,并且您可以全局设置它,例如通过说\pgfplotsset{set layers, mark layer=axis tick labels}

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16,set layers, mark layer=axis tick labels}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}
        \addplot[domain=-2:2,mark=x] {sin(deg(x)))};
        \draw[red,->,>=latex] (-1,0) to (0.1,0);
    \end{axis}
    \end{tikzpicture}
\end{document}

相关内容