强制重新读取数据文件

强制重新读取数据文件

我有一个数据文件,我想在同一轴上分别绘制奇数行/偶数行。但是选项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 nkey 灵活地过滤坐标,因为它是pgfplotstable读取表格或排版表格的 key。相反,您可以使用过滤器来消除奇数/偶数行

\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(,)等),因此无论如何都是可行的。

相关内容