2012-08-23 265 views
0

您好我有三维矩阵daily_renewables_excess,我试图为轴上的xy和z维绘制三维条形图。 大小(daily_renewables_excess)是11,7,10。所以我试图得到一个三维条形图,其中x为11 x间隔,y为7,z为10。将三维矩阵绘制为三维条形图时出错

然而,当我尝试

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

我得到一个错误说 “使用BAR3错误(39行) 输入必须是2-d”。

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

谢谢

回答

1

由于你有一个3D矩阵(体积),则可以不同时显示3个时间间隔(3轴)+对所述杆件的刻度值(第四变量)。这相当于绘制4D图(例如,使用颜色对第4维进行颜色编码,使用条形尺寸对其进行大小编码,或者甚至是垂直堆叠)。

例如,下列音量D是大小[11x10x7]的,你可以得到7个bar3地块通过索引在第三(z)的尺寸

% 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