merge three barh (stacked)
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Rachele Franceschini
am 12 Apr. 2022
Kommentiert: Mathieu NOE
am 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 Kommentare
Akzeptierte Antwort
Voss
am 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 Kommentare
Voss
am 12 Apr. 2022
Bearbeitet: Voss
am 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');
Weitere Antworten (1)
Mathieu NOE
am 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 Kommentare
Siehe auch
Kategorien
Mehr zu Develop Apps Using App Designer finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!