pgfplots - 当通过 keyval 作为定义变量传递时,图例条目不会被识别为数组

pgfplots - 当通过 keyval 作为定义变量传递时,图例条目不会被识别为数组

我正在 pgfplots 中绘制图形,并希望将图例条目作为已定义的变量传递。在下面的代码中,第一个示例执行了此操作,但不起作用(所有条目都显示在一行中)。如果我直接传递图例条目,代码就会起作用 - 我怎样才能使第一个示例起作用?

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\def\legendentries{line1,line2}
\begin{tikzpicture}
  \begin{axis}[legend entries=\legendentries]
    \addplot coordinates {(1,2) (2,4) (3,6)};
    \addplot coordinates {(1,3) (2,6) (3,9)};
  \end{axis}
\end{tikzpicture}

\begin{tikzpicture}
  \begin{axis}[legend entries={line1,line2}]
    \addplot coordinates {(1,2) (2,4) (3,6)};
    \addplot coordinates {(1,3) (2,6) (3,9)};
  \end{axis}
\end{tikzpicture}

\end{document}

代码输出

答案1

宏列表通常需要明确扩展。

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\def\legendentries{line1,line2}
\begin{tikzpicture}
  \begin{axis}[legend entries/.expand once=\legendentries]
    \addplot coordinates {(1,2) (2,4) (3,6)};
    \addplot coordinates {(1,3) (2,6) (3,9)};
  \end{axis}
\end{tikzpicture}

\begin{tikzpicture}
  \begin{axis}[legend entries={line1,line2}]
    \addplot coordinates {(1,2) (2,4) (3,6)};
    \addplot coordinates {(1,3) (2,6) (3,9)};
  \end{axis}
\end{tikzpicture}

\end{document}

相关内容