2013-05-30 277 views
1

我從一些數據繪製了曲面。在同一個圖中,我想要一個3D線(我想要繪製的線的[x,y,z]值)。當我嘗試在同一圖中使用plot3(x,y,z)時,線總是在曲面下方。在Octave表面圖上繪製3D線

有什麼辦法解決這個問題嗎?我不知道這個問題是否也出現在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

+1

OP在Octave中發現了這個問題,它允許具有多個賦值的表達式http://www.network-theory.co.uk/docs/octave3/octave_79.html我已經在答案中發佈了等價的MATLAB代碼低於 – Huguenot

回答

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

+0

好吧,無論如何。我想這是因爲Octave使用Gnuplot。 –

0

我在Octave中也有這個問題surf,所以我用mesh函數代替。這是不漂亮,並有不同的參數,但允許線覆蓋它: plot3 line overlaying a mesh in Octave

我創建的代碼相同的如上但更換surf

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

由於mesh需要它的參數被放大。結果大致相同。