我有一个包含 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}