开发者

Grouping bar3 plots like bar

I'm wondering if it is possible to get the same grouping behavior of bar plots into bar3. For example, if you plot

  bar(rand(3));

you get 3 bars for each point; bar groups the different y values for each x. Now I would like to do the same with a 3D data. That is that I have several slices of 2D data that I want to visualize as groups of bars. Then, if my data is

data = rand(3,3,2);

I would like to see data(1,1,:) as a group of bars, and data(1,2,:) as another group and so on.

Is it possible? I cannot find a way of achieving this.

Edit: I'm adding more details, to explain it better.

Lets said that we have two, or more, sets of data {x_(i,j)^s}. What I need is to group in the same grid position (i,j), all the sets s. In this question, they are grouping the data sets side by side, not element-wise, like this:

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)

I would like the bar command behavior, it tends to group开发者_如何学编程 when putting more than one data set. I would like to know if it is possible.


I am not sure I fully understood, but if you are looking for grouped behavior like you mention with bar(rand(3)) then you can try

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

or try to rearrange the data in data so it can work better with bar3 with reshape:

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');

Maybe if you can give a code example for how it's supposed to look in one group, it would help to understand your question better.


If you want to group bars in 3D bar plots, but you are happy o small groups (let's say 2 or 3 bars each group) then you can simply take advantage of the Y argument in bar3: BAR3(Y,Z,WIDTH) so you specify the location of the two groups of bars with two shifted Y vectors.

example: bar3(0:3:9,rand(4,4),0.3) hold on bar3(1:3:10,rand(4,4),0.3)

then you can edit the label the way it suits you.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜