Histogram with values above the bars
56 次查看(过去 30 天)
显示 更早的评论
Hello,
I got data with values form 90 to 100, and i can have decimal values like 90.4 95.3. My goal is to create an histogram with binedges (i tihnk is the proper name) with 90-91, 91-92, 92-93, etc.
A = randi([90 100],50,1);
B = rand(50,1);
C = A + B;
histogram(B(:,1),'BinWidth',1);
And I would to know how to place the on top of each bar, how many values from 90 to 91, 91 to 92, etc
Thanks for your time
0 个评论
采纳的回答
Steven Lord
2018-12-5
I would not depend upon the tick locations as Luna's solution does. Use the data stored in the histogram object itself instead.
Generate some sample data and create the histogram.
data = 10*rand(1,100);
x = histogram(data,'BinWidth',1);
Retrieve the locations of the edges and the heights of the bars.
E = x.BinEdges;
y = x.BinCounts;
Find the X coordinates of the center of the bars. This takes the left edge of each bar and adds half the distance to the next bar edge.
xloc = E(1:end-1)+diff(E)/2;
Put the labels 1 unit above the top of the bar center.
text(xloc, y+1, string(y))
4 个评论
cui,xingxing
2020-8-31
h = histogram('Categories',Categories,'BinCounts',N);
y = h.Values;
text(1:length(N), y+50, string(y));
更多回答(1 个)
Luna
2018-12-5
Hello Tiago,
Try this for getting labels on the top of the bars of your histogram.
data = 10*rand(1,100);
x = histogram(data,'BinWidth',1);
labels = num2str(x.BinCounts');
xt = get(gca, 'XTick');
xVals = xt - ([0 diff(xt)]/2);
xVals(1) = [];
text(xVals, x.BinCounts, labels, 'HorizontalAlignment','center', 'VerticalAlignment','bottom')
But first check your data to plot histogram there is something wrong about it:
A = randi([90 100,100,1]); % look randi function and its inputs
B = rand(50,1);
C = A + B; % check A and B have the same sizes to add
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Histograms 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!