pgfplots,标记前面的线

pgfplots,标记前面的线

我找不到有关此的信息:如何显示在……上面/前面标记?现在它被绘制出来了在后面图表和图例中的菱形标记。

\documentclass{standalone}
\usepackage{xcolor, pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}
\addplot[mark=square*, mark options={fill=gray}] coordinates {(1,2)(2,1)};
\legend{x};
\end{axis}
\end{tikzpicture}

\end{document}

实际案例:标记下方有线

这将是理想的情况:

所需情况与标记上方的线

答案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

在此处输入图片描述

相关内容