pgfplotstable에서 빈 셀을 NaN으로 교체

pgfplotstable에서 빈 셀을 NaN으로 교체

csv 파일의 내용을 플롯해야 합니다. 파일의 테이블에는 NaN으로 대체되어야 하는 여러 개의 빈 셀이 포함되어 있으므로 옵션을 사용하여 데이터를 플롯하면 unbounded coords=jump누락된 값 위치에서 플롯이 중단됩니다.

열쇠 를 사용해볼까 생각했는데 empty cells with생각대로 작동하지 않네요. 다음 예에서 첫 번째 테이블에는 NaN으로 자동 대체되어 작동하지 않는 빈 셀이 포함되어 있습니다. 두 번째 테이블에는 이미 NaNs 셀이 포함되어 있으며 대신 제대로 작동합니다.

\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) a에서 빈 값 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}

관련 정보