pgfplots, línea delante de las marcas

pgfplots, línea delante de las marcas

No pude encontrar información sobre esto: ¿Cómo puedo hacer que se muestre la línea?encima/delante de¿el marcador? Ahora mismo está tramadodetrásel marcador de diamante en el diagrama así como en la leyenda.

\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}

Caso real con línea debajo de las marcas.

Este sería el caso deseado:

Caso deseado con línea encima de las marcas

Respuesta1

Hay una parte sencilla: puedes obtener la trama como desees usando mark layer. Simplemente dibuja las marcas en una capa que está detrás de la trama principal. Y luego está la parte que requiere un poquito más de esfuerzo: hacer que la leyenda cumpla. Para ello modifiqué ligeramente ellegend image code . (No lo sé precisamentesaberpor qué uno tiene que hacer esto, pero dado que la leyenda normalmente debe estar delante de las tramas, tiene sentido que el contenido de la leyenda vaya en una capa diferente y, por lo tanto, la capa de la marca se reajuste).

\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}

ingrese la descripción de la imagen aquí

Respuesta2

¡Bienvenido a TeX.SE!

Si traza los puntos (pero con tikz \nodey no con pgfplot mark) antes de agregar el gráfico, es fácil:

\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}

PD: Estoy seguro de que eso pgfplotstambién tiene una forma, pero realmente no la uso, así que espere otra respuesta antes de aceptar porque la uso mayoritariamente tikzy no.pgfplots

ingrese la descripción de la imagen aquí

información relacionada