Matlab:三维叠层条形图
我正在尝试创建一个三维堆叠条形图,如以下问题所示:。然而,与这个问题不同,我想使用3个数据集而不是2个。我想我有一个(可能很简单)问题,酒吧没有正确地向上移动或类似的事情 我拥有的三个数据集分别称为test1、test2和test3,分别是:Matlab:三维叠层条形图,matlab,graph,3d,stacked,Matlab,Graph,3d,Stacked,我正在尝试创建一个三维堆叠条形图,如以下问题所示:。然而,与这个问题不同,我想使用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高。其中一个数据
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高。其中一个数据集的条形图似乎呈现在其他两个数据集中的“内部”,这也解释了为什么条形图有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)代码>
也可以在第二个循环中使用相同的字符串