我想将 3D 数据集投影到预定义 3D 轴环境底部的 2D 平面中。因此我使用以下代码。该代码没有实现预期结果并绘制了一个表面。遗憾的是,在 tikz 和 pfgplots 方面,我的经验并不如我想象的那么丰富。
\documentclass[12pt,a4paper]{article}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={135}{45},
width=0.65\textwidth,
height=0.65\textwidth,
xlabel={Length (mm)},
ylabel={Width (mm)},
zlabel={Phase (rad)},
xmin=0,
xmax=45,
ymin=0,
ymax=45,
zmin=-0.5,
zmax=0.7,
xmajorgrids,
ymajorgrids,
zmajorgrids
]
\addplot3 [surf,z buffer=sort,
mesh/rows=41,
mesh/ordering=colwise,
point meta=rawz,
z filter/.code={\def\pgfmathresult{2.5}}] file{Folder/Subfolder/SurfData.dat};
\end{axis}
\end{tikzpicture}
\begin{document}
第一步,应将图像投影到 3D 环境底部的最低 z 轴点,等于 zmin=-0.5。
与以下链接相关的我的问题已关闭。 冲浪图的平滑投影 - tikz/gnuplot
相比之下,我有一个 3D 数据集,而不是明确的数学表达式。
编辑:
我想我快到了,但是我的“平坦”表面图没有任何颜色:我使用以下命令在 MatLab 中生成了测试数据:
a=peaks(41);
[x,y]=meshgrid(1:41,1:41);
data = [ x(:) y(:) a(:) ];
save Test.dat data -ASCII
接下来是 Latex 脚本
\documentclass[12pt,a4paper]{article}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={135}{45},colormap/viridis,
width=0.65\textwidth,
height=0.65\textwidth,
xlabel={Length (mm)},
ylabel={Width (mm)},
zlabel={Phase (rad)},
xmin=0,
xmax=45,
ymin=0,
ymax=45,
zmin=-8,
zmax=8,
xmajorgrids,
ymajorgrids,
zmajorgrids
]
\addplot3 [surf,z buffer=sort,mesh/rows=41,mesh/ordering=colwise] table[z expr=-5]{Test.dat};
\end{axis}
\end{tikzpicture}
\end{document}