how to stack hist?
131 ビュー (過去 30 日間)
古いコメントを表示
Does anyone knows how to stack 2 histogram. I have certain area data for 20 years. I am calculating yearly number of events by hist command. And also I have another area data for 20 years. Doing the same, calculating yearly number of events by hist command for the area also. Note for 2 data time the same, 1980-2000 in years.
Now I wanted 2 hist data stack. Is there any way to do it?
Thanks!
4 件のコメント
José-Luis
2016 年 6 月 30 日
I still don't get it. Could you show a figure as an example? And some data?
Stephen Licata
2020 年 12 月 23 日
編集済み: Stephen Licata
2020 年 12 月 23 日
That is a very good and fun example - many thanks!
BTW, if you want a special color, like 'gray' (which does not have a Matlab shortcut symbol code), do this bar command
bar(binrng,counts2,'FaceColor', [0.75 0.75 0.75])
which is equivalent to this version using the RGB integer values:
bar(binrng,counts2,'FaceColor', [192 192 192]/255)
採用された回答
Star Strider
2016 年 6 月 30 日
The hist function does not offer a 'stacked' option, but you can create the effect easily enough with the histc function and a bar plot.
Experiment with this to get the result you want with your data:
d1 = randi(9, 50, 1); % Create Data
d2 = randi(9, 50, 1); % Create Data
binrng = 1:9; % Create Bin Ranges
counts1 = histc(d1, binrng); % Histogram For ‘d1’
counts2 = histc(d2, binrng); % Histogram For ‘d2’
counts3 = counts1 + counts2; % Histogram Sum ‘d1’+‘d2’
figure(1)
bar(binrng, counts3, 'b')
hold on
bar(binrng, counts1, 'y')
hold off
legend('Data 1', 'Data 2')
The idea is straightforward: create histogram counts for both sets of data, add them, then use the bar plot to first plot the sum, then overplot with one of the others. That will create your stacked histogram plot.
11 件のコメント
Star Strider
2021 年 7 月 15 日
That’s a bit ambiguous.
Perhaps:
v1 = randi(9,1,50);
v2 = randi(9,1,50);
v3 = randi(9,1,50);
v4 = randi(9,1,50);
v5 = randi(9,1,50);
v6 = randi(9,1,50);
vm = [v1; v2; v3; v4; v5; v6];
binrng = 1:9;
for k = 1:size(vm,1)
counts(k,:) = histc(vm(k,:), binrng);
end
figure
bar(binrng,counts,'stacked')
grid
Experiment, if necessary, to get different results.
.
Joris Bockhofer
2023 年 7 月 5 日
Make sure to use histc!
MatLab recommended using histcounts instead but this will not work because histcounts yields one less value than #bins for whatever reason.
その他の回答 (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!