我正在尝试使用装饰来为一些线条添加标记。使用装饰而不是简单的标记的原因是,我绘制的数据点非常密集:事先过滤它们不是一个可行的选择,使用标记会导致难以理解的重叠。执行类似以下 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}