2012-02-20 85 views
0

我用來繪製的所有三個變量都是大小爲1x1x100的矩陣。我用這行代碼繪製:Matlab:Plot3沒有顯示第三軸

hold on; 
for i=1:100 
    plot3(R_L(:,:,i),N_Pc(:,:,i),CO2_molefraction_top_of_window(:,:,i),'o'); 
    xlabel('R_L'); 
    ylabel('N_P_c'); 
    zlabel('CO_2') 
end 

但是,我沒有得到第三軸,因此對劇情的第三個變量CO2_molefraction_top_of_window。我可以知道我錯在哪裏嗎?

除了上面的問題,但在同一主題上,我想知道是否有任何選項可以繪製4維圖,就像可以使用plot3繪製的3維圖一樣?

+1

在2D屏幕上查看時,4D圖的外觀如何...? – 2012-02-20 23:09:29

回答

1

只是一個說明---你只需要做一次(循環外)xlabelylabelzlabel命令。

另外:

  • 沒有任何理由你的矩陣是1x1x100,而不是僅僅100x11x100? 因爲如果你將它們重塑爲2D,你可以在一次打擊中進行繪圖。
  • 「失去第三軸」是什麼意思?當我運行的代碼(或儘可能靠近我可以得到的,因爲你沒有提供一個可重複的例子),我獲得第3軸:

X = rand(1,1,100); % 1x1x100 X matrix 
Y = rand(1,1,100); % 1x1x100 Y matrix 
Z = rand(1,1,100); % 1x1x100 Z matrix 
% Now, we could do a for loop and plot X(:,:,i), Y(:,:,i), Z(:,:,i), 
% OR we can just convert the matrix to a vector (since it's 1x1x100 anyway) 
% and do the plotting in one go using 'squeeze' (see 'help squeeze'). 
% squeeze(X) converts it from 1x1x100 (3D matrix) to 100x1 (vector): 
plot3(squeeze(X),squeeze(Y),squeeze(Z),'o') 
xlabel('x') 
ylabel('y') 
zlabel('z') 

這給了以下內容,你可以清楚地看到三個軸: enter image description here

如果它是你想圖中的網格線看起來「更3D」,然後嘗試grid on(這是在爲plot3 Matlab的幫助文件的例子,嘗試help plot3從MATLAB提示符):

grid on 

​​

你將不得不澄清「缺少第三軸」多一點。

+0

謝謝!不知何故,當我繪製矩陣大小爲1x1x100時,我沒有得到第三個軸。但是,擠壓是一個很好的功能,第三軸也出現了。再次感謝。 – Pupil 2012-02-20 23:37:04

+0

哦,那些圈內的標籤是我的錯。沒有看到他們在圈內。 – Pupil 2012-02-20 23:40:36

1

所以我在使用plot3時遇到同樣的問題。出於某種原因,使用hold on命令會「平滑」該圖。我不知道爲什麼,但我懷疑它與操作hold on在情節上執行有關。 編輯:爲了澄清,三維圖仍然存在,但視角已被迫改變。如果您使用「旋轉3D」工具(圍繞立方體帶箭頭的工具),則可以看到圖形爲3D,默認透視圖僅爲直線,因此只有兩個軸可見並且看起來平坦。