merge three barh (stacked)
2 views (last 30 days)
Show older comments
Rachele Franceschini
on 12 Apr 2022
Commented: Mathieu NOE
on 13 Apr 2022
I have one table with different regions and data. Each color outlines different data that it should be one bar.
For example the variable A has one bar (stacked) with values from column "B" to "K". Then always the variable A has the bar (stacked) from column "L" to "U" and at the end the third bar with value from "V" to "AE".
t = readtable('Cartel2.xlsx')
I tried this code, but it is not clear, too long
x = [1 2 3];
y = [0.18 0.54 0.50 0.74 0.30 2.18 0.64 3.75 0.56 0.62; 0.63 1.10 1.39 1.86 1.59 0.71 0.67 0.68 0.74 0.63; 4.12 0.00 0.08 0.00 0.05 1.45 0.00 0.00 0.00 0.30];
barh(x,y,'stacked')
I would like to get bar (stacked) sequential, it is possible?
0 Comments
Accepted Answer
Voss
on 12 Apr 2022
Is this what you have in mind?
(For each variable A through V, one bar with the sum of columns B - K (always 10 in this file), one bar with the sum of columns L - U (also always 10 in this file), one bar with the sum of columns V - AE.)
M = readcell('Cartel2.xlsx');
names = M(:,1);
N = numel(names);
M = cell2mat(M(:,2:end));
M_sum = [ ...
sum(M(:,1:10),2) ...
sum(M(:,11:20),2) ...
sum(M(:,21:30),2) ...
];
barh(1:N,M_sum,'stacked');
set(gca(),'YLim',[0 N+1],'YTick',1:N,'YTickLabel',names,'YDir','reverse');
2 Comments
Voss
on 12 Apr 2022
Edited: Voss
on 12 Apr 2022
M = readcell('Cartel2.xlsx');
names = M(:,1);
N = numel(names);
M = cell2mat(M(:,2:end));
hold on
for ii = 1:N
barh(ii+[-0.25 0 0.25],reshape(M(ii,:),[],3).','stacked');
end
set(gca(), ...
'YLim',[0 N+1], ...
'YTick',1:N, ...
'YTickLabel',names, ...
'YDir','reverse', ...
'XLim',[0 10.4], ...
'Box','on', ...
'TickDir','out');
More Answers (1)
Mathieu NOE
on 12 Apr 2022
hello Rachele
try this !
you get now one figure (plot) per variable , 20 in total)
all the best
t = readcell('Cartel2.xlsx');
var_names = t(:,1);
data = cell2mat(t(:,2:end)); % 3 groups of 10 rows
for ci = 1:numel(var_names)
y = data(ci,:);
yy = reshape(y,3,10);
figure(ci),
barh(x,yy,'stacked')
title(['variable :' var_names(ci) ]);
end
4 Comments
See Also
Categories
Find more on Discrete Data Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!