我想将情节的风格记录到图例中,而无需实际绘制情节。
我知道当绘图样式没有标记时该如何做到这一点,如下面的第一个示例所示。
然而,当绘图中有标记时,如第二个例子所示,即使 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}