Pgfplots 轴,删除(或忽略)图例的选项

Pgfplots 轴,删除(或忽略)图例的选项

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}

相关内容