使用bar3而不是bar在Matlab

时间:2015-04-24 08:12:37

标签: matlab matlab-figure

我有3个矩阵ABC,其中每个矩阵的大小为21x2。我使用bar分别绘制每一个。我想知道如何使用bar3将这三者拼接在一起?

所以使用这段代码:

A=rand(21,2);
B=rand(21,2);
C=rand(21,2);
fig=figure();b1=bar(A);
fig2=figure();b2=bar(B);
fig3=figure();b3=bar(C);

将产生这三个数字:

A:

enter image description here

B:

enter image description here

C:

enter image description here

我想要做的是,我希望它们都是相同的数字,但在z方向上相互映射,就像this

1 个答案:

答案 0 :(得分:1)

我们的想法是创建新变量,其中包含插入NaN的每一行中所需的所有数据。只是这种改变几乎可以为您提供解决方案。

for ii=1:size(A,1)
   A1((ii-1)*3+1)=A(ii,1);
   A1((ii-1)*3+2)=A(ii,2);
   A1((ii-1)*3+3)=NaN;

   B1((ii-1)*3+1)=B(ii,1);
   B1((ii-1)*3+2)=B(ii,2);
   B1((ii-1)*3+3)=NaN;

   C1((ii-1)*3+1)=C(ii,1);
   C1((ii-1)*3+2)=C(ii,2);
   C1((ii-1)*3+3)=NaN;
end

h=bar3(horzcat(A1',B1',C1'))

但是,我猜你也想修改颜色。 要做到这一点,我们的想法是您可以使用get(h(nrow),'Cdata')获取每个条形行的颜色数据。

使用此技巧和您自己的色彩图,您应该能够独立地对条形图进行着色。这不是直截了当的,但如果它很容易就会有趣!