使用 bar3 而不是 bar 在 Matlab 中绘制多个数据

Use bar3 instead of bar to plot multiple data in Matlab

我有 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);

会生成这三个数字:

答:

乙:

C:

我想要做的是,我希望它们都是相同的图形,但在 z 方向上彼此绘​​制在一起,就像 this

我们的想法是创建新变量,在每行中插入 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') 获取每个条形行的颜色数据。

通过这个技巧和您自己的颜色图,您应该能够独立地为条形图着色。虽不简单,但简单又何来乐趣!