Принудительное повторное чтение файла данных

Принудительное повторное чтение файла данных

У меня есть файл данных, из которого я хочу построить нечетные/четные строки отдельно, на той же оси. Но параметры, tableпохоже, применяются только один раз, при чтении данных, что происходит только один раз на каждой оси (т. е. после того, как \nextgroupplotданные, похоже, считываются снова, или в новом 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}

Есть ли возможность принудительно перечитывать данные для каждой tableкоманды?

результат

решение1

Я не думаю, что вы можете использовать skip first nключ для фильтрации координат в гибкой манере, поскольку это pgfplotstableключ для чтения таблицы или ее набора. Вместо этого вы можете использовать фильтры для исключения нечетных/четных строк

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

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

Конечно, с помощью этого кода вы можете создавать свои собственные фильтры (используя Mod(,)и т. д.), так что это в любом случае выполнимо.

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