pgfplotstable で空のセルを NaN に置き換える

pgfplotstable で空のセルを NaN に置き換える

csv ファイルの内容をプロットする必要があります。ファイル内のテーブルには、NaN に置き換える必要がある空のセルがいくつか含まれているため、オプションを使用してデータをプロットすると、unbounded coords=jump欠損値の位置でプロットが中断されます。

キーを使用することを考えましたempty cells withが、期待どおりに動作しません。次の例では、最初のテーブルには空のセルが含まれており、自動的に NaN に置き換えられるため動作しません。2 番目のテーブルにはすでに NaN セルが含まれているため、代わりに正常に動作します。

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.14}
\usepgfplotslibrary{groupplots}
\usepackage{filecontents}

% the next table won't work properly
\begin{filecontents}{testtablea.csv}
a;b
0;0
1;1
2;2
3;2
4;2
5;2
6;
7;
8;2
9;1
10;0
\end{filecontents}

% this will work instead
\begin{filecontents}{testtableb.csv}
a;b
0;0
1;1
2;2
3;2
4;2
5;2
6;NaN
7;NaN
8;2
9;1
10;0
\end{filecontents}

\pgfplotstableset{empty cells with={NaN}}
\pgfplotstableread[col sep=semicolon]{testtable1.csv}\testtablea
\pgfplotstableread[col sep=semicolon]{testtable2.csv}\testtableb
\begin{document}
\centering
\pgfplotstabletypeset{\testtablea}\hspace{3cm}
\pgfplotstabletypeset{\testtableb}

\begin{tikzpicture}
\begin{axis} [title=automatic replacement, anchor=north east, width=7cm]
\addplot+ [unbounded coords=jump] table {\testtablea};
\end{axis}
\hspace{1cm}

\begin{axis} [title=well defined table, anchor=north west, width=7cm]
\addplot+ [unbounded coords=jump] table {\testtableb};
\end{axis}
\end{tikzpicture}
\end{document}

間違った行動と正しい行動

そこで質問です:

pgfplotstable1)目標を達成するために、元の csv ファイル内の空のセルを で置き換えるにはどうすればよいですか?

または

2) 内の空の値を直接スキップするにはどうすればよいですかpgfplot(つまり、 なしpgfplotstable)?

答え1

パッケージでifthen追加できる

y filter/.code={\ifthenelse{\equal{#1}{}}{\def\pgfmathresult{nan}}{}}

プロット オプションまたは軸オプションとして。

ここに画像の説明を入力してください

コード:

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.14}
\usepackage{ifthen}% <- added
% the next table won't work properly
\begin{filecontents}{testtablea.csv}
a;b
0;0
1;1
2;2
3;2
4;2
5;2
6;
7;
8;2
9;1
10;0
\end{filecontents}

% this will work instead
\begin{filecontents}{testtableb.csv}
a;b
0;0
1;1
2;2
3;2
4;2
5;2
6;NaN
7;NaN
8;2
9;1
10;0
\end{filecontents}

\pgfplotstableset{empty cells with={NaN}}
\pgfplotstableread[col sep=semicolon]{testtablea.csv}\testtablea
\pgfplotstableread[col sep=semicolon]{testtableb.csv}\testtableb
\begin{document}
\centering
\pgfplotstabletypeset{\testtablea}\hspace{3cm}
\pgfplotstabletypeset{\testtableb}

\begin{tikzpicture}
\begin{axis} [title=automatic replacement, anchor=north east, width=7cm]
\addplot+[
  y filter/.code={\ifthenelse{\equal{#1}{}}{\def\pgfmathresult{nan}}{}},% <- added
  unbounded coords=jump
]  table {\testtablea};
\end{axis}
\hspace{1cm}
\begin{axis} [title=well defined table, anchor=north west, width=7cm]
\addplot+ [unbounded coords=jump] table {\testtableb};
\end{axis}
\end{tikzpicture}
\end{document}

関連情報