Plotpgf salta coordenadas+ cada enésima

Plotpgf salta coordenadas+ cada enésima

¿Cuál es el comportamiento esperado al combinar las coordenadas de salto y cada enésimo comando en un diagrama de pgfplot? Usando el siguiente código, se esperaba que obtuviera un gráfico con puntos (250, 30) y (300, 40) y otro gráfico con puntos (250, 14) y (300, 18).

En cambio, la primera trama es correcta, mientras que la segunda produce solo el punto (300, 40), como si las dos opciones no pudieran jugar juntas.

\usepackage{filecontents}
\begin{filecontents}{results.data}
Move Size Factor
A 250 30
B 250 14
C 250 10
A 300 40
B 300 18
C 300 7
\end{filecontents}

\begin{figure}[!ht]
    \centering
    \pgfplotsset{tick label style={font=\small}}
    \begin{tikzpicture}
    \begin{axis}[   scale only axis,    yticklabel style={inner sep=0pt, align=right, xshift=-0.1cm}    ]
    \addplot+[color=blue,only marks,mark=*,mark options=solid, mark options={scale=0.4},each nth point={3}]table[x=Size,y=Factor]{results.data};
    \end{axis}
    \end{tikzpicture}
\end{figure}

\begin{figure}[!ht]
    \centering
    \pgfplotsset{tick label style={font=\small}}
    \begin{tikzpicture}
    \begin{axis}[   scale only axis,    yticklabel style={inner sep=0pt, align=right, xshift=-0.1cm},
    ,skip coords between index={0}{1}
    ]
    \addplot+[color=blue,only marks,mark=*,mark options=solid, mark options={scale=0.4},each nth point={3}]table[x=Size,y=Factor]{results.data};
    \end{axis}
    \end{tikzpicture}
\end{figure}

Respuesta1

Supongo que quisiste decir "esperabas conseguir" en lugar de "esperabas". each nth pointagrega un x filterque descarta todas menos cada enésima coordenada de entrada (como se puede escribir en el manual). Y ahora le añades otro x filtercon skip coords between index={0}{1}el queademásfiltra el primer punto. Por lo tanto, obtienes el mismo resultado que antes excepto que falta el primer punto dibujado.

Entonces creo que tienes que escribir el tuyo propio x filterpara hacer lo que quieras. Otra posibilidad sería utilizar las funciones mark repeaty mark phasepara lograr lo que desea. La desventaja de este enfoque es que los límites del eje determinado ( xmin, xmax, ymin, ymax) también tienen en cuenta los puntos "no mostrados". En caso de que eso te moleste, debes configurar los valores manualmente.

% used PGFPlots v1.14
    \begin{filecontents}{results.data}
        Move Size Factor
        A 250 30
        B 250 14
        C 250 10
        A 300 40
        B 300 18
        C 300 7
    \end{filecontents}
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        only marks,
    ]
        \addplot+ [
            each nth point={3},
        ] table [x=Size,y=Factor] {results.data};
        \addplot+ [
            mark=square,
            mark repeat={3},
        ] table [x=Size,y=Factor] {results.data};
    \end{axis}
\end{tikzpicture}

\begin{tikzpicture}
    \begin{axis}[
        only marks,
    ]
        \addplot+ [
            each nth point={3},
            skip coords between index={0}{1},
        ] table [x=Size,y=Factor] {results.data};
        \addplot+ [
            mark=square,
            mark repeat={3},
            mark phase=2,
        ] table [x=Size,y=Factor] {results.data};
    \end{axis}
\end{tikzpicture}
\end{document}

imagen que muestra el resultado del código anterior

información relacionada