嗨我有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条形图。 我需要以某种方式重新排列矩阵吗?
谢谢
答案 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));
您可以做的是重新整理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)