从 .csv 文件创建 3D 图形(surf)

从 .csv 文件创建 3D 图形(surf)

我有一个包含 3 列的 .csv 文件:时间、f 和 psd。我想使用这些数据创建一个 3D 冲浪图。就像下面在 Matlab 中生成的图像一样在此处输入图片描述

以下是我尝试使用的数据的链接:数据表.csv

我使用的代码如下:

\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
\pgfplotsset{compat=1.9}

\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot3 [surf] table[x=time, y=f, z=psd, col sep=comma] {datastft.csv};

\end{axis}
\end{tikzpicture}
\end{document}

使用此代码我得到了带有线条的图像:

在此处输入图片描述

任何帮助将不胜感激。

答案1

pgfplots不知道数据是如何组织的。有十三条扫描线。要么用文件中的空行分隔块.csv,要么计算它们并指定它们:mesh=rows=13

该软件包pgfplots提供了许多不同的着色器和补丁类型(参见库)patchplots

一些例子:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
\begin{axis}[x dir=reverse]
\addplot3 [surf, mesh/rows=13, shader=interp]
  table[x=f, y=time, z=psd, col sep=comma] {datastft.csv};

\end{axis}
\end{tikzpicture}
\end{document}

结果插值

shader=faceted interp

结果分面插值

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{patchplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[x dir=reverse]
\addplot3 [surf, mesh/rows=13, shader=interp, patch type=bilinear]
  table[x=f, y=time, z=psd, col sep=comma] {datastft.csv};

\end{axis}
\end{tikzpicture}
\end{document}

结果插值/补丁类型=双线性

相关内容