PGFplots 跳过表格中第一行包含 NaN 值的情况。为什么?

PGFplots 跳过表格中第一行包含 NaN 值的情况。为什么?

假设有一个这样的.dat文件:

 -4.8767000e+000 -2.9142000e-001             NaN             NaN             NaN             NaN
 -3.9017000e+000 -4.1404000e-001             NaN             NaN             NaN             NaN
 -3.7141000e+000             NaN             NaN -2.6865000e-001             NaN             NaN
 -2.8267000e+000 -8.5233000e-001             NaN             NaN             NaN             NaN
 -2.7641000e+000             NaN -3.0872000e-001             NaN             NaN             NaN
 -2.5488000e+000             NaN             NaN -4.1579000e-001             NaN             NaN
 -1.9125000e+000             NaN             NaN             NaN             NaN -1.3021000e-001
 -1.8869000e+000             NaN             NaN             NaN -2.4675000e-001             NaN
 -1.7165000e+000             NaN -5.1881000e-001             NaN             NaN             NaN
 -1.6755000e+000 -1.6062000e+000             NaN             NaN             NaN             NaN
 -1.4064000e+000             NaN             NaN -6.1630000e-001             NaN             NaN
 -8.3837000e-001             NaN             NaN             NaN -5.1510000e-001             NaN
 -7.9259000e-001             NaN             NaN             NaN             NaN -4.0836000e-001
 -6.4542000e-001 -2.2095000e+000             NaN             NaN             NaN             NaN
 -5.4987000e-001             NaN -7.4848000e-001             NaN             NaN             NaN
 -4.2297000e-001             NaN             NaN -1.2681000e+000             NaN             NaN
  2.0480000e-001             NaN -1.9436000e+000             NaN             NaN             NaN
  2.1333000e-001             NaN             NaN             NaN -9.8248000e-001             NaN
  3.3584000e-001             NaN             NaN             NaN             NaN -1.2254000e+000
  4.4876000e-001 -2.3614000e+000             NaN             NaN             NaN             NaN
  7.7282000e-001             NaN             NaN -1.8424000e+000             NaN             NaN
  1.3886000e+000             NaN             NaN             NaN -1.7607000e+000             NaN
  1.4709000e+000             NaN -2.4598000e+000             NaN             NaN             NaN
  1.5644000e+000 -2.3726000e+000             NaN             NaN             NaN             NaN
  1.8937000e+000             NaN             NaN -2.1788000e+000             NaN             NaN
  2.3417000e+000             NaN             NaN             NaN -1.9949000e+000             NaN
  2.4386000e+000             NaN             NaN             NaN             NaN -2.1213000e+000
  2.5903000e+000             NaN -2.7040000e+000             NaN             NaN             NaN
  2.9174000e+000             NaN             NaN -2.3792000e+000             NaN             NaN
  3.4874000e+000             NaN             NaN             NaN -2.4042000e+000             NaN
  3.5796000e+000             NaN             NaN             NaN             NaN -2.2296000e+000
  3.7549000e+000             NaN -2.8123000e+000             NaN             NaN             NaN
  3.9405000e+000             NaN             NaN -2.5407000e+000             NaN             NaN
  4.6521000e+000             NaN             NaN             NaN -2.5125000e+000             NaN

如果我使用以下最少的代码绘制这些数据:

\documentclass{report}

\usepackage[showframe,
            margin=2.5cm,
            left=3cm]{geometry}

\usepackage{pgfplots}
\pgfplotsset{compat=1.4}

\begin{document}
\centering
\begin{tikzpicture}
\begin{axis}

\foreach \n in {1,2,...,5}{
\addplot table[x index = 0,
               y index = \n]{DATA.dat};
}
\end{axis}
\end{tikzpicture}
\end{document}

PGFplots 跳过第一行。这意味着第一行中的 y 点未绘制!

是不是因为 PGFplots 将其视为带有列名的行?

这个问题能解决吗?

答案1

如果第一行中有非数字条目,PGFplots 会假定这是包含列标题的标题行。您可以使用 强制 PGFplots 将第一行解释为数据行header=false

\documentclass{article}
\usepackage[]{pgfplots}
\usepackage{filecontents}

\begin{filecontents}{testdata.dat}
0   NaN 1   1
1   1   2   NaN
2   1.2 NaN 2
3   2   3   1
\end{filecontents}

\usepackage{pgfplots}
\pgfplotsset{compat=1.4}

\begin{document}
\centering
\begin{tikzpicture}
\begin{axis}

\foreach \n in {1,...,3}{
\addplot table[
    header=false,
    x index = 0,
    y index = \n]{testdata.dat};
}
\end{axis}
\end{tikzpicture}
\end{document}

相关内容