Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Matlab bar plot grouped but in different y scales

I have two sets of data, and I want to plot using bar graph. But the problem is these two sets of data are at quite different scale. If I just use the bar(A), it would look like this: grouped but the second data set is barely visible because the scale.

enter image description here

However, if I use the plotyy(x,y1,x,y2), the plot will be like this: two sets of data are in different scale, but the bar graphs are not grouped, the second data sets overlaps to the first.

enter image description here

So I am wondering if there is a way to plot the bar graph grouped like the first figure, but the two datasets are using separate y scales? Or is there a way to adjust the horizontal offset of the bar graph in second plot so it looks like "grouped".

Thanks!

like image 817
Jing Avatar asked Feb 16 '23 08:02

Jing


1 Answers

This uses the plotyy(x1,y1,x2,y2,fun1,fun2) variant of plotyy:

%// Set these three variables as desired
offset = (x(2)-x(1))/8;
width = (x(2)-x(1))/4;
colors = {'b','g'};

%// Do the plot
plotyy(x-offset,y1,x+offset,y2, @(x,y) bar(x,y,width,colors{1}), @(x,y) bar(x,y,width,colors{2}));

enter image description here

If you prefer x-ticks to appear only on used x values:

h = plotyy(x-offset,y1,x+offset,y2, @(x,y) bar(x,y,width,colors{1}), @(x,y) bar(x,y,width,colors{2}));
set(h,'xtick',x)
like image 163
Luis Mendo Avatar answered Feb 24 '23 11:02

Luis Mendo