0

嗨,我有一个 3D 矩阵daily_renewables_excess,我正在尝试为轴中的 xy 和 z 维度绘制一个 3D 条形图。大小(daily_renewables_excess)是 11,7,10。所以我试图得到一个 3D 条形图,其中有 11 个 x 间隔 x、7 个 y 和 10 个 z。

但是,当我尝试

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

我收到一条错误消息,提示“使用 bar3 时出错(第 39 行)输入必须是二维的。”

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

谢谢你

4

1 回答 1

1

由于您有一个 3D 矩阵(体积),因此您不能同时显示 3 个间隔(3 轴)+ 条形的比例值(第 4 个变量)。这相当于绘制 4D 图(例如,使用颜色对第 4 维进行颜色编码,使用条形大小对其进行尺寸编码,甚至垂直堆叠)。

例如,以下体积D是大小的[11x10x7],您可以bar3通过在第 3 (z) 维中进行索引来获得 7 个图

% 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 回答