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}

PS: Я уверен, что это pgfplotsтоже способ, но я им не пользуюсь, так что подождите другого ответа, прежде чем принять, потому что я в основном пользуюсь tikzи нетpgfplots

введите описание изображения здесь

Связанный контент