引用使用 \pgfplotsset 设置样式的线

引用使用 \pgfplotsset 设置样式的线

在下面的 MWE 示例中,似乎参考的线条样式设置不正确(在图中,圆圈未填充,但在引用它们时会被填充)。

我做错了什么吗?或者这是一个错误?如果是这样,有什么解决方法吗?除了手动设置文档中所有行的样式。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{
  every axis plot/.append style={thick, black},
  every axis plot post/.append style={
    every mark/.append style={mark size=3,solid,fill opacity=0}
  }
}

\begin{document}
Why is this marker \ref{myline} different but this one
\ref{myline-correct} is correct?

\begin{tikzpicture}
  \begin{axis}
    \addplot[mark=*]
    table [x=x, y=y]{%
      x y
      0 0
      1 1
      2 2
      3 3
      4 4
    };
    \label{myline}

    \addplot[mark=square, mark size=3,solid,fill opacity=0]
    table [x=x, y=y]{%
      x y
      4 0
      3 1
      2 2
      1 3
      0 4
    };
    \label{myline-correct}
  \end{axis}
\end{tikzpicture}
\end{document}

答案1

请参阅 pgfplots 手册第 4.7.1 节,其中说“每个轴绘图后样式都可用于覆盖为绘图分配的部分(或全部)绘图样式。”。另请参阅第 4.5.12 节,其中详细介绍了顺序。因此,最重要的是,如果您删除该post指令,

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{
  every axis plot/.append style={thick, black},
  every axis plot/.append style={
    every mark/.append style={mark size=3,solid,fill opacity=0}
  }
}

\begin{document}
Now both the marker \ref{myline} and \ref{myline-correct} are correct?

\begin{tikzpicture}
  \begin{axis}
    \addplot[mark=*]
    table [x=x, y=y]{%
      x y
      0 0
      1 1
      2 2
      3 3
      4 4
    };
    \label{myline}

    \addplot[mark=square, mark size=3,solid,fill opacity=0]
    table [x=x, y=y]{%
      x y
      4 0
      3 1
      2 2
      1 3
      0 4
    };
    \label{myline-correct}
  \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容