在Octave的曲面图上绘制3D线

时间:2013-05-30 11:54:51

标签: matlab gnuplot octave

我从一些数据中绘制了一个表面。在同一个图中我想要一条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);

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

example

2 个答案:

答案 0 :(得分:2)

要回答部分问题,请不要在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);

enter image description here

答案 1 :(得分:0)

我在Octave中也遇到surf这个问题,所以我使用了mesh函数。它不是很漂亮,并且具有不同的参数但允许线条覆盖它: plot3 line overlaying a mesh in Octave

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

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

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