필터 지우기
필터 지우기

How to: Control Histogram bin width

조회 수: 12 (최근 30일)
Hello kity
Hello kity 2013년 2월 4일
Hi
Matlab chooses its own bin width when u use hist().
But I want, for example to make an histogram which makes bins of each 0.5 width. I noticed that hist uses the entire data range as range.
bin_width ( get from edit field)
data=[1:10];
range=max(data)-min(data);
bins= bin_width * range
[n xout]= hist (data, bins)
this still makes random hist where u dont have control over the bins.
what i want is,select the bin_width , 0.5 , plot first bin between 0 - 0.5 , second 0.5- 1 etc.

채택된 답변

per isakson
per isakson 2013년 2월 4일

추가 답변 (1개)

Hello kity
Hello kity 2013년 2월 4일
편집: Hello kity 2013년 2월 4일
I found an answer at google, adjusted some, hope it is useful.
With this code you can manually select the stepsize of the hist bins, for example, stepsize is 1. then it plots a bin from 0-1 ,1- 2 etc. IT also plots the amount of each bin on top of it.
xStep=str2double(get(handles.xstep1,'String')); % edit field where is used a input for xstep
hist(DATA)
xbounds = xlim;
nBins = (xbounds(2)-xbounds(1))/xStep;
edges = linspace(xbounds(1),xbounds(2), nBins+1);
%# compute center of bins (used as x-coord for labels)
bins = ( edges(1:end-1) + edges(2:end) ) / 2;
%# histc
[counts,binIdx] = histc(DATA, edges);
counts(end-1) = sum(counts(end-1:end)); %# combine last two bins
counts(end) = []; %#
% %# plot histogram
bar(edges(1:end-1), counts, 'histc')
for c=1:numel(counts)
if counts(c)~=0
text(bins(c), counts(c)+0.3, num2str(counts(c)), 'FontWeight','bold', 'FontSize',8, ...
'VerticalAlignment','bottom', 'HorizontalAlignment','center');
end
end
set(gca,'ylim',[0 max(counts)+1/10*(max(counts))]); %adjust ymax
end

카테고리

Help CenterFile Exchange에서 Histograms에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by