在Octave中,在表面绘图上方绘制3D线。

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

结果(蓝线在表面以下): 示例

1
OP在Octave中遇到了一个问题,该问题允许具有多个赋值的表达式http://www.network-theory.co.uk/docs/octave3/octave_79.html。我已经在下面的答案中发布了相应的MATLAB代码。 - Huguenot
2个回答

4
为了回答你问题的一部分,使用以下代码在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


好的,无论如何还是谢谢。我猜这是因为Octave使用了Gnuplot。 - Filip S.

0
我在Octave中也遇到了surf的问题,所以我使用了mesh函数。它不太美观,参数也不同,但确实允许线条覆盖它: plot3 line overlaying a mesh in Octave 我使用与上面相同的代码创建了这个,只是将surf替换为:
    mesh ((X+8)*2.2, (Y+8)*2.2, Z);

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接