0

こんにちはdaily_renewables_excess、軸の xy 次元と z 次元の 3D 棒グラフをプロットしようとしている 3D マトリックスがあります。サイズ (daily_renewables_excess) は 11,7,10 です。だから私は、x の 11 x 間隔、y の 7、z の 10 の 3D 棒グラフを取得しようとしています。

しかし、私が試してみると

figure;
bar3(daily_renewables_excess(:,:,:))

「bar3 の使用エラー (39 行目) 入力は 2 次元でなければなりません」というエラーが表示されます。

ドキュメントの私の理解から、 bar3 関数は上記のように 3D バーをプロットします。どういうわけか行列を再配置する必要がありますか?

ありがとうございました

4

1 に答える 1

1

3D マトリックス (ボリューム) があるため、3 つの間隔 (3 軸) + バーのスケール値 (4 番目の変数) を同時に表示することはできません。これは、4D ダイアグラムをプロットすることになります (たとえば、色を使用して 4 次元を色分けしたり、バー サイズを使用してサイズをコード化したり、垂直方向の積み上げを行ったりします)。

たとえば、次のボリュームDはサイズが[11x10x7]あり、3 次元 (z) でインデックスを付けることで 7 つbar3のプロット を取得できます。

% random 3D input
D = randi(10, [11, 10, 7]);
[m,n,l] = size(D);
% plot bar for first z-
figure; bar3(D(:,:,1));

ここに画像の説明を入力

代わりにできることは、x-または次元のいずれかy-で形状を変更し、並べ替え (順序付けられた間隔の概念を (x-またはy-それぞれで) 保持するために)、結果の行列を bar3 でプロットすることです。

% reshape to x
Dx = reshape(D, m*l, n);
Dx = sort(Dx, 1, 'descend'); 
figure; bar3(Dx)

ここに画像の説明を入力

% reshape to y
Dy = reshape(D, m, n*l);
Dy = sort(Dy, 2, 'descend'); 
figure; bar3(Dy)

ここに画像の説明を入力

于 2012-08-23T19:55:54.323 に答える