Percentage values in scatterhist histogram
9 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello all,
I need a help with scatterhist and the information on each histogram.
For example lets have the next plot:
scatterhist(log(rand(1,100)),log(rand(1,100)),'Marker','o','Direction','out');
I would like to add (or get) values above the histogram bars; the percentage of the distribution.
Please, is anyone could help on it?
Thank you
4 Commenti
Rik
il 25 Set 2020
If you don't care about the x-y-relation, why don't you simply make a histogram out of each vector separately?
Adam Danz
il 28 Set 2020
Modificato: Adam Danz
il 28 Set 2020
"I do not care so much for the plot. Do you know how to calculate?"
I added my answer before seeing that you didn't care about the plot but the answer still shows how to get those percentages. Fortunately the historgrams are already normalized to add up to 1 so you just need to access their "Values" properties and then multiply by 100.
Risposta accettata
Adam Danz
il 25 Set 2020
Modificato: Adam Danz
il 25 Set 2020
The histograms are normalized which means their bar heights are already a percentage.
The percentage of each bar can be found in the demo below; look for
- xHist.Values.*100
- yHist.Values.*100
Here's now to access those axes and add text elements.
% Use output to get axis handles
h = scatterhist(log(rand(1,100)),log(rand(1,100)),'Marker','o','Direction','out');
% Get hist axis handles
xHist = findobj(h(2),'Type','histogram');
yHist = findobj(h(3),'Type','histogram');
% increase ylim/xlim to make room of text labels
h(2).YLim(2) = h(2).YLim(2).*1.2; % 20% increase;
h(3).YLim(2) = h(3).YLim(2).*1.2; % 20% increase;
% Compute bin centers and labels, add text
xBinCenter = xHist.BinEdges(2:end)-xHist.BinWidth/2;
xHistLabels = compose('%.0f%%',xHist.Values.*100);
text(h(2),xBinCenter, xHist.Values.*1.01, xHistLabels,...
'HorizontalAlignment', 'Right', 'VerticalAlignment', 'middle', ...
'FontSize', 8, 'Rotation', 90)
yBinCenter = yHist.BinEdges(2:end)-yHist.BinWidth/2;
yHistLabels = compose('%.0f%%',yHist.Values.*100);
text(h(3),yBinCenter, yHist.Values*1.01, yHistLabels,...
'HorizontalAlignment', 'Right', 'VerticalAlignment', 'Middle', ...
'FontSize', 8)
If you want to see the histogram axes,
axis(h(2), 'on')
axis(h(3), 'on')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/366391/image.png)
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Bar Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!