将3D矩阵绘制为3D条形图时出错

时间:2012-08-23 18:51:50

标签: matlab multidimensional-array 3d matrix

嗨我有3D矩阵daily_renewables_excess,我试图在轴上绘制x y和z尺寸的3D条形图。 大小(daily_renewables_excess)是11,7,10。因此,我试图获得一个3D条形图,其中包含11 x x,y y和10 x z的间隔。

然而,当我尝试

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

我收到错误消息“使用bar3时出错(第39行) 输入必须是2-D。“

根据我对文档的理解,bar3函数将绘制如上所示的3D条形图。 我需要以某种方式重新排列矩阵吗?

谢谢

1 个答案:

答案 0 :(得分: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));

enter image description here

您可以做的是重新整理x-y-维度,排序(为了保持有序间隔的概念(分别在x-y-中)并用bar3绘制得到的矩阵。

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

enter image description here

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

enter image description here