我正在 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}