Forçar a releitura de um arquivo de dados

Forçar a releitura de um arquivo de dados

Eu tenho um arquivo de dados do qual desejo plotar linhas pares/ímpares separadamente, no mesmo eixo. Mas as tableopções parecem se aplicar apenas uma vez, ao ler os dados, o que só acontece uma vez por eixo (ou seja, depois que \nextgroupplotos dados parecem ser lidos novamente, ou em um novo tikzpicture).

\documentclass{article}
\usepackage{pgfplots}
\begin{filecontents}{data.dat}
1 1
2 4
3 3
4 8
\end{filecontents}
\begin{document}

\begin{tikzpicture}
    \begin{axis}
        \addplot[no markers] table[each nth point=2]{data.dat};
        \addplot[only marks] table[each nth point=2, skip first n=1]{data.dat};
    \end{axis}
\end{tikzpicture}

should be:

\begin{tikzpicture}
    \begin{axis}
        \addplot[no markers] table{
            1 1
            3 3
        };
        \addplot[only marks] table{
            2 4
            4 8
        };
    \end{axis}
\end{tikzpicture}
\end{document}

Existe uma opção para forçar a releitura dos dados para cada tablecomando?

resultado

Responder1

Não acho que você possa usar skip first nkey para filtrar as coordenadas de maneira flexível, pois é uma pgfplotstablechave para ler a tabela ou digitá-la. Em vez disso, você pode usar filtros para eliminar as linhas ímpares/pares

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{filecontents}{data.dat}
1 1
2 4
3 3
4 8
\end{filecontents}
\begin{document}


\begin{tikzpicture}
    \begin{axis}
        \addplot[no markers,each nth point=2] table {data.dat};

        \addplot[only marks,x filter/.code={
                    \ifodd\numexpr\coordindex+1\relax
                        \def\pgfmathresult{}
                    \fi}
                ] table {data.dat};
    \end{axis}
\end{tikzpicture}

\end{document}

insira a descrição da imagem aqui

É claro que com este código você pode criar seus próprios filtros (usando Mod(,)etc.), então isso é possível de qualquer maneira.

informação relacionada