2014-04-12 35 views
0

我通常使用surf函數來繪製matlab中的3D圖形,但現在數據是不同的,所以我使用的是plot3,我有下圖。你有什麼想法,即使通過使用不同的功能,我如何重構這個數字更容易理解。 更簡潔,我有X值,每個X值有Z的y的值和值在matlab中重建三維圖形與衝浪?

enter image description here

X = [ 1 ;2 ;4; 8; 16; 32; 64]; 
Z = [ 1; 1.8 ; 3.46 ; 6.74 ; 13.18 ; 24.34 ; 39.33] 
Y = [0 ; 56.92 ; 91 ; 109.95 ; 119 ; 123.57 ; 125.51] 
fig = plot3(log(X),Y,Z,'b.-'); 
XLABEL=[ 1 2 4 8 16 32 64]; 
set(gca,'XTickLabel',XLABEL); 
set(gca,'XTick',log(XLABEL)); 

YLABEL= [ 0 30 60 90 120 150 180]; 
set(gca,'YTickLabel',YLABEL); 
set(gca,'YTick',YLABEL); 

ZLABEL= [0 5 10 15 20 25 30 35 40 45 50 55]; 
set(gca,'ZTickLabel',ZLABEL); 
set(gca,'ZTick',(ZLABEL)); 
ylim([0 180]); 
zlim([0,55]); 

grid on 
+0

嗨,與您提供的信息顯示的情節可能是完全正確的。如果您有三個矢量大小爲n的X Y Z,這是3D中的一條線。 –

+0

但我在尋找是否有更好的方式來表示它..我通常使用衝浪與彩條來更多地理解範圍值Z – Yasmin

+0

@AnderBiguri:情節是無用的,你無法讀取任何值。 – Daniel

回答

4

這很難說,因爲我們沒有一個上下文。常用選項有:

  1. 在兩個單獨的圖中繪製x/y和x/z。精確可讀但難以獲得y和z之間的連接。 subplot
  2. Plotyy,與前面相同,但在一個情節。對應於相同x值的Y和Z值對齊。 plotyy
  3. 使用plot3如上所示,但將每個點連接到x/z平面。 (詳情如下)
  4. 在一個或多個平面上投影並在那裏繪製。 (再次繪製線,將x,y或z設置爲7 0或180,這是軸的位置)
  5. 如果兩個軸都很重要,請使用簡單的二維圖並使用顏色/ dotsize /註釋等...

代碼選項3:

在你的代碼的末尾,添加以下代碼:

X2=[X';X';nan(size(X'))]; 
X2=X2(:); 
Y2=[Y';Y';nan(size(Y'))]; 
Y2=Y2(:); 
Z2=[Z';zeros(size(Z'));nan(size(Z'))]; 
Z2=Z2(:); 

hold on 
plot3(log(X2),Y2,Z2,'--') 

要理解它,你必須知道matlab在繪圖時跳過nans。因此,上面的代碼爲每個點生成一個獨立的線段,將其連接到地平面。

enter image description here

+0

糾正我,如果我錯了。您的意思是連接所有與X值和Z中的一個相對應的點。我試過 fig = plot3(log(X),Y,Z,'b.-'); 現在,我有一條連接點。你是指那個還是別的? – Yasmin

+0

@ Carmen:不,我建議其他選擇。你在說什麼?如果不清楚,我會添加一個例子。 – Daniel

+0

我使用完整的代碼更新了問題,因此根據數據理解您的建議更爲容易。 – Yasmin