我怎样才能让装饰品也出现在图例中?

我怎样才能让装饰品也出现在图例中?

我正在尝试使用装饰来为一些线条添加标记。使用装饰而不是简单的标记的原因是,我绘制的数据点非常密集:事先过滤它们不是一个可行的选择,使用标记会导致难以理解的重叠。执行类似以下 MWE 的操作可以获得良好的结果

\documentclass[11pt]{article}

\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{decorations}
\usetikzlibrary{decorations.markings}

\begin{document}

\begin{tikzpicture}
\begin{axis}[%
xmin=0, xmax=5,
ymin=0, ymax=2,
postaction={decoration={markings,
    mark=between positions 0 and 5 step 0.05
    with { \fill circle[radius=2pt]; }},
    decorate}
]
\addplot[samples=500]{1};
\addlegendentry{Plot 1};
\end{axis}
\end{tikzpicture}

\end{document}

然而,上面的 MWE 产生了一个图例,其中装饰才不是出现。我怎样才能让装饰也出现在图例中?

答案1

您可以将标记添加到every axis legend style使用

legend style={mark=*,mark size=2pt}

作为环境的关键axis

在此处输入图片描述

代码:

\documentclass[11pt]{article}
\usepackage{pgfplots}% loads tikz
\pgfplotsset{compat=1.14}% <- added, see the documentation 
\usetikzlibrary{decorations}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
xmin=0, xmax=5,
ymin=0, ymax=2,
postaction={decoration={markings,
    mark=between positions 0 and 5 step 0.05
    with { \fill circle[radius=2pt]; }},
    decorate},
    legend style={mark=*,mark size=2pt}% <- added
]
\addplot[samples=500]{1};
\addlegendentry{Plot 1};
\end{axis}
\end{tikzpicture}
\end{document}

但我建议改用标记decoration。您可以使用减少标记数量mark repeat=25。然后只标记每 25 个点。

在此处输入图片描述

然后,图上的第一个标记不会被剪裁在轴边界上。

\documentclass[11pt]{article}
\usepackage{pgfplots}% loads tikz
\pgfplotsset{compat=1.14}% <- added, see the documentation 
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
xmin=0, xmax=5,
ymin=0, ymax=2
]
\addplot[samples=500,mark=*,mark repeat=25]{1};% <- changed
\addlegendentry{Plot 1};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容