将bar3分组为条状

时间:2011-03-17 02:10:31

标签: matlab 3d bar-chart

我想知道是否有可能将bar绘图的相同分组行为转换为bar3。 例如,如果您绘制

  bar(rand(3));

每个点你得到3个小节; bar为每个 x 分配不同的 y 值。现在我想对3D数据做同样的事情。那就是我有几片2D数据,我想将其视为一组条形图。然后,如果我的数据是

data = rand(3,3,2);

我希望将data(1,1,:)视为一组条形码,将data(1,2,:)视为另一组,依此类推。

有可能吗?我无法找到实现这一目标的方法。

修改:我正在添加更多细节,以便更好地解释它。

让我们说我们有两组或更多组数据{x_(i,j)^s}。我需要的是分组在同一网格位置(i,j),所有集合s。在this question中,他们将数据集并排分组,而不是按元素分组,如下所示:

x1(s1) x1(s2) x1(s3)   x2(s1) x2(s2) x2(s3)   x3(s1) x3(s2) x3(s3)
x4(s1) x4(s2) x4(s3)   x5(s1) x5(s2) x5(s3)   x6(s1) x6(s2) x6(s3)
x7(s1) x7(s2) x7(s3)   x8(s1) x8(s2) x8(s3)   x9(s1) x9(s2) x9(s3)

我想要bar命令行为,它倾向于在放置多个数据集时进行分组。我想知道是否有可能。

2 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解,但如果您正在寻找像bar(rand(3))那样提及的分组行为,那么您可以尝试

figure; bar3(rand(5),'grouped');
% or maybe
figure; bar3(rand(5),'stacked');

或者尝试重新排列数据中的数据,以便使用重新整形的bar3更好地工作:

data = rand(3,3,2);
% now each data(i, j, :) will be in single row 
changeddata = reshape(data , [size(data , 1)*size(data , 2) 2]);
figure; bar3(changeddata);
figure; bar3(changeddata ,'grouped');
figure; bar3(changeddata ,'stacked');

也许如果你能给出一个代码示例来说明它应该如何在一个组中查看,那么这将有助于更好地理解你的问题。

答案 1 :(得分:0)

如果你想在3D条形图中对条形图进行分组,但是你很高兴小组(假设每组有2或3条条),那么你可以简单地利用bar3中的Y参数: BAR3(Y,Z,WIDTH) 所以你用两个移动的Y向量指定两组柱的位置。

例如:  BAR3(0:3:9,兰特(4,4),0.3)  坚持,稍等  BAR3(1:3:10,兰特(4,4),0.3)

然后您可以按照适合自己的方式编辑标签。