0

プロットに使用している 3 つの変数はすべて size の行列です1x1x100。このコード行を使用してプロットしています:

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 番目の軸を取得していないためCO2_molefraction_top_of_window、プロットの 3 番目の変数が得られません。どこが間違っているか分かりますか?

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

4

3 に答える 3

1

ただ注意してください --- コマンドを 1 回だけ実行する必要がありxlabel ylabel zlabelます (ループの外で)。

また:

  • 1x1x100あなたの行列が orの代わりにある理由はあります100x11x100? それらを2Dに再形成すると、1回のヒットでプロットを実行できるからです。
  • 「第 3 軸が欠けている」とはどういう意味ですか? あなたのコードを実行すると (または、再現可能な例が提供されていないため、可能な限り近くで実行すると)、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')

これにより、次のようになり、3 つの軸がはっきりとわかります。 ここに画像の説明を入力

グラフを「より 3D」に見せたいのがグリッド線である場合は、試してくださいgrid on (これは、Matlab ヘルプ ファイルの例にあり、Matlab プロンプトからplot3試してください)。help plot3

grid on

ここに画像の説明を入力

「第 3 軸の欠落」をもう少し明確にする必要があります。

于 2012-02-20T23:19:44.293 に答える