pgfplots
在级别axis
或选项设置中是否存在一个选项legend style
,可以有效地忽略情节中后续的图例条目?
\documentclass{article} \usepackage{pgfplots}
\begin{document} \begin{tikzpicture}
\begin{axis}[legend style = {at={(1.03,-0.03)}},
%ignore legend %hypothetical option
]
\addlegendentry{graph 1} %ignored
\addplot+[mark=none,fill=yellow,draw=none,forget plot] {0.1*x^2};
\addlegendentry{graph 2} %ignored
\addplot[mark=none,draw=red,line legend] {0.1*x^2};
\addlegendentry{graph 3} %ignored
\addplot[mark=none,draw=blue,line legend] {0.0*x^2};
\end{axis}
\end{tikzpicture} \end{document}
我有一个大图(很多曲线),我想同时删除所有图例,而又不修改太多代码。
答案1
以下是可以解决您的问题的方法。
选项1
正如 percusse 所建议的,every axis legend/.code={\let\addlegendentry\relax}
它可用于抑制图例。以下代码显示了它们在本地和全局的用法。
代码:
\documentclass{article}
\usepackage{pgfplots}
%\pgfplotsset{every axis legend/.code={\let\addlegendentry\relax}} %%%if you don't want them globally, uncomment this line
\begin{document}
\begin{tikzpicture}
\begin{axis}[legend style = {at={(1.03,-0.03)}},
every axis legend/.code={\let\addlegendentry\relax} %ignore legend locally
]
\addlegendentry{graph 1} %ignored
\addplot+[mark=none,fill=yellow,draw=none,forget plot] {0.1*x^2};
\addlegendentry{graph 2} %ignored
\addplot[mark=none,draw=red,line legend] {0.1*x^2};
\addlegendentry{graph 3} %ignored
\addplot[mark=none,draw=blue,line legend] {0.0*x^2};
\end{axis}
\end{tikzpicture}
\end{document}
选项 2
正如 Qrrbrbirlbel 所建议的,您可以通过以下方式定义新样式
\pgfplotsset{ignore legend/.style={every axis legend/.code={\let\addlegendentry\relax}}}
在序言中,现在您可以ignore legend
根据需要使用您的假设。
代码:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{ignore legend/.style={every axis legend/.code={\let\addlegendentry\relax}}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[legend style = {at={(1.03,-0.03)}},
ignore legend %hypothetical option! NOT ANYMORE
]
\addlegendentry{graph 1} %ignored
\addplot+[mark=none,fill=yellow,draw=none,forget plot] {0.1*x^2};
\addlegendentry{graph 2} %ignored
\addplot[mark=none,draw=red,line legend] {0.1*x^2};
\addlegendentry{graph 3} %ignored
\addplot[mark=none,draw=blue,line legend] {0.0*x^2};
\end{axis}
\end{tikzpicture}
\end{document}
作为 克里斯蒂安·费尔桑格在他的评论中写道,
将此宏覆盖为无操作是安全的。但是,您的解决方案实际上并没有将其覆盖为无操作,因为它会导致 \relax{graph 1} - 并且 {graph 1} 仍由 TeX 处理。在您的例子中,字符被默默忽略……但如果您在参数中写入复杂的东西,它可能会失败。
他的建议是使用
\pgfplotsset{ignore legend/.style={every axis legend/.code={\renewcommand\addlegendentry[2][]{}}}}
代替
\pgfplotsset{ignore legend/.style={every axis legend/.code={\let\addlegendentry\relax}}}
自从\renewcommand
负责 的强制参数和可选参数\addlegendentry
。
选项 3
如果您刚刚编写代码,则只需省略命令\addlegendentry{graph 3}
等。
答案2
\legend{}
那么之前输入什么呢\end{axis}
?