【问题标题】:Plot 3D line on top of surface plot in Octave在 Octave 的曲面图顶部绘制 3D 线
【发布时间】:2013-05-30 11:54:51
【问题描述】:

我已经根据一些数据绘制了一个曲面。在同一个图中,我想要一条 3D 线(我有我想要绘制的线的 [x,y,z] 值)。当我尝试在同一图中使用 plot3(x,y,z) 执行此操作时,该线始终位于曲面下方。

有没有办法解决这个问题?不知道这个问题在matlab中是不是也出现了。

小例子:

figure;
hold all;

y = x = 0:35;
z = ones(1,36).*0.5;
plot3(x,y,z);

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(Z);

结果(蓝线在表面下方):

【问题讨论】:

标签: matlab gnuplot octave


【解决方案1】:

要回答您的部分问题,使用以下代码在 MATLAB 中不会遇到此问题:

figure;
hold all;

x = 0:35;
y = x;
z = ones(1,36).*0.5;
plot3(x,y,z);

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(Z);

【讨论】:

  • 好吧,无论如何,谢谢。我猜这是因为 Octave 使用 Gnuplot。
【解决方案2】:

我在 Octave 中也遇到了 surf 的问题,所以我改用了 mesh 函数。它不那么漂亮,并且具有不同的参数,但确实允许线条覆盖它:

我使用与上面相同的代码创建了它,但将 surf 替换为:

    mesh ((X+8)*2.2, (Y+8)*2.2, Z);

因为mesh 需要放大其参数。结果大致相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 2014-06-07
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多