使用 pgfplots 绘制轮廓图,其中一些数据条目为 NaN

使用 pgfplots 绘制轮廓图,其中一些数据条目为 NaN

我想绘制一个保存在文本文件中的数据的轮廓图,该文本文件由三列组成,其中列分别为 x_i、y_i 和 z_i,并且一些元素 z_i 是 NaN。

我使用 MikTex 2.9 和 WinEdt 8.0。我已安装 gnuplot 并可以从命令行调用 gnuplot。我已正确启用 shell espace;我使用 PDFTeXify 编译文档。参见下图。

从命令行调用 gnuplot 执行模式 PDFTexiFY

pgfplots 手册的第 4.6.8 节涉及轮廓图,但未讨论使用 (x_i,y_i,z_i) 形式的数据。我尝试使用与第 3.5.1 节中描述的相同的方法来制作数据曲面图。

以下是我的 MWE。我的 data.txt 文件可以找到这里

\documentclass{article}

\usepackage{tikz,pgfplots}
\pgfplotsset{compat = 1.8}

\begin{document}

\begin{tikzpicture}
\begin{axis}[view={0}{90}]
 \addplot3[contour gnuplot = {labels = false}, 
           mesh/ordering = y varies, 
           mesh/rows = 6, 
           mesh/cols = 16] 
           file {data.txt};
\end{axis}
\end{tikzpicture}

\end{document} 

但是这不起作用。如果我将数据文件中的 NaN 值更改为 0,它就会起作用并生成轮廓图。通常我会使用选项 unbounded coords = jump,但这在这里不起作用。

如何确保 gnuplot 能够处理 NaN 值,以便如果我使用零而不是 NaN(第一个图),当前输出看起来更像 Matlab 输出(第二个图,使用 NaN 条目)。本质上,这意味着我在 Paint 中绘制的绿线左侧的所有线(再次是第一个图)都应被丢弃,并且该区域应成为禁区。

由 gnuplot 生成的轮廓 Matlab生成轮廓

答案1

尝试 gnuplot 5.0 rc 1

5.0 中的变化包括:

* CHANGE Revised handling of NaN in input data stream

使用 gnuplot 5.0 rc1 绘制等高线图时,使用 NaN 值没有出现错误

相关内容