Matlab:3D堆积条形图

Matlab: 3D stacked bar chart

我正在尝试创建 3D 堆叠条形图,如以下问题所示:3D stacked bars in Matlab。然而,与那个问题不同的是,我想使用 3 个数据集而不是 2 个。我认为我有一个(可能很简单的)问题,其中条形图没有正确向上移动或类似的问题。

我拥有的三个数据集分别是test1、test2和test3,分别是:

5 10 7
1 100 0
1 3 2

10 15 10
10 80 10
5 5 15

10 10 10
20 200 20
30 10 30

绘制它们会产生这样的结果:

如您所见,中央栏的总和应为 380,但只有 280 高。其中一个数据集的条形图似乎呈现 "inside" 其他两个数据集,这也可以解释为什么条形图有 3 条中央分隔线而不是我们期望的 2 条。

我使用的代码是:

core=bar3(test1);
set(core,'FaceColor',[1 0 0]); %red

for i=1:length(core)
    zz=get(core(i),'Zdata');
        k=1;
        for j= 0:6:(6*length(core)-6)
            zz(j+1:j+6,:)=zz(j+1:j+6,:)+test2(k,i);
            k=k+1;
        end
    set(core(i),'Zdata',zz);
end

hold on

core=bar3(test2);

set(core,'FaceColor',[0 1 1]);%cyan
hold off

for i=1:length(core)
    zz=get(core(i),'Zdata');
    k=1;
    for j= 0:6:(6*length(core)-6)
        zz(j+1:j+6,:)=zz(j+1:j+6,:)+test3(k,i);
        k=k+1;
    end
    set(core(i),'Zdata',zz);
end


hold on
core=bar3(test3);
set(core,'FaceColor',[1 1 0]);%yellow
hold off

如何使条形图正确向上移动?或者,如何使用 Matlab 代码为数据制作 3D 堆叠条形图?非常感谢任何帮助,感谢您的宝贵时间。

在第一个循环中使用:

 zz(j+1:j+6,:)=zz(j+1:j+6,:)+test2(k,i)+test3(k,i);

而不是 zz(j+1:j+6,:)=zz(j+1:j+6,:)+test2(k,i);

或者您可以在第二个循环中使用相同的字符串。