pgfplots, linha na frente das marcas

pgfplots, linha na frente das marcas

Não consegui encontrar informações sobre isso: Como posso exibir a linhaacima/na frente deO marcador? Neste momento está traçadoatráso marcador de diamante no diagrama e também na legenda.

\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 com linha abaixo das marcas

Este seria o caso desejado:

Caso desejado com linha acima das marcas

Responder1

Há uma parte simples: você pode obter o gráfico conforme desejado usando mark layer. Basta desenhar as marcas em uma camada que fica atrás da trama principal. E depois há a parte que exige um pouco mais de esforço: fazer a lenda cumprir. Para este fim, modifiquei ligeiramente o arquivo legend image code. (não sei exatamentesaberpor que alguém tem que fazer isso, mas dado que a legenda geralmente deve estar na frente dos gráficos, faz sentido que o conteúdo da legenda vá para uma camada diferente e, assim, a camada da marca seja reajustada.)

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

insira a descrição da imagem aqui

Responder2

Bem-vindo ao TeX.SE!

Se você plotar os pontos (mas por tikz \nodee não por pgfplot mark) antes de adicionar o gráfico, é 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}

PS: Tenho certeza que pgfplotstem jeito também, mas eu realmente não uso, então espere outra resposta antes de aceitar porque eu uso principalmente tikze nãopgfplots

insira a descrição da imagem aqui

informação relacionada