【问题标题】:Generate a 3D surface plot by fitting over many 2D plots with varying z value通过拟合许多具有不同 z 值的 2D 图来生成 3D 曲面图
【发布时间】:2026-02-04 08:20:14
【问题描述】:

我想实现一个 3D 曲面图。我的输出如下。

对于一个特定的 z 值,我得到每个 x 值的 y(x 范围如 0:0.1:1.4)。

然后我改变 z,对于相同的 x 范围,我得到 y 值。

结果可以显示为离散 z 值的二维图,由 x 的范围及其对应的 y 组成。这是我原来的情节:

我想创建一个 3D 曲面图,就像用毯子包裹在上面的 2D 图上一样。

【问题讨论】:

  • 跟随您的想法/描述并不像您想象的那么容易。请添加您的代码和输入/输出示例(请参阅How to Ask)。这将使我们能够更轻松地为您提供帮助
  • 我想创建一个 3D 绘图。 I 你需要指定如何你想要那个情节。 3D 空间中的一组 x-y 曲线,每个 z?一个表面 y=f(x,z)?图像 y=f(x,z),其中 y 在 x,z 平面上显示为不同的颜色?每个 z 的 x 值是否始终相同?
  • @LuisMendo:是的,3D 空间中的一组 xy 曲线对应每个 z。一个表面。是的,每个 z 的 x 值始终相同
  • 您添加的图像澄清了一点。该图像中的 z 轴是什么?根据您的描述,它似乎是一个带有字母的标签,是吗?
  • @LuisMendo:是的。 z 轴带有标签。 X 轴对于图中所有单独的图都是相同的。你能告诉我如何获得表面图吗?谢谢

标签: matlab plot matlab-figure surface


【解决方案1】:

以下是这两种绘图的示例:

figure
hold on
grid on
view(30,40)
x = 0:.01:4;
z = .3:.3:3;
y = NaN(numel(x), numel(z));
for k = 1:numel(z)
    y(:,k) = abs((4-x).*sin(x/(1+z(k)))); % compute a vector as function output
        % for input vector x, for each z. Store as a column in matrix y
    plot3(x,repmat(z(k),size(x)),y(:,k)) % plot in 3D space
end

figure
surf(x,z,y.','edgecolor','none') % surface plot
view(30,40)
grid on

【讨论】:

  • 非常感谢您的回复。它真的很有帮助。高度赞赏。
  • 嘿,当我添加标签时,它们没有与轴对齐。你知道为什么会这样吗?
  • @KGV 你是如何添加标签的,确切地说?
  • 就像下面这样。与我们对 2d 绘图的方式类似。 surf(x,z,y.','FaceAlpha',1.0) xlabel('无维数(k_0a)') ylabel('无维水平力(HF_P)') zlabel('无维多孔参数( G_S)') 视图(30,40) 网格打开。我实际上期待标签沿着它们各自的轴。
最近更新 更多