使用 bar3 而不是 bar 在 Matlab 中绘制多个数据
Use bar3 instead of bar to plot multiple data in Matlab
我有 3 个矩阵 A
、B
和 C
,其中每个矩阵的大小为 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')
获取每个条形行的颜色数据。
通过这个技巧和您自己的颜色图,您应该能够独立地为条形图着色。虽不简单,但简单又何来乐趣!
我有 3 个矩阵 A
、B
和 C
,其中每个矩阵的大小为 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')
获取每个条形行的颜色数据。
通过这个技巧和您自己的颜色图,您应该能够独立地为条形图着色。虽不简单,但简单又何来乐趣!