【问题标题】:Use bar3 instead of bar to plot multiple data in Matlab在 Matlab 中使用 bar3 代替 bar 绘制多个数据
【发布时间】:2015-07-02 17:43:41
【问题描述】:

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

【问题讨论】:

  • 你试过什么?这看起来就像bar3(x,y) 一样简单,所以我假设您在其他地方有问题。也许是数据的价值?向我们展示 MCVE。
  • @AnderBiguri 感谢您的评论。 xy 是什么?我只有 3 个大小为 21x2 的矩阵,我通常会使用 bar 分别绘制它们。但现在我不知道如何分别绘制它们,但如果你明白我的意思,我仍然在同一张图中。

标签: matlab matlab-figure


【解决方案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') 获取每个条形行的颜色数据。

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

【讨论】:

  • 感谢您的回答。我已经用示例和屏幕截图更新了我的问题,以显示我想要做什么,所以如果你可以请看一下。
  • @shepherd 所以你有 6 个数据分隔在 3 个矩阵中?这令人困惑!无论如何,为了能够绘制所有 6 个然后执行 bar3(horzcat(A,B,C))
  • 但这不是我想要的。在我的屏幕截图中看到 A、B 和 C 中的每一个如何有 21x 2bars(粘在一起)?我想要同样的东西(不分开),但对于他们三个。你明白我的意思吗?
  • @shepherd 啊啊啊!这就是为什么需要 MCVE!这种解释以前完全没有。如果可能,让我编辑我的问题。
  • 请在更新答案时告诉我。提前谢谢你。
猜你喜欢
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多