嗨,我有一个3D矩阵daily_renewables_excess,我正在尝试绘制一个轴上x,y和z维度的3D条形图。大小(Daily_renewables_excess)是11,7,10。所以我试图得到一个三维条形图,它有11个x间隔x,7个y间隔和10个z间隔。
然而,当我尝试
figure;
bar3(daily_renewables_excess(:,:,:))我得到一个错误,说"Error using bar3 (第39行)输入必须是2-D“。
根据我对文档的理解,bar3函数将如上所述绘制3D条形图。我需要以某种方式重新排列矩阵吗?
谢谢
发布于 2012-08-24 03:55:54
由于您有一个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)

https://stackoverflow.com/questions/12098223
复制相似问题