How to make histogram values be sum of the values of each bin?
6 Ansichten (letzte 30 Tage)
I have 2 vectors of area values that I want to put on a histogram. I want to make it a semilog (logarithmic Y axis), but want the histogram values to reffer the total area of incidents of each bin, instead of the number of incidents in it.
Histogram regular command of y=histogram(x, etc..) gives only the plot, and I couldn't see in the histogram info page the form of presentation I look for.
Is there any short way to do so? if not, which command and stratagies would you suggest to get the goal?
the code I used so far to plot the hists:
edges=[0 0:10000:500000 600000];
aCD3tothist=histogram(aCD3tot, edges, 'Normalization','probability', 'FaceColor', 'r');
aCD45tothist=histogram(aCD45tot, edges, 'Normalization','probability', 'FaceColor', 'b');
I tried to bin the original data, and managed to do so:
[aCD3tothstcnts,edges] = histcounts(aCD3tot,edges)
bar(aCD3tothstcnts, 'FaceColor', 'r')
[aCD45tothstcnts,edges] = histcounts(aCD45tot,edges)
bar(aCD45tothstcnts, 'FaceColor', 'b')
But again, the histcounts command gives the number of incidents that fall to each bin.
I can't seem to have a way to know the avarage area of each bin (and then jsut simply muliply it in the number of incidents) or the area of each incident in each bin to sum it up somehow.
I hope it was clear enough. thank you very much!
Pavan Sahith am 12 Okt. 2023
Bearbeitet: Pavan Sahith am 12 Okt. 2023
I understand that you want to calculate the sum of values (elements of your area vectors) that fall under each bin.
For that you can use combination of ‘discretize’ and ‘accumarray’.You can refer to the example code below.
% as per above data
% 1 fall under edge 1 (0 to 2)
% 2,3 fall under edge 2 (2 to 4)
% 4,5 fall under edge 3 (4 to 6)
Please refer to the MathWorks documentation links to know more about
‘accumarray' - https://in.mathworks.com/help/matlab/ref/accumarray.html
You can refer to the following code :
% Calculate bin widths
binWidths = diff(edges)
% Calculate bin areas
binAreas = binWidths .* counts
Hope it helps.