如何使用带有“draw = none”和标记的 \addplot?

如何使用带有“draw = none”和标记的 \addplot?

我想将情节的风格记录到图例中,而无需实际绘制情节。

我知道当绘图样式没有标记时该如何做到这一点,如下面的第一个示例所示。

然而,当绘图中有标记时,如第二个例子所示,即使 draw=none,标记仍然会被画出来。

有没有办法可以隐藏标记,同时仍确保样式能够传播到图例?如果没有,有什么建议的解决方法吗?

梅威瑟:

\documentclass[article]{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat = newest}  % loads newest improved settings

\begin{document}

\begin{tikzpicture}

\begin{axis}

% Use draw=none so that the plot is not drawn, but style is recorded to
% legend entry
\addplot [red, domain=0:3.5, draw=none] {25*x^0.2};
\addlegendentry{first plot}

% Would like to do the same thing with a mark
% But the mark still gets drawn!
\addplot [blue, mark=*, domain=0:3.5, draw=none] {15 - .5*x};
\addlegendentry{second plot}

\end{axis}
\end{tikzpicture}
\end{document}

得出的结果为:

在此处输入图片描述

我想要的是一个只有图例的空白情节。

答案1

您可以使用addlegendimage(与 结合\addlegendentry) 来实现您想要的效果。只需像对 一样分别向命令参数提供选项或键-值即可\addplot。请注意,至少有一个\addplot命令存在,图例才会显示出来。

% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}

        \addlegendimage{no markers,red}
        \addlegendentry{first plot}
        \addlegendimage{blue,mark=*,only marks}
        \addlegendentry{second plot}

        \addplot [draw=none] {x};

    \end{axis}
\end{tikzpicture}
\end{document}

该图显示了上述代码的结果

答案2

如果您愿意作弊,您可以设置xmin=0并绘制samples at={-1}。我强调这是一种作弊行为,当然,如果您想将该空图用于交叉点或fillbetween类似情况,则不会起作用。

\documentclass[article]{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat = newest}  % loads newest improved settings

\begin{document}

\begin{tikzpicture}

\begin{axis}[xmin=0,xmax=3.5]

% Use draw=none so that the plot is not drawn, but style is recorded to
% legend entry
\addplot [red, domain=0:3.5, draw=none] {25*x^0.2};
\addlegendentry{first plot}

% Would like to do the same thing with a mark
% But the mark still gets drawn!
%\begin{scope}[opacity=0]
\addplot [blue, mark=*,  draw=none,samples at={-1}] {15 - .5*x};
%\end{scope}
%\tikzset{opacity=1}
\addlegendentry{second plot}

\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容