答案1
其中有一部分很简单:您可以使用 获得所需的图mark layer
。只需在主图后面的图层上绘制标记即可。然后是需要稍微多花点功夫的部分:使图例符合要求。为此,我稍微修改了legend image code
。(我不精确修改。)知道为什么必须这样做,但考虑到图例通常应该位于图表前面,所以将图例中的内容放在不同的层上是有道理的,因此标记的层需要重新调整。)
\documentclass{standalone}
\usepackage{xcolor, pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[set layers,mark layer=axis background,
legend image code/.code={
\draw [mark repeat=2,mark phase=2,#1] plot coordinates {
(0cm,0cm) (0.3cm,0cm) (0.6cm,0cm)};
\draw [#1] (0cm,0cm) rectangle (0.5cm,0cm);
}]
\addplot[mark=square*, mark options={fill=gray}] coordinates {(1,2)(2,1)};
\legend{x};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
欢迎来到 TeX.SE!
如果在添加图之前绘制点(但使用 tikz\node
而不是 pgfplot ),则很容易:mark
\documentclass{standalone}
\usepackage{xcolor, pgfplots}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\node[diamond,fill,color=orange,inner sep=2pt] at (axis cs:1,2) {};
\node[diamond,fill,color=red,inner sep=2pt] at (axis cs:2,1) {};
\node[diamond,fill,color=green,inner sep=2pt] at (axis cs:1.8,1.2) {};
\addplot[thick] coordinates {(1,2)(2,1)};
\legend{x};
\end{axis}
\end{tikzpicture}
\end{document}
附言:我确信pgfplots
也有办法,但我并不真正使用它,所以在接受之前要等待另一个答案,因为我主要使用tikz
而没有pgfplots