データファイルの再読み込みを強制する

データファイルの再読み込みを強制する

同じ軸に奇数行と偶数行を別々にプロットしたいデータ ファイルがあります。ただし、tableオプションはデータの読み込み時に 1 回だけ適用されるようで、読み込みは軸ごとに 1 回だけ行われます (つまり、 の後、\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(,)などを使用して)作成できるため、とにかく実行可能です。

関連情報