2012-02-20 85 views
0

私がプロットする3つの変数はすべて、サイズが1x1x100の行列です。私はプロットするために、このコード行を使用しています:Matlab:第3軸が表示されない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 

しかし、私は第3の軸を取得し、ひいてはプロット上の3番目の変数CO2_molefraction_top_of_windowておりません。どこが間違っているのか分かりますか?

上記の質問に加えて、同じ主題について、私はplot3を使用して描くことができる3次元プロットのように4次元プロットをプロットできるオプションがあるかどうかを知りたいですか?

+1

2D画面で4Dプロットがどのように見えるのですか? –

答えて

1

ちょうど注記---ループの外で一度だけxlabelylabelzlabelコマンドを実行する必要があります。また

  • は、あなたの行列が1x1x100だけではなく100x1または1x100ある何らかの理由があるのでしょうか? 2Dに再構成すると、1回のヒットでプロットを行うことができます。
  • 「第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') 

これは、次のことを与え、あなたははっきりと三つの軸見ることができている:それはあなたがグラフを作りたいグリッド線は「より多くの3D」を見るなら enter image description here

を、そしてgrid onを試してみてください(あります)plot3のためのMatlabのヘルプファイルの例では、MATLABプロンプトからhelp plot3を試してみてください。

grid on 

​​

"欠けている第3軸"をもう少し明確にする必要があります。

+0

ありがとう!行列の大きさが「1x1x100」でプロットしていたとき、私は第3軸を得ていませんでした。しかし、「圧搾」は素晴らしい機能であり、第3軸も同様に現れています。再度、感謝します。 – Pupil

+0

ああ、ループ内のラベルは私の間違いでした。彼らがループの中にいるのを見ていない。 – Pupil

1

plot3を使用すると同じ問題が発生しました。なんらかの理由で、hold onコマンドを使用すると、プロットが「平坦化」されます。私は理由は分かりませんが、それは操作と関係があると思われます。hold onプロットで実行します。 編集:明確にするために、3dプロットはまだありますが、パースペクティブは強制的に変更されています。 「3D回転」ツール(立方体の周りに矢印が付いたツール)を使用すると、グラフが3dであることがわかります。デフォルトのパースペクティブはまっすぐであるため、2つの軸だけが表示され、平面に見えます。

関連する問題