Stacked histogram or Stacked bar
55 次查看(过去 30 天)
显示 更早的评论
I want to plot the following:
I am able to get the followIng:
using the code below:
load('Data.mat')
[N,edges] = histcounts(GTDF);
edges=[0 300 700 1200 2300]; %redefine the edges
[N,edges] = histcounts(GTDF,edges);
histogram(GTDF, edges, 'Normalization','probability', 'DisplayStyle','bar')
both diagrams are technically the same (percentage of counts and edges etc) but visually different. I want achieve the first diagram.
The reason i Want the first diagram is that i want to plot multiple of these Bars (as shown in first diagram) in the same window and diagram
The data is attached:
0 个评论
采纳的回答
Mohammad Sami
2020-10-8
You can try the following
edges=[0 300 700 1200 2300 Inf]; %redefine the edges
[N,edges] = histcounts(GTDF,edges);
N = N./sum(N);
N(2,:) = NaN;
bar(N,'stacked');
3 个评论
Mohammad Sami
2020-10-9
The number 2 is shown because of the line.
N(2,:) = NaN;
This is needed, otherwise Matlab does not plot in stacked mode if there is one row.
You can change it to actual data if you have actual data to plot. This will plot a second bar.
% N(2,:) = N2; % second bar
The following will plot two bars, add legend, turn on grid, change the xtick labels.
load Data.mat
edges=[0 300 700 1200 2300 Inf]; %redefine the edges
[N,edges] = histcounts(GTDF,edges);
N = N./sum(N);
N(2,:) = N;
b = bar(N,'stacked');
xticks([1 2]);
xticklabels({'Some Label' 'Something Else'});
b(1).DisplayName = '<300';
b(2).DisplayName = '300-700';
b(3).DisplayName = '700-1200';
b(4).DisplayName = '1200-2300';
b(5).DisplayName = '>2300';
legend show
grid on
Mohammad Sami
2020-10-9
You can add percentages using text function. You need to pass x,y coordinates and text values.
ytext = cumsum(N,2) - 0.04; %y position of text
xtext = ones(size(ytext));
xtext = xtext + [0:1]' %x position of text
textval = string(N*100);
text(xtext(:),ytext(:),textval(:));
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Distribution Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!