pgfplots,標記前面的線

pgfplots,標記前面的線

我找不到這方面的資訊:How can I have the line shown上面/前面標記?現在已繪製在後面圖表和圖例中的菱形標記。

\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's ),那麼很容易: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}

PS:我確信pgfplots也有辦法,但我並沒有真正使用它,所以在接受之前等待另一個答案,因為我主要使用tikz並且沒有pgfplots

在此輸入影像描述

相關內容