1

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.

Community
  • 1
  • 1
adn
  • 897
  • 3
  • 22
  • 49
  • [This duplicate question](http://stackoverflow.com/questions/3601434/3d-bar-and-y-axis-labeling) addresses how to group 3-D bar plots. – gnovice Mar 17 '11 at 03:26
  • Although they are addressing the grouping, I need to group all the x_1, x_2, and x_3 together, in the same grid. – adn Mar 17 '11 at 04:49

2 Answers2

1

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.

shahar_m
  • 3,461
  • 5
  • 41
  • 61
  • Thanks, the problem is that I don't know how to generate that kind of graph... to show you.. I would like something like this: {+.-} {+.-} {+.-} group in one line and then {+.-} {+.-} {+.-} other set of data grouped in the next line, where '+' '.' and '-' are the data values, in that case I have 3 set of data, e.g., `rand(2,3,3)` – adn Mar 31 '11 at 12:16
0

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.